aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-11-20 13:14:48 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2010-11-20 13:14:48 +0100
commit4942af9b83b8040720ec09a48a0a8f4d0b08bde3 (patch)
treebf287f7fbf6355bd98394ab820cb1ddd3af76497
parent8304847453e7d901839ae9f266394d57a86b6da4 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gcc.dg/autopar/pr46561.c17
-rw-r--r--gcc/tree-parloops.c3
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;