aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr64406.c26
-rw-r--r--gcc/tree-loop-distribution.c3
4 files changed, 40 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d99589b..ba272a1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2015-01-13 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/64406
+ * tree-loop-distibution.c (pass_loop_distribution::execute):
+ Reset the SCEV hashtable if we distributed anything.
+
+2015-01-13 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/64404
* tree-vect-stmts.c (vectorizable_load): Reject conflicting
SLP types for CSEd loads.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 854d5f4..819a122 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2015-01-13 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/64406
+ * gcc.dg/pr64406.c: New testcase.
+
+2015-01-13 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/64404
* gcc.dg/vect/pr64404.c: New testcase.
diff --git a/gcc/testsuite/gcc.dg/pr64406.c b/gcc/testsuite/gcc.dg/pr64406.c
new file mode 100644
index 0000000..8af8e55
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr64406.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-loop-distribute-patterns -fno-tree-loop-ivcanon -fno-tree-loop-vectorize -ftree-vectorize" } */
+
+unsigned in[72];
+
+void bar (unsigned out[], unsigned ia[]);
+
+void
+foo ()
+{
+ int i;
+ unsigned out[72], ia[8];
+ for (i = 0; i < 8; i++)
+ {
+ out[i * 8] = in[i * 8] + 5;
+ out[i * 8 + 1] = in[i * 8 + 1] + 6;
+ out[i * 8 + 2] = in[i * 8 + 2] + 7;
+ out[i * 8 + 3] = in[i * 8 + 3] + 8;
+ out[i * 8 + 4] = in[i * 8 + 4] + 9;
+ out[i * 8 + 5] = in[i * 8 + 5] + 10;
+ out[i * 8 + 6] = in[i * 8 + 6] + 11;
+ out[i * 8 + 7] = in[i * 8 + 7] + 12;
+ ia[i] = in[i];
+ }
+ bar (out, ia);
+}
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index ecd51fb..904f4e8 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -1838,6 +1838,9 @@ out:
if (changed)
{
+ /* Cached scalar evolutions now may refer to wrong or non-existing
+ loops. */
+ scev_reset_htab ();
mark_virtual_operands_for_renaming (fun);
rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
}