re PR tree-optimization/34148 (Too many VOPs, too deep tree-ssa-sccvn.c recursion)
authorRichard Guenther <rguenther@suse.de>
Wed, 21 Nov 2007 10:16:21 +0000 (10:16 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 21 Nov 2007 10:16:21 +0000 (10:16 +0000)
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

gcc/ChangeLog
gcc/tree-ssa-alias.c
gcc/tree-ssa-structalias.c

index ac26d4075f70c4fb7ed0b7e6d2c4ab69d1f842f7..fa8060355d98a59893d8b3d68ef4b23a19cc8fae 100644 (file)
@@ -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
index 7d6c0e1fad1f7a3a763c022922f20cd383cc20ee..13ec95b9e9d0b1f33ae353e25e6c16dfde3156a6 100644 (file)
@@ -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;
index 5fbcfc5cc55ed2fac84a1bb5ee91b11d3b4db390..5e197c47feed2af01a41308202676cabff4b7e68 100644 (file)
@@ -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);