diff options
author | Richard Guenther <rguenther@suse.de> | 2008-01-08 12:12:56 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-01-08 12:12:56 +0000 |
commit | 4eefcc98fb1656dfb49ac482a05048ec859eb51f (patch) | |
tree | af197648abcc06aeeac49b83039ca2f34009e9b9 /gcc | |
parent | 0eb52172bcb1a9391cccb8f8b32fb0c48f20ca36 (diff) | |
download | gcc-4eefcc98fb1656dfb49ac482a05048ec859eb51f.zip gcc-4eefcc98fb1656dfb49ac482a05048ec859eb51f.tar.gz gcc-4eefcc98fb1656dfb49ac482a05048ec859eb51f.tar.bz2 |
re PR tree-optimization/34683 (SSA rewriting in the loop unroller causes quadratic behavior)
2008-01-08 Richard Guenther <rguenther@suse.de>
PR tree-optimization/34683
* tree-flow-inline.h (var_ann): Remove overzealous asserts.
From-SVN: r131393
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-flow-inline.h | 23 |
2 files changed, 19 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 86380ee..903656c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-01-08 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/34683 + * tree-flow-inline.h (var_ann): Remove overzealous asserts. + 2008-01-07 Jakub Jelinek <jakub@redhat.com> PR target/34622 diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index 1074f68..1afbd1a 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -190,23 +190,28 @@ fill_referenced_var_vec (VEC (tree, heap) **vec) static inline var_ann_t var_ann (const_tree t) { - gcc_assert (t); - gcc_assert (DECL_P (t)); - gcc_assert (TREE_CODE (t) != FUNCTION_DECL); - if (!MTAG_P (t) && (TREE_STATIC (t) || DECL_EXTERNAL (t))) + var_ann_t ann; + + if (!MTAG_P (t) + && (TREE_STATIC (t) || DECL_EXTERNAL (t))) { struct static_var_ann_d *sann = ((struct static_var_ann_d *) htab_find_with_hash (gimple_var_anns (cfun), t, DECL_UID (t))); if (!sann) return NULL; - gcc_assert (sann->ann.common.type == VAR_ANN); - return &sann->ann; + ann = &sann->ann; } - gcc_assert (!t->base.ann - || t->base.ann->common.type == VAR_ANN); + else + { + if (!t->base.ann) + return NULL; + ann = (var_ann_t) t->base.ann; + } + + gcc_assert (ann->common.type == VAR_ANN); - return (var_ann_t) t->base.ann; + return ann; } /* Return the variable annotation for T, which must be a _DECL node. |