diff options
author | Richard Guenther <rguenther@suse.de> | 2012-10-19 13:05:40 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-10-19 13:05:40 +0000 |
commit | e665269adab31f1d30a1e0295bd6f4204940b9b3 (patch) | |
tree | ca25d6649d4946c34570928d328373a6eaf27ce1 /gcc | |
parent | dfc2e2acc9720bec4631e07278f3be7cc915a69a (diff) | |
download | gcc-e665269adab31f1d30a1e0295bd6f4204940b9b3.zip gcc-e665269adab31f1d30a1e0295bd6f4204940b9b3.tar.gz gcc-e665269adab31f1d30a1e0295bd6f4204940b9b3.tar.bz2 |
re PR tree-optimization/54981 (Different code generated with / without `-g')
2012-10-19 Richard Guenther <rguenther@suse.de>
PR tree-optimization/54981
* tree-loop-distribution.c (ssa_name_has_uses_outside_loop_p):
Do not consider debug stmts as uses.
* gcc.dg/pr54981.c: New testcase.
From-SVN: r192612
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr54981.c | 15 | ||||
-rw-r--r-- | gcc/tree-loop-distribution.c | 8 |
4 files changed, 32 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3741614..7a82d9f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-19 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/54981 + * tree-loop-distribution.c (ssa_name_has_uses_outside_loop_p): + Do not consider debug stmts as uses. + 2012-10-19 Richard Biener <rguenther@suse.de> PR tree-optimization/54976 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4af8265..a7e4d3e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-10-19 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/54981 + * gcc.dg/pr54981.c: New testcase. + 2012-10-19 Zhenqiang Chen <zhenqiang.chen@linaro.org> PR target/54892 diff --git a/gcc/testsuite/gcc.dg/pr54981.c b/gcc/testsuite/gcc.dg/pr54981.c new file mode 100644 index 0000000..aa77d60 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr54981.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O -ftree-loop-distribute-patterns -fcompare-debug" } */ + +extern void bar(unsigned *, char *); + +void foo(char *s) +{ + unsigned i; + char t[2]; + + bar(&i, t); + + for (i = 0; i < 2; i++) + s[i] = t[i]; +} diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index d29fe1c..1ffc434 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -125,8 +125,12 @@ ssa_name_has_uses_outside_loop_p (tree def, loop_p loop) use_operand_p use_p; FOR_EACH_IMM_USE_FAST (use_p, imm_iter, def) - if (loop != loop_containing_stmt (USE_STMT (use_p))) - return true; + { + gimple use_stmt = USE_STMT (use_p); + if (!is_gimple_debug (use_stmt) + && loop != loop_containing_stmt (use_stmt)) + return true; + } return false; } |