re PR tree-optimization/16954 (ICE in get_tmt_for with IMA and incomplete structs)
authorAndrew Pinski <pinskia@physics.uc.edu>
Fri, 24 Sep 2004 17:38:36 +0000 (17:38 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Fri, 24 Sep 2004 17:38:36 +0000 (10:38 -0700)
2004-09-24  Andrew Pinski  <pinskia@physics.uc.edu>

        PR tree-opt/16954
        * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
        Prevent renaming if the aliasing sets of the type which the
        pointer points to are different.

From-SVN: r88064

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

index e522714f97b341664311bc24b33dabb99013609e..6e237dc163dbbdc84764cfae946c0b7f74451702 100644 (file)
@@ -1,3 +1,10 @@
+2004-09-24  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR tree-opt/16954
+       * tree-ssa-copyrename.c (copy_rename_partition_coalesce):
+       Prevent renaming if the aliasing sets of the type which the
+       pointer points to are different.
+
 2004-09-24  Joseph S. Myers  <jsm@polyomino.org.uk>
 
        PR c/17188
index 49225d09b2019a11e32c0f5145136f1a89edf792..4ef5b3dbd1c66657642ab3e6f268c7709d1f4598 100644 (file)
@@ -261,6 +261,18 @@ copy_rename_partition_coalesce (var_map map, tree var1, tree var2, FILE *debug)
       return;
     }
 
+  /* Don't coalesce if the aliasing sets of the types are different.  */
+  if (POINTER_TYPE_P (TREE_TYPE (root1))
+      && POINTER_TYPE_P (TREE_TYPE (root2))
+      && get_alias_set (TREE_TYPE (TREE_TYPE (root1)))
+          != get_alias_set (TREE_TYPE (TREE_TYPE (root2))))
+    {
+      if (debug)
+       fprintf (debug, " : 2 different alasing sets. No coalesce.\n");
+      return;
+    }
+
+
   /* Merge the two partitions.  */
   p3 = partition_union (map->var_partition, p1, p2);