aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2008-01-08 12:12:56 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2008-01-08 12:12:56 +0000
commit4eefcc98fb1656dfb49ac482a05048ec859eb51f (patch)
treeaf197648abcc06aeeac49b83039ca2f34009e9b9 /gcc
parent0eb52172bcb1a9391cccb8f8b32fb0c48f20ca36 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/tree-flow-inline.h23
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.