root1 = SSA_NAME_VAR (rep1);
root2 = SSA_NAME_VAR (rep2);
- if (DECL_HARD_REGISTER (root1) || DECL_HARD_REGISTER (root2))
- {
- if (debug)
- {
- if (DECL_HARD_REGISTER (root1))
- print_generic_expr (debug, var1, TDF_SLIM);
- else
- print_generic_expr (debug, var2, TDF_SLIM);
- fprintf (debug, " is a hardware register. No Coalescing.\n");
- }
- return;
- }
-
ann1 = var_ann (root1);
ann2 = var_ann (root2);
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);