Unshare create_empty_if_region_on_edge argument
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Mar 2016 09:19:14 +0000 (09:19 +0000)
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Mar 2016 09:19:14 +0000 (09:19 +0000)
2016-03-14  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/70045
* graphite-isl-ast-to-gimple.c (graphite_create_new_loop_guard): Unshare
create_empty_if_region_on_edge argument.

* gcc.dg/graphite/pr70045.c: New test.

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

gcc/ChangeLog
gcc/graphite-isl-ast-to-gimple.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/graphite/pr70045.c [new file with mode: 0644]

index 70acdc4..3107036 100644 (file)
@@ -1,3 +1,9 @@
+2016-03-14  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/70045
+       * graphite-isl-ast-to-gimple.c (graphite_create_new_loop_guard): Unshare
+       create_empty_if_region_on_edge argument.
+
 2016-03-13  Eric Botcazou  <ebotcazou@adacore.com>
 
        * config/arm/vxworks.h (STACK_CHECK_STATIC_BUILTIN): Define.
index 89a4118..8dd5dc8 100644 (file)
@@ -821,7 +821,8 @@ graphite_create_new_loop_guard (edge entry_edge,
   if (integer_onep (cond_expr))
     exit_edge = entry_edge;
   else
-    exit_edge = create_empty_if_region_on_edge (entry_edge, cond_expr);
+    exit_edge = create_empty_if_region_on_edge (entry_edge,
+                                               unshare_expr (cond_expr));
 
   return exit_edge;
 }
index 78e3ec9..6cec055 100644 (file)
@@ -1,3 +1,8 @@
+2016-03-14  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/70045
+       * gcc.dg/graphite/pr70045.c: New test.
+
 2016-03-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/69043
diff --git a/gcc/testsuite/gcc.dg/graphite/pr70045.c b/gcc/testsuite/gcc.dg/graphite/pr70045.c
new file mode 100644 (file)
index 0000000..9f98b1f
--- /dev/null
@@ -0,0 +1,28 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -floop-interchange" } */
+
+int a, b, d, e, f;
+int c[9];
+void
+fn1 ()
+{
+  e = 1;
+  for (; e >= 0; e--)
+    {
+      d = 1;
+      for (; d >= 0; d--)
+       {
+         f = 0;
+         for (; f <= 1; f++)
+           {
+             a = 0;
+             for (; a < 9; a++)
+               {
+                 b = 0;
+                 for (; b < 2; b++)
+                   c[a + b] = 3;
+               }
+           }
+       }
+    }
+}