diff options
author | nemet <nemet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-20 18:19:10 +0000 |
---|---|---|
committer | nemet <nemet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-20 18:19:10 +0000 |
commit | c95895c99b80544cde3a3fa4e7f7b8ef12f68f69 (patch) | |
tree | 9e2d4808d596fbdc61945b54d0c37a41b151ec67 /gcc/alias.c | |
parent | a33b4962e504ada357564f1aabdafb40b19b7408 (diff) | |
download | gcc-c95895c99b80544cde3a3fa4e7f7b8ef12f68f69.tar.gz |
PR tree-optimization/25737
* tree.h (struct tree_struct_field_tag): Add new field alias_set.
(SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros.
* tree-flow.h (struct fieldoff): Add new field alias_set.
* tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new
argument addressable_type. Set alias_set of fieldoff.
* tree-ssa-alias.c (create_sft): Add new argument alias_set.
(create_overlap_variables_for): Pass alias_set from fieldoff to
create_sft.
* alias.c (get_alias_set): Use alias_set from SFT if set.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125890 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/alias.c')
-rw-r--r-- | gcc/alias.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/alias.c b/gcc/alias.c index c03ff03ce62..8064b8e087a 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -586,6 +586,13 @@ get_alias_set (tree t) return 0; } + /* For non-addressable fields we return the alias set of the + outermost object that could have its address taken. If this + is an SFT use the precomputed value. */ + if (TREE_CODE (t) == STRUCT_FIELD_TAG + && SFT_NONADDRESSABLE_P (t)) + return SFT_ALIAS_SET (t); + /* Otherwise, pick up the outermost object that we could have a pointer to, processing conversions as above. */ while (component_uses_parent_alias_set (t)) |