2014-08-11 Richard Biener <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Aug 2014 10:55:10 +0000 (10:55 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Aug 2014 10:55:10 +0000 (10:55 +0000)
PR tree-optimization/62070
* tree-ssa-loop-manip.c (gimple_duplicate_loop_to_header_edge):
Remove SSA checking.

* gcc.dg/pr62070.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213810 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr62070.c [new file with mode: 0644]
gcc/tree-ssa-loop-manip.c

index be17bd8..ec017f9 100644 (file)
@@ -1,3 +1,9 @@
+2014-08-11  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/62070
+       * tree-ssa-loop-manip.c (gimple_duplicate_loop_to_header_edge):
+       Remove SSA checking.
+
 2014-08-11  Yury Gribov  <y.gribov@samsung.com>
 
        * asan.c (asan_check_flags): New enum.
index fb45cba..1065642 100644 (file)
@@ -1,3 +1,8 @@
+2014-08-11  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/62070
+       * gcc.dg/pr62070.c: New testcase.
+
 2014-08-11  Yury Gribov  <y.gribov@samsung.com>
 
        * c-c++-common/asan/inc.c: Update test.
diff --git a/gcc/testsuite/gcc.dg/pr62070.c b/gcc/testsuite/gcc.dg/pr62070.c
new file mode 100644 (file)
index 0000000..f7b0822
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fno-tree-vectorize" } */
+
+int in[8][4];
+int out[4];
+
+void
+foo (void)
+{
+  int sum = 1;
+  int i, j, k;
+  for (k = 0; k < 4; k++)
+    {
+      for (j = 0; j < 4; j++)
+       for (i = 0; i < 4; i++)
+         sum *= in[i + k][j];
+      out[k] = sum;
+    }
+}
index 6de2e4e..ac96936 100644 (file)
@@ -761,17 +761,6 @@ gimple_duplicate_loop_to_header_edge (struct loop *loop, edge e,
   if (!loops_state_satisfies_p (LOOPS_HAVE_PREHEADERS))
     return false;
 
-#ifdef ENABLE_CHECKING
-  /* ???  This forces needless update_ssa calls after processing each
-     loop instead of just once after processing all loops.  We should
-     instead verify that loop-closed SSA form is up-to-date for LOOP
-     only (and possibly SSA form).  For now just skip verifying if
-     there are to-be renamed variables.  */
-  if (!need_ssa_update_p (cfun)
-      && loops_state_satisfies_p (LOOP_CLOSED_SSA))
-    verify_loop_closed_ssa (true);
-#endif
-
   first_new_block = last_basic_block_for_fn (cfun);
   if (!duplicate_loop_to_header_edge (loop, e, ndupl, wont_exit,
                                      orig, to_remove, flags))