diff options
author | Richard Guenther <rguenther@suse.de> | 2007-11-21 10:16:21 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2007-11-21 10:16:21 +0000 |
commit | 11948f6bac2949e7f8158c335e37bb30340d7f86 (patch) | |
tree | 879367eac8305c2ff29cf7a1cb2d0d4b0306c562 | |
parent | 2bf66d799ca2ce2dfe07f53eb6b47edf35d3cc67 (diff) | |
download | gcc-11948f6bac2949e7f8158c335e37bb30340d7f86.zip gcc-11948f6bac2949e7f8158c335e37bb30340d7f86.tar.gz gcc-11948f6bac2949e7f8158c335e37bb30340d7f86.tar.bz2 |
re PR tree-optimization/34148 (Too many VOPs, too deep tree-ssa-sccvn.c recursion)
2007-11-21 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34148
* tree-ssa-structalias.c (create_variable_info_for): Do not use
field-sensitive PTA for single-element structures.
* tree-ssa-alias.c (create_overlap_variables_for): Do not create
SFTs for single-element structures.
From-SVN: r130329
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/tree-ssa-alias.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-structalias.c | 1 |
3 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac26d40..fa80603 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2007-11-21 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/34148 + * tree-ssa-structalias.c (create_variable_info_for): Do not use + field-sensitive PTA for single-element structures. + * tree-ssa-alias.c (create_overlap_variables_for): Do not create + SFTs for single-element structures. + 2007-11-20 Richard Guenther <rguenther@suse.de> PR middle-end/34154 diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 7d6c0e1..13ec95b 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -3837,7 +3837,7 @@ create_overlap_variables_for (tree var) TREE_TYPE (var)); /* Make sure to not create SFTs for structs we won't generate variable infos for. See tree-ssa-structalias.c:create_variable_info_for (). */ - if (VEC_length (fieldoff_s, fieldstack) != 0 + if (VEC_length (fieldoff_s, fieldstack) > 1 && VEC_length (fieldoff_s, fieldstack) <= MAX_FIELDS_FOR_FIELD_SENSITIVE) { subvar_t *subvars; diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 5fbcfc5..5e197c4 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -4441,6 +4441,7 @@ create_variable_info_for (tree decl, const char *name) && !notokay && !vi->is_unknown_size_var && var_can_have_subvars (decl) + && VEC_length (fieldoff_s, fieldstack) > 1 && VEC_length (fieldoff_s, fieldstack) <= MAX_FIELDS_FOR_FIELD_SENSITIVE) { unsigned int newindex = VEC_length (varinfo_t, varmap); |