aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-dfa.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-11-16 14:40:04 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-11-16 14:40:04 +0000
commit99739a3e63eb906c77b8acdb76d4f40485eb56fe (patch)
treeb456fc38c0a138350839b7ebdcbf56a53752ed5d /gcc/tree-dfa.c
parentbf3bde19e0bf954db21ec98ee179262ec68c5ded (diff)
downloadgcc-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.c6
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");
}