aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2010-03-16 11:33:45 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2010-03-16 11:33:45 +0000
commit7a1817642b2da6c3163533bf367bf6ba1a878f52 (patch)
treeb62a2f40c7d39797a2ba9915118b892b93c7ed00 /gcc
parent457eeaae81fd615a739dac6844835dee7c9b641c (diff)
downloadgcc-7a1817642b2da6c3163533bf367bf6ba1a878f52.zip
gcc-7a1817642b2da6c3163533bf367bf6ba1a878f52.tar.gz
gcc-7a1817642b2da6c3163533bf367bf6ba1a878f52.tar.bz2
re PR tree-optimization/42917 ("-fcompare-debug failure" with -ftree-loop-linear)
PR tree-optimization/42917 * lambda-code.c (remove_iv): Skip debug statements. (lambda_loopnest_to_gcc_loopnest): Likewise. (not_interesting_stmt): Debug statements are not interesting. Co-Authored-By: Alexandre Oliva <aoliva@redhat.com> From-SVN: r157477
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/lambda-code.c8
-rw-r--r--gcc/testsuite/gcc.dg/pr42917.c16
3 files changed, 30 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f35a7a7..fda7e80 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2010-03-16 Aldy Hernandez <aldyh@redhat.com>
+ Alexandre Oliva <aoliva@redhat.com>
+
+ PR tree-optimization/42917
+ * lambda-code.c (remove_iv): Skip debug statements.
+ (lambda_loopnest_to_gcc_loopnest): Likewise.
+ (not_interesting_stmt): Debug statements are not interesting.
+
2010-03-16 Jakub Jelinek <jakub@redhat.com>
PR debug/43051
diff --git a/gcc/lambda-code.c b/gcc/lambda-code.c
index e5fe629..50f7d47 100644
--- a/gcc/lambda-code.c
+++ b/gcc/lambda-code.c
@@ -1657,7 +1657,7 @@ remove_iv (gimple iv_stmt)
continue;
FOR_EACH_IMM_USE_STMT (stmt, imm_iter, arg)
- if (stmt != iv_stmt)
+ if (stmt != iv_stmt && !is_gimple_debug (stmt))
used = true;
if (!used)
@@ -1839,6 +1839,9 @@ lambda_loopnest_to_gcc_loopnest (struct loop *old_loopnest,
gimple_seq stmts;
lambda_body_vector lbv, newlbv;
+ if (is_gimple_debug (stmt))
+ continue;
+
/* Compute the new expression for the induction
variable. */
depth = VEC_length (tree, new_ivs);
@@ -1885,7 +1888,8 @@ not_interesting_stmt (gimple stmt)
loop, we would have already failed the number of exits tests. */
if (gimple_code (stmt) == GIMPLE_LABEL
|| gimple_code (stmt) == GIMPLE_GOTO
- || gimple_code (stmt) == GIMPLE_COND)
+ || gimple_code (stmt) == GIMPLE_COND
+ || is_gimple_debug (stmt))
return true;
return false;
}
diff --git a/gcc/testsuite/gcc.dg/pr42917.c b/gcc/testsuite/gcc.dg/pr42917.c
new file mode 100644
index 0000000..d8db32e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr42917.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -ftree-loop-linear -fcompare-debug -fdump-tree-ltrans" } */
+
+extern int A[];
+
+void
+foo ()
+{
+ int i, j;
+ for (i = 0; i < 4; i++)
+ for (j = 255; j >= 0; j--)
+ A[j] = 0;
+}
+
+/* { dg-final { scan-tree-dump "Successfully transformed loop" "ltrans" } } */
+/* { dg-final { cleanup-tree-dump "ltrans" } } */