diff options
author | Adam Nemet <anemet@caviumnetworks.com> | 2007-06-20 18:19:10 +0000 |
---|---|---|
committer | Adam Nemet <nemet@gcc.gnu.org> | 2007-06-20 18:19:10 +0000 |
commit | 3d9b47dc431c0e8b967f390f28a68fe371d47eb4 (patch) | |
tree | 9e2d4808d596fbdc61945b54d0c37a41b151ec67 /gcc/tree.h | |
parent | 034bfe7a9f51a82d1eadeb037791e5f467395eba (diff) | |
download | gcc-3d9b47dc431c0e8b967f390f28a68fe371d47eb4.zip gcc-3d9b47dc431c0e8b967f390f28a68fe371d47eb4.tar.gz gcc-3d9b47dc431c0e8b967f390f28a68fe371d47eb4.tar.bz2 |
re PR tree-optimization/25737 (ACATS c974001 c974013 hang with struct aliasing)
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.
From-SVN: r125890
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -2516,10 +2516,15 @@ struct tree_struct_field_tag GTY(()) /* Size of the field. */ unsigned HOST_WIDE_INT size; + /* Alias set for a DECL_NONADDRESSABLE_P field. Otherwise -1. */ + HOST_WIDE_INT alias_set; }; #define SFT_PARENT_VAR(NODE) (STRUCT_FIELD_TAG_CHECK (NODE)->sft.parent_var) #define SFT_OFFSET(NODE) (STRUCT_FIELD_TAG_CHECK (NODE)->sft.offset) #define SFT_SIZE(NODE) (STRUCT_FIELD_TAG_CHECK (NODE)->sft.size) +#define SFT_NONADDRESSABLE_P(NODE) \ + (STRUCT_FIELD_TAG_CHECK (NODE)->sft.alias_set != -1) +#define SFT_ALIAS_SET(NODE) (STRUCT_FIELD_TAG_CHECK (NODE)->sft.alias_set) /* Memory Partition Tags (MPTs) group memory symbols under one common name for the purposes of placing memory PHI nodes. */ |