diff options
author | Richard Guenther <rguenther@suse.de> | 2008-03-22 19:50:48 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-03-22 19:50:48 +0000 |
commit | 1b738915e844455ed10082d9b6edab47eb7a9fd8 (patch) | |
tree | c9b8763f12945bb2583d2c8852e671a6703b967f /gcc/tree-ssa-ccp.c | |
parent | 18b526e806ab64557cd575ff407fcb1da16ee8fd (diff) | |
download | gcc-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.c | 29 |
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. */ |