re PR tree-optimization/71168 (ICE in find_uses_to_rename_use (tree-ssa-loop-manip...
authorRichard Biener <rguenther@suse.de>
Wed, 18 May 2016 08:10:20 +0000 (08:10 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 18 May 2016 08:10:20 +0000 (08:10 +0000)
2016-05-18  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71168
* tree-loop-distribution.c (distribute_loop): Move *destroy_p
initialization earlier.

* gcc.dg/torture/pr71168.c: New testcase.

From-SVN: r236361

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr71168.c [new file with mode: 0644]
gcc/tree-loop-distribution.c

index e71ce6d75b54b5e65bf97a0ea5b18925a9383c72..ba2ab0872426a3aa2e434b3853fb1d3c9ae22f29 100644 (file)
@@ -1,3 +1,9 @@
+2016-05-18  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/71168
+       * tree-loop-distribution.c (distribute_loop): Move *destroy_p
+       initialization earlier.
+
 2016-05-18  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * config/aarch64/aarch64-simd.md
index 87fd63a1d77a8f62e6221df723aa5b123331e3f4..88c616418c5176f4950b744dde135115636ea0ec 100644 (file)
@@ -1,3 +1,8 @@
+2016-05-18  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/71168
+       * gcc.dg/torture/pr71168.c: New testcase.
+
 2016-05-17  Kugan Vivekanandarajah  <kuganv@linaro.org>
 
        PR middle-end/63586
diff --git a/gcc/testsuite/gcc.dg/torture/pr71168.c b/gcc/testsuite/gcc.dg/torture/pr71168.c
new file mode 100644 (file)
index 0000000..fdf4fff
--- /dev/null
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+
+int a, b, c;
+long *d;
+void fn1()
+{
+  for (; 0 < a;)
+    a++;
+}
+void fn3()
+{
+  for (; c; c++)
+    d[c] = 0;
+}
+void fn2()
+{
+  if (b)
+    fn3();
+  fn1();
+}
index a801348453a46bab3f438494422fbedd087d5c01..dbc8e3cdbdc8a3f69813384798b8c583f030ebd8 100644 (file)
@@ -1413,6 +1413,7 @@ distribute_loop (struct loop *loop, vec<gimple *> stmts,
   graph *pg = NULL;
   int num_sccs = 1;
 
+  *destroy_p = false;
   *nb_calls = 0;
   auto_vec<loop_p, 3> loop_nest;
   if (!find_loop_nest (loop, &loop_nest))
@@ -1647,7 +1648,6 @@ distribute_loop (struct loop *loop, vec<gimple *> stmts,
   if (dump_file && (dump_flags & TDF_DETAILS))
     dump_rdg_partitions (dump_file, partitions);
 
-  *destroy_p = false;
   FOR_EACH_VEC_ELT (partitions, i, partition)
     {
       if (partition_builtin_p (partition))