re PR tree-optimization/17517 (ICE: SSA corruption)
authorAndrew MacLeod <amacleod@redhat.com>
Thu, 16 Sep 2004 18:45:33 +0000 (18:45 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Thu, 16 Sep 2004 18:45:33 +0000 (18:45 +0000)
2004-09-16  Andrew MacLeod  <amacleod@redhat.com>

PR tree-optimization/17517
* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
coalesce same-root variables without checking for abnormal PHI usage.

From-SVN: r87609

gcc/ChangeLog
gcc/tree-ssa-copyrename.c

index 265495f32c5c6c1579cc82c4f9a2d6866607c1c8..72b17b2b50ed5face4bdd2120de15b498e5b377a 100644 (file)
@@ -1,3 +1,9 @@
+2004-09-16  Andrew MacLeod  <amacleod@redhat.com>
+
+       PR tree-optimization/17517
+       * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't 
+       coalesce same-root variables without checking for abnormal PHI usage.
+
 2004-09-16  Daniel Berlin  <dberlin@dberlin.org>
        
        * cfgloop.h (duplicate_loop):  Add prototype.
index 494e3a57dd59ae01788ca68f2ea749a6555899f9..49225d09b2019a11e32c0f5145136f1a89edf792 100644 (file)
@@ -169,6 +169,16 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
       return;
     }
 
+  /* Don't coalesce if one of the variables occurs in an abnormal PHI.  */
+  abnorm = (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rep1)
+           || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rep2));
+  if (abnorm)
+    {
+      if (debug)
+       fprintf (debug, " : Abnormal PHI barrier.  No coalesce.\n");
+      return;
+    }
+
   /* Partitions already have the same root, simply merge them.  */
   if (root1 == root2)
     {
@@ -251,16 +261,6 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
       return;
     }
 
-  /* Don't coalesce if one of the variables occurs in an abnormal PHI.  */
-  abnorm = (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rep1)
-           || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rep2));
-  if (abnorm)
-    {
-      if (debug)
-       fprintf (debug, " : Abnormal PHI barrier.  No coalesce.\n");
-      return;
-    }
-
   /* Merge the two partitions.  */
   p3 = partition_union (map->var_partition, p1, p2);