From 48140fa8e27a3b4cbbd494ff8c9772d798ca37d5 Mon Sep 17 00:00:00 2001 From: dberlin Date: Mon, 11 Apr 2005 20:15:33 +0000 Subject: [PATCH] 2005-04-11 Daniel Berlin Fix PR tree-optimization/20926 * tree-ssa-alias.c (add_type_alias): Handle subvars. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97982 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/tree-ssa-alias.c | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0818b493467..beb69e756cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-04-11 Daniel Berlin + + Fix PR tree-optimization/20926 + + * tree-ssa-alias.c (add_type_alias): Handle subvars. + 2005-04-11 Devang Patel * config/rs6000.c (rs6000_emit_vector_select): Fix vector select diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 0f7001757c5..7d8e783174e 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -2704,6 +2704,7 @@ add_type_alias (tree ptr, tree var) varray_type aliases; tree tag; var_ann_t ann = var_ann (ptr); + subvar_t svars; if (ann->type_mem_tag == NULL_TREE) { @@ -2748,7 +2749,18 @@ found_tag: for PTR's type tag. */ gcc_assert (var_ann (var)->type_mem_tag == NOT_A_TAG); tag = ann->type_mem_tag; - add_may_alias (tag, var); + + /* If VAR has subvars, add the subvars to the tag instead of the + actual var. */ + if (var_can_have_subvars (var) + && (svars = get_subvars_for_var (var))) + { + subvar_t sv; + for (sv = svars; sv; sv = sv->next) + add_may_alias (tag, sv->var); + } + else + add_may_alias (tag, var); /* TAG and its set of aliases need to be marked for renaming. */ mark_sym_for_renaming (tag); -- 2.11.4.GIT