aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-ccp.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-04-07 15:31:37 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-04-07 15:31:37 +0000
commit2ea9dc6459761bae70146f8ea85436f70eca25eb (patch)
tree24b98f856ca6626ac198b3511f687951a4a1ec86 /gcc/tree-ssa-ccp.c
parent5fd5c97a3458128c95577bbff190795f39e4cdfb (diff)
downloadgcc-2ea9dc6459761bae70146f8ea85436f70eca25eb.zip
gcc-2ea9dc6459761bae70146f8ea85436f70eca25eb.tar.gz
gcc-2ea9dc6459761bae70146f8ea85436f70eca25eb.tar.bz2
ipa-reference.c (mark_load): Use get_base_address.
2010-04-07 Richard Guenther <rguenther@suse.de> * ipa-reference.c (mark_load): Use get_base_address. (mark_store): Likewise. * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Avoid inserting GIMPLE_NOPs into the IL. * tree-ssa-structalias.c (get_constraint_for_component_ref): Explicitly strip handled components and indirect references. * fold-const.c (fold_unary_loc): Do not strip qualifiers when folding address expressions. * gimple.c (gimple_ior_addresses_taken_1): Use get_base_address. * tree-ssa-alias.c (decl_refs_may_alias_p): Do not use operand_equal_p to compare decls. (ptr_deref_may_alias_decl_p): Likewise. * tree-ssa-operands.c (get_asm_expr_operands): Simplify * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Handle reversed comparison ops. * tree-sra.c (asm_visit_addr): Use get_base_address. * ipa-prop.c (visit_store_addr_for_mod_analysis): Use get_base_address. * ipa-reference.c (mark_address): Use get_base_address. From-SVN: r158069
Diffstat (limited to 'gcc/tree-ssa-ccp.c')
-rw-r--r--gcc/tree-ssa-ccp.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index fcfdd18..f0106eb 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -3354,6 +3354,7 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
gimple_stmt_iterator i;
gimple_seq stmts = gimple_seq_alloc();
struct gimplify_ctx gctx;
+ gimple last = NULL;
stmt = gsi_stmt (*si_p);
@@ -3375,22 +3376,31 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
/* The replacement can expose previously unreferenced variables. */
for (i = gsi_start (stmts); !gsi_end_p (i); gsi_next (&i))
- {
- new_stmt = gsi_stmt (i);
- find_new_referenced_vars (new_stmt);
- gsi_insert_before (si_p, new_stmt, GSI_NEW_STMT);
- mark_symbols_for_renaming (new_stmt);
- gsi_next (si_p);
- }
+ {
+ if (last)
+ {
+ gsi_insert_before (si_p, last, GSI_NEW_STMT);
+ gsi_next (si_p);
+ }
+ new_stmt = gsi_stmt (i);
+ find_new_referenced_vars (new_stmt);
+ mark_symbols_for_renaming (new_stmt);
+ last = new_stmt;
+ }
if (lhs == NULL_TREE)
{
- new_stmt = gimple_build_nop ();
unlink_stmt_vdef (stmt);
release_defs (stmt);
+ new_stmt = last;
}
else
{
+ if (last)
+ {
+ gsi_insert_before (si_p, last, GSI_NEW_STMT);
+ gsi_next (si_p);
+ }
new_stmt = gimple_build_assign (lhs, tmp);
gimple_set_vuse (new_stmt, gimple_vuse (stmt));
gimple_set_vdef (new_stmt, gimple_vdef (stmt));