diff options
author | Diego Novillo <dnovillo@google.com> | 2007-11-07 19:01:38 -0500 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2007-11-07 19:01:38 -0500 |
commit | 6f09f3140c724335069034b6b43d391867d43267 (patch) | |
tree | 06efa0a928d92fb0ec421d6bddae19cebfe2145b /gcc/tree.h | |
parent | e4fd5b87bf37f1a58194897e10fae8132470f84a (diff) | |
download | gcc-6f09f3140c724335069034b6b43d391867d43267.zip gcc-6f09f3140c724335069034b6b43d391867d43267.tar.gz gcc-6f09f3140c724335069034b6b43d391867d43267.tar.bz2 |
re PR tree-optimization/33870 (miscompiles sqlite)
PR 33870
* tree.h (struct tree_struct_field_tag): Add field in_nested_struct.
(SFT_IN_NESTED_STRUCT): Define.
* tree-dfa.c (dump_subvars_for): Show offset of each
sub-var.
* tree-flow.h (struct fieldoff): Add field in_nested_struct.
* tree-ssa-structalias.c (struct variable_info): Likewise.
(push_fields_onto_fieldstack): If OFFSET is positive,
set in_nested_struct.
(create_variable_info_for): Copy setting of
in_nested_struct from the field offset object.
(set_uids_in_ptset): Set SFT_IN_NESTED_STRUCT from the
variable info object.
* tree-ssa-operands.c (add_vars_for_offset): If VAR
belongs to a nested structure, adjust OFFSET by
SFT_OFFSET(VAR).
testsuite/ChangeLog
* gcc.c-torture/execute/pr33870.x: Remove.
From-SVN: r129976
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -2573,15 +2573,21 @@ struct tree_struct_field_tag GTY(()) /* Size of the field. */ unsigned HOST_WIDE_INT size; + /* True if this SFT is for a field in a nested structure. */ + unsigned int in_nested_struct : 1; + /* Alias set for a DECL_NONADDRESSABLE_P field. Otherwise -1. */ alias_set_type 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) +#define SFT_IN_NESTED_STRUCT(NODE) \ + (STRUCT_FIELD_TAG_CHECK (NODE)->sft.in_nested_struct) /* Memory Partition Tags (MPTs) group memory symbols under one common name for the purposes of placing memory PHI nodes. */ |