aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-ccp.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2008-03-22 19:50:48 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2008-03-22 19:50:48 +0000
commit1b738915e844455ed10082d9b6edab47eb7a9fd8 (patch)
treec9b8763f12945bb2583d2c8852e671a6703b967f /gcc/tree-ssa-ccp.c
parent18b526e806ab64557cd575ff407fcb1da16ee8fd (diff)
downloadgcc-1b738915e844455ed10082d9b6edab47eb7a9fd8.zip
gcc-1b738915e844455ed10082d9b6edab47eb7a9fd8.tar.gz
gcc-1b738915e844455ed10082d9b6edab47eb7a9fd8.tar.bz2
tree-cfg.c (verify_expr): Recurse again for invariant addresses.
2008-03-22 Richard Guenther <rguenther@suse.de> * tree-cfg.c (verify_expr): Recurse again for invariant addresses. For PHI nodes verify the address is invariant. * tree-ssa-ccp.c (ccp_decl_initial_min_invariant): Remove. (get_symbol_constant_value): Use is_gimple_min_invariant. (maybe_fold_stmt_indirect): Likewise. From-SVN: r133453
Diffstat (limited to 'gcc/tree-ssa-ccp.c')
-rw-r--r--gcc/tree-ssa-ccp.c29
1 files changed, 2 insertions, 27 deletions
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 7797de1..805776a 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -267,31 +267,6 @@ debug_lattice_value (prop_value_t val)
}
-/* The regular is_gimple_min_invariant does a shallow test of the object.
- It assumes that full gimplification has happened, or will happen on the
- object. For a value coming from DECL_INITIAL, this is not true, so we
- have to be more strict ourselves. */
-
-static bool
-ccp_decl_initial_min_invariant (tree t)
-{
- if (!is_gimple_min_invariant (t))
- return false;
- if (TREE_CODE (t) == ADDR_EXPR)
- {
- /* Inline and unroll is_gimple_addressable. */
- while (1)
- {
- t = TREE_OPERAND (t, 0);
- if (is_gimple_id (t))
- return true;
- if (!handled_component_p (t))
- return false;
- }
- }
- return true;
-}
-
/* If SYM is a constant variable with known value, return the value.
NULL_TREE is returned otherwise. */
@@ -304,7 +279,7 @@ get_symbol_constant_value (tree sym)
{
tree val = DECL_INITIAL (sym);
if (val
- && ccp_decl_initial_min_invariant (val))
+ && is_gimple_min_invariant (val))
return val;
/* Variables declared 'const' without an initializer
have zero as the intializer if they may not be
@@ -1990,7 +1965,7 @@ maybe_fold_stmt_indirect (tree expr, tree base, tree offset)
/* Fold away CONST_DECL to its value, if the type is scalar. */
if (TREE_CODE (base) == CONST_DECL
- && ccp_decl_initial_min_invariant (DECL_INITIAL (base)))
+ && is_gimple_min_invariant (DECL_INITIAL (base)))
return DECL_INITIAL (base);
/* Try folding *(&B+O) to B.X. */