diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2014-08-06 15:40:26 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2014-08-06 15:40:26 +0000 |
commit | f50d71ec0f18c0ddf82c3127cab50e816e64c838 (patch) | |
tree | 91829d1585b1f5c879ae27113c00a1e222ecca95 /gcc | |
parent | 9d6171dce1c59155448881139181fbe158fd3a60 (diff) | |
download | gcc-f50d71ec0f18c0ddf82c3127cab50e816e64c838.zip gcc-f50d71ec0f18c0ddf82c3127cab50e816e64c838.tar.gz gcc-f50d71ec0f18c0ddf82c3127cab50e816e64c838.tar.bz2 |
re PR debug/61923 (-fcompare-debug errors while building Linux kernel.)
2014-08-06 Vladimir Makarov <vmakarov@redhat.com>
PR debug/61923
* haifa-sched.c (advance_one_cycle): Fix dump.
(schedule_block): Don't advance cycle if we are already at the
beginning of the cycle.
2014-08-06 Vladimir Makarov <vmakarov@redhat.com>
PR debug/61923
* gcc.target/i386/pr61923.c: New test.
From-SVN: r213675
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr61923.c | 36 |
4 files changed, 53 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 741f0ac..d54b5b8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-08-06 Vladimir Makarov <vmakarov@redhat.com> + + PR debug/61923 + * haifa-sched.c (advance_one_cycle): Fix dump. + (schedule_block): Don't advance cycle if we are already at the + beginning of the cycle. + 2014-08-06 Martin Jambor <mjambor@suse.cz> PR ipa/61393 diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index f93fe4c..fb15e0d 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -2970,7 +2970,7 @@ advance_one_cycle (void) { advance_state (curr_state); if (sched_verbose >= 4) - fprintf (sched_dump, ";;\tAdvanced a state.\n"); + fprintf (sched_dump, ";;\tAdvance the current state.\n"); } /* Update register pressure after scheduling INSN. */ @@ -6052,6 +6052,7 @@ schedule_block (basic_block *target_bb, state_t init_state) modulo_insns_scheduled = 0; ls.modulo_epilogue = false; + ls.first_cycle_insn_p = true; /* Loop until all the insns in BB are scheduled. */ while ((*current_sched_info->schedule_more_p) ()) @@ -6122,7 +6123,6 @@ schedule_block (basic_block *target_bb, state_t init_state) if (must_backtrack) goto do_backtrack; - ls.first_cycle_insn_p = true; ls.shadows_only_p = false; cycle_issued_insns = 0; ls.can_issue_more = issue_rate; @@ -6409,11 +6409,13 @@ schedule_block (basic_block *target_bb, state_t init_state) break; } } + ls.first_cycle_insn_p = true; } if (ls.modulo_epilogue) success = true; end_schedule: - advance_one_cycle (); + if (!ls.first_cycle_insn_p) + advance_one_cycle (); perform_replacements_new_cycle (); if (modulo_ii > 0) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 096c489..5d088e6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-08-06 Vladimir Makarov <vmakarov@redhat.com> + + PR debug/61923 + * gcc.target/i386/pr61923.c: New test. + 2014-08-06 Alan Lawrence <alan.lawrence@arm.com> * gcc.target/aarch64/vdup_n_2.c: New test. diff --git a/gcc/testsuite/gcc.target/i386/pr61923.c b/gcc/testsuite/gcc.target/i386/pr61923.c new file mode 100644 index 0000000..458158c --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr61923.c @@ -0,0 +1,36 @@ +/* PR debug/61923 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fcompare-debug" } */ + +typedef struct +{ + struct + { + struct + { + char head; + } tickets; + }; +} arch_spinlock_t; +struct ext4_map_blocks +{ + int m_lblk; + int m_len; + int m_flags; +}; +int ext4_da_map_blocks_ei_0; +void fn1 (int p1, struct ext4_map_blocks *p2) +{ + int ret; + if (p2->m_flags) + { + ext4_da_map_blocks_ei_0++; + arch_spinlock_t *lock; + switch (sizeof *&lock->tickets.head) + case 1: + asm("" : "+m"(*&lock->tickets.head) : ""(0)); + __asm__(""); + ret = 0; + } + fn2 (p2->m_lblk, p2->m_len); +} |