diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2014-09-18 19:14:19 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2014-09-18 19:14:19 +0000 |
commit | 2fb5f0da9dff6e7f4e394da90c0edcc333402217 (patch) | |
tree | 131eb9ecb7c23931a1734a7f72c2334e00377bcc | |
parent | f4d5fe4732a287ef7b0981f8d895a9c263312b66 (diff) | |
download | gcc-2fb5f0da9dff6e7f4e394da90c0edcc333402217.zip gcc-2fb5f0da9dff6e7f4e394da90c0edcc333402217.tar.gz gcc-2fb5f0da9dff6e7f4e394da90c0edcc333402217.tar.bz2 |
re PR debug/63285 (-fcompare-debug scheduler related failure)
2014-09-18 Vladimir Makarov <vmakarov@redhat.com>
PR debug/63285
* haifa-sched.c (schedule_block): Advance cycle at the end of BB
if advance != 0.
2014-09-18 Vladimir Makarov <vmakarov@redhat.com>
PR debug/63285
* gcc.target/i386/pr63285.c: New test.
From-SVN: r215364
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr63285.c | 28 |
4 files changed, 40 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3c55ce4..de52a05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2014-09-18 Vladimir Makarov <vmakarov@redhat.com> + PR debug/63285 + * haifa-sched.c (schedule_block): Advance cycle at the end of BB + if advance != 0. + +2014-09-18 Vladimir Makarov <vmakarov@redhat.com> + PR target/61360 * lra.c (lra): Call recog_init. diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index fb92bb2..cb41cc2 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -6473,7 +6473,7 @@ schedule_block (basic_block *target_bb, state_t init_state) if (ls.modulo_epilogue) success = true; end_schedule: - if (!ls.first_cycle_insn_p) + if (!ls.first_cycle_insn_p || advance) advance_one_cycle (); perform_replacements_new_cycle (); if (modulo_ii > 0) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index de00b32..ba86e0ea 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2014-09-18 Vladimir Makarov <vmakarov@redhat.com> + PR debug/63285 + * gcc.target/i386/pr63285.c: New test. + +2014-09-18 Vladimir Makarov <vmakarov@redhat.com> + PR target/61360 * gcc.target/i386/pr61360.c: New. diff --git a/gcc/testsuite/gcc.target/i386/pr63285.c b/gcc/testsuite/gcc.target/i386/pr63285.c new file mode 100644 index 0000000..e4df8fb --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr63285.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fcompare-debug" } */ + +struct S { int a; }; +struct T { int b, c; } a; +long b; +int c, d; +void bar (int, int); +void baz (void *, int); + +void +foo (struct S *x, int y, int z, void *f, int *p, struct T *e) +{ + while (x) + { + baz (f, &d > p); + if (z & 1) + bar (f > (void *) &f, z); + } + if (c) + { + asm ("" : "+m" (a) : "i" (0)); + y--; + } + if (e->b == e->c) + c = y; + y--; +} |