summaryrefslogtreecommitdiffstats
path: root/gcc/tree-ssa-alias.c
diff options
context:
space:
mode:
authordnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-24 01:05:45 +0000
committerdnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-24 01:05:45 +0000
commitcbbefea46e5a749a5182df5770cc70f30e12aa2e (patch)
tree152cb570bb5673abd6f3cb0e91129d27c8889d40 /gcc/tree-ssa-alias.c
parent1f63eb0c40acb3350bb371130e878bf7156266a7 (diff)
downloadppe42-gcc-cbbefea46e5a749a5182df5770cc70f30e12aa2e.tar.gz
ppe42-gcc-cbbefea46e5a749a5182df5770cc70f30e12aa2e.zip
PR tree-optimization/16688
PR tree-optimization/16689 * tree-ssa-alias.c (setup_pointers_and_addressables): Remove unnecessary initialization of 'tag'. (get_tmt_for): Check that the new type tag has the same alias set as the pointed-to type. (group_aliases): Only regular variables need to be removed from the alias set of a name tag. * tree-ssa-copy.c (may_propagate_copy): Do not allow copy propagation if the two types are not compatible. (merge_alias_info): Rename from replace_ssa_names_ann. Add more checking. (replace_exp_1): If both arguments are SSA_NAMEs, check that the propagation can be done. Only call merge_alias_info on pointers. (propagate_value): Likewise. * tree-ssa-copyrename.c: Include langhooks.h. (copy_rename_partition_coalesce): Call replace_ssa_name_symbol to do the merging. Do not coalesce variables with incompatible types. (rename_ssa_copies): Call replace_ssa_name_symbol. * tree-ssa.c (verify_ssa_name): Verify that the SSA_NAME has the same type as the underlying _DECL. * tree-ssanames.c (replace_ssa_name_symbol): New function. * tree.h (replace_ssa_name_symbol): Declare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85108 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r--gcc/tree-ssa-alias.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index a854b0bd897..fab9e027841 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -1225,7 +1225,8 @@ group_aliases (struct alias_info *ai)
{
tree alias = VARRAY_TREE (aliases, j);
var_ann_t ann = var_ann (alias);
- if (ann->may_aliases)
+
+ if (ann->mem_tag_kind == NOT_A_TAG && ann->may_aliases)
{
tree new_alias;
@@ -1370,7 +1371,7 @@ setup_pointers_and_addressables (struct alias_info *ai)
&& (bitmap_bit_p (ai->dereferenced_ptrs_store, v_ann->uid)
|| bitmap_bit_p (ai->dereferenced_ptrs_load, v_ann->uid)))
{
- tree tag = v_ann->type_mem_tag;
+ tree tag;
var_ann_t t_ann;
/* If pointer VAR still doesn't have a memory tag associated
@@ -2170,6 +2171,14 @@ get_tmt_for (tree ptr, struct alias_info *ai)
ai->pointers[ai->num_pointers++] = alias_map;
}
+#if defined ENABLE_CHECKING
+ /* Make sure that the type tag has the same alias set as the
+ pointed-to type. */
+ if (tag_set != get_alias_set (tag))
+ abort ();
+#endif
+
+
return tag;
}
OpenPOWER on IntegriCloud