diff options
author | Richard Guenther <rguenther@suse.de> | 2007-11-16 14:40:04 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2007-11-16 14:40:04 +0000 |
commit | 99739a3e63eb906c77b8acdb76d4f40485eb56fe (patch) | |
tree | b456fc38c0a138350839b7ebdcbf56a53752ed5d /gcc/tree-dfa.c | |
parent | bf3bde19e0bf954db21ec98ee179262ec68c5ded (diff) | |
download | gcc-99739a3e63eb906c77b8acdb76d4f40485eb56fe.zip gcc-99739a3e63eb906c77b8acdb76d4f40485eb56fe.tar.gz gcc-99739a3e63eb906c77b8acdb76d4f40485eb56fe.tar.bz2 |
re PR tree-optimization/33870 (miscompiles sqlite)
2007-11-16 Richard Guenther <rguenther@suse.de>
PR tree-optimization/33870
* tree.h (struct tree_memory_tag): Add base_for_components flag.
(struct tree_struct_field_tag): Remove nesting_level field.
(SFT_NESTING_LEVEL): Remove.
(SFT_BASE_FOR_COMPONENTS_P): Add.
* tree-flow.h (struct fieldoff): Remove nesting_level field. Add
base_for_components flag.
(push_fields_onto_fieldstack): Remove nesting_level parameter.
* tree-ssa-alias.c (create_sft): Likewise. Add base_for_components
parameter.
(create_overlap_variables_for): Deal with it.
* tree-dfa.c (dump_subvars_for): Likewise.
(dump_variable): Likewise.
* tree-ssa-structalias.c (push_fields_onto_fieldstack): Likewise.
Set base_for_components for first elements of sub-structures.
(create_variable_info_for): Handle base_for_components.
(set_uids_in_ptset): Always set SFT_UNPARTITIONABLE_P for
pointed-to SFTs if SFT_BASE_FOR_COMPONENTS_P is set.
* tree-ssa-operands.c (ref_nesting_level): Remove.
(add_vars_for_offset): Remove full_ref parameter, always add
the offset of the pointed-to SFT.
(add_virtual_operand): Adjust for changed signature of
add_vars_for_offset.
* gcc.dg/torture/pr33870.c: New testcase.
From-SVN: r130231
Diffstat (limited to 'gcc/tree-dfa.c')
-rw-r--r-- | gcc/tree-dfa.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 65a32d9..f79df0b 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -288,7 +288,8 @@ dump_subvars_for (FILE *file, tree var) { print_generic_expr (file, subvar, dump_flags); fprintf (file, "@" HOST_WIDE_INT_PRINT_UNSIGNED, SFT_OFFSET (subvar)); - fprintf (file, "[%u]", SFT_NESTING_LEVEL (subvar)); + if (SFT_BASE_FOR_COMPONENTS_P (subvar)) + fprintf (file, "[B]"); fprintf (file, " "); } @@ -424,7 +425,8 @@ dump_variable (FILE *file, tree var) { fprintf (file, ", offset: " HOST_WIDE_INT_PRINT_UNSIGNED, SFT_OFFSET (var)); - fprintf (file, ", nesting: %u", SFT_NESTING_LEVEL (var)); + fprintf (file, ", base for components: %s", + SFT_BASE_FOR_COMPONENTS_P (var) ? "NO" : "YES"); fprintf (file, ", partitionable: %s", SFT_UNPARTITIONABLE_P (var) ? "NO" : "YES"); } |