aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-10-19 13:05:40 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-10-19 13:05:40 +0000
commite665269adab31f1d30a1e0295bd6f4204940b9b3 (patch)
treeca25d6649d4946c34570928d328373a6eaf27ce1 /gcc
parentdfc2e2acc9720bec4631e07278f3be7cc915a69a (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr54981.c15
-rw-r--r--gcc/tree-loop-distribution.c8
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;
}