diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-11-20 13:14:48 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-11-20 13:14:48 +0100 |
commit | 4942af9b83b8040720ec09a48a0a8f4d0b08bde3 (patch) | |
tree | bf287f7fbf6355bd98394ab820cb1ddd3af76497 | |
parent | 8304847453e7d901839ae9f266394d57a86b6da4 (diff) | |
download | gcc-4942af9b83b8040720ec09a48a0a8f4d0b08bde3.zip gcc-4942af9b83b8040720ec09a48a0a8f4d0b08bde3.tar.gz gcc-4942af9b83b8040720ec09a48a0a8f4d0b08bde3.tar.bz2 |
re PR debug/46561 (-fcompare-debug failure (length) with -O2 -ftree-vectorize -ftree-parallelize-loops)
PR debug/46561
* tree-parloops.c (try_create_redunction_list): Ignore debug stmts
when looking for immediate uses.
* gcc.dg/autopar/pr46561.c: New test.
From-SVN: r166975
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/autopar/pr46561.c | 17 | ||||
-rw-r--r-- | gcc/tree-parloops.c | 3 |
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b5dbd5b..758f7ae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2010-11-20 Jakub Jelinek <jakub@redhat.com> + PR debug/46561 + * tree-parloops.c (try_create_redunction_list): Ignore debug stmts + when looking for immediate uses. + PR tree-optimization/45830 * stmt.c (expand_switch_using_bit_tests_p): New function. (expand_case): Use it. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9a00252..6d32aa6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2010-11-20 Jakub Jelinek <jakub@redhat.com> + PR debug/46561 + * gcc.dg/autopar/pr46561.c: New test. + PR c++/46538 * g++.dg/other/error34.C: New test. diff --git a/gcc/testsuite/gcc.dg/autopar/pr46561.c b/gcc/testsuite/gcc.dg/autopar/pr46561.c new file mode 100644 index 0000000..a9499f3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/autopar/pr46561.c @@ -0,0 +1,17 @@ +/* PR debug/46561 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-vectorize -ftree-parallelize-loops=2 -fcompare-debug" } */ + +extern void abort (void); + +void foo (char *c) +{ + int i; + unsigned x = 0; + { + for (i = 0; i < 64; i += 4) + x = x | *((unsigned *) (&c[i])); + if (x) + abort (); + } +} diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index a634b24..a0d1688 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -1870,7 +1870,8 @@ try_create_reduction_list (loop_p loop, htab_t reduction_list) reduc_phi = NULL; FOR_EACH_IMM_USE_FAST (use_p, imm_iter, val) { - if (flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) + if (!gimple_debug_bind_p (USE_STMT (use_p)) + && flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) { reduc_phi = USE_STMT (use_p); break; |