re PR tree-optimization/87889 (CPU2000 177.mesa failed to build)
authorRichard Biener <rguenther@suse.de>
Tue, 6 Nov 2018 10:23:30 +0000 (10:23 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 6 Nov 2018 10:23:30 +0000 (10:23 +0000)
2018-11-06  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87889
* tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
Do nothing if old and new arg are the same

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

From-SVN: r265833

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

index f5be58abfef8cc31b197548e21d78f7e3779dc85..95d22456e94aa234a0e714789acc3c3f79a0cb07 100644 (file)
@@ -1,3 +1,9 @@
+2018-11-06  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/87889
+       * tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
+       Do nothing if old and new arg are the same
+
 2018-11-06  Andreas Krebbel  <krebbel@linux.ibm.com>
 
        PR target/87723
index 17f696860fa2c0bd5ee79a29c9f317968a7880a0..225850d2613fb3a6c743607b2ba79500324102c6 100644 (file)
@@ -1,3 +1,8 @@
+2018-11-06  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/87889
+       * gcc.dg/pr87894.c: New testcase.
+
 2018-11-06  Andreas Krebbel  <krebbel@linux.ibm.com>
 
        PR target/87723
diff --git a/gcc/testsuite/gcc.dg/pr87894.c b/gcc/testsuite/gcc.dg/pr87894.c
new file mode 100644 (file)
index 0000000..921a9ce
--- /dev/null
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast" } */
+
+int a, b, c, d;
+double e;
+
+void f(double g[][1])
+{
+  for (;;)
+    {
+      double h;
+      for (; b < c; b++)
+       {
+         if (b >= 0)
+           ;
+         else if (d)
+           h = 2.0;
+         else
+           h = 0.0;
+         if (e)
+           g[a][b] = 0.0;
+         g[a][b] = h;
+       }
+    }
+}
+
index f1b023b4e4e053816f75aa42c686e36f308089f9..d4e71b7195bdb7ad3322d33d7c64fad7c7905b15 100644 (file)
@@ -977,7 +977,8 @@ slpeel_duplicate_current_defs_from_edges (edge from, edge to)
        }
       if (TREE_CODE (from_arg) != SSA_NAME)
        gcc_assert (operand_equal_p (from_arg, to_arg, 0));
-      else if (TREE_CODE (to_arg) == SSA_NAME)
+      else if (TREE_CODE (to_arg) == SSA_NAME
+              && from_arg != to_arg)
        {
          if (get_current_def (to_arg) == NULL_TREE)
            {