From: Jakub Jelinek Date: Sat, 20 Nov 2010 12:14:48 +0000 (+0100) Subject: re PR debug/46561 (-fcompare-debug failure (length) with -O2 -ftree-vectorize -ftree... X-Git-Tag: releases/gcc-4.6.0~2452 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4942af9b83b8040720ec09a48a0a8f4d0b08bde3;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b5dbd5b19d94..758f7ae9d850 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2010-11-20 Jakub Jelinek + 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 9a002528bb19..6d32aa633152 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2010-11-20 Jakub Jelinek + 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 000000000000..a9499f340848 --- /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 a634b249a613..a0d16883398b 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;