diff options
author | dnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-18 18:01:10 +0000 |
---|---|---|
committer | dnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-18 18:01:10 +0000 |
commit | ed5cb77f09fb99056644ce86c6305f80df0c18ce (patch) | |
tree | 65fa2dda5884adcb69fca3aa5ca69487f2799ab4 /gcc | |
parent | 81fdab0ff0f31bdd66cedb925c57f1994e02502c (diff) | |
download | gcc-ed5cb77f09fb99056644ce86c6305f80df0c18ce.tar.gz |
* tree-cfg.c (bsi_for_stmt): Rename from stmt_for_bsi.
Update all callers.
* tree-ssa.c (replace_immediate_uses): Call bsi_for_stmt.
Don't call fold_stmt more than once, use bsi_replace.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89234 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/lambda-code.c | 2 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 2 | ||||
-rw-r--r-- | gcc/tree-flow.h | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 8 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 17 |
6 files changed, 17 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c6bcd56d4ce..fe4213bd8c7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2004-10-18 Diego Novillo <dnovillo@redhat.com> + * tree-cfg.c (bsi_for_stmt): Rename from stmt_for_bsi. + Update all callers. + * tree-ssa.c (replace_immediate_uses): Call bsi_for_stmt. + Don't call fold_stmt more than once, use bsi_replace. + +2004-10-18 Diego Novillo <dnovillo@redhat.com> + PR tree-optimization/17656 * tree-ssa.c (replace_immediate_uses): When replacing a constant, if the call to fold_stmt produced a different diff --git a/gcc/lambda-code.c b/gcc/lambda-code.c index 2f75db9f998..4ad62b49eff 100644 --- a/gcc/lambda-code.c +++ b/gcc/lambda-code.c @@ -1937,7 +1937,7 @@ lambda_loopnest_to_gcc_loopnest (struct loop *old_loopnest, LBV_COEFFICIENTS (lbv)[i] = 1; lbv = lambda_body_vector_compute_new (transform, lbv); newiv = lbv_to_gcc_expression (lbv, new_ivs, &stmts); - bsi = stmt_for_bsi (stmt); + bsi = bsi_for_stmt (stmt); /* Insert the statements to build that expression. */ bsi_insert_before (&bsi, stmts, BSI_SAME_STMT); diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 7874000a1d5..72cbbd88044 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -2638,7 +2638,7 @@ set_bb_for_stmt (tree t, basic_block bb) /* Finds iterator for STMT. */ extern block_stmt_iterator -stmt_for_bsi (tree stmt) +bsi_for_stmt (tree stmt) { block_stmt_iterator bsi; diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index c26e91b5c19..4db7fa9833b 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -416,7 +416,7 @@ typedef struct { static inline block_stmt_iterator bsi_start (basic_block); static inline block_stmt_iterator bsi_last (basic_block); static inline block_stmt_iterator bsi_after_labels (basic_block); -block_stmt_iterator stmt_for_bsi (tree); +block_stmt_iterator bsi_for_stmt (tree); static inline bool bsi_end_p (block_stmt_iterator); static inline void bsi_next (block_stmt_iterator *); static inline void bsi_prev (block_stmt_iterator *); diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 53d899d669e..a620aca8ce4 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -3878,7 +3878,7 @@ remove_statement (tree stmt, bool including_defined_name) } else { - block_stmt_iterator bsi = stmt_for_bsi (stmt); + block_stmt_iterator bsi = bsi_for_stmt (stmt); bsi_remove (&bsi); } @@ -3916,7 +3916,7 @@ rewrite_use_nonlinear_expr (struct ivopts_data *data, case MODIFY_EXPR: tgt = TREE_OPERAND (use->stmt, 0); - bsi = stmt_for_bsi (use->stmt); + bsi = bsi_for_stmt (use->stmt); break; default: @@ -4055,7 +4055,7 @@ rewrite_use_address (struct ivopts_data *data, { tree comp = unshare_expr (get_computation (data->current_loop, use, cand)); - block_stmt_iterator bsi = stmt_for_bsi (use->stmt); + block_stmt_iterator bsi = bsi_for_stmt (use->stmt); tree stmts; tree op = force_gimple_operand (comp, &stmts, true, NULL_TREE); @@ -4074,7 +4074,7 @@ rewrite_use_compare (struct ivopts_data *data, { tree comp; tree *op_p, cond, op, stmts, bound; - block_stmt_iterator bsi = stmt_for_bsi (use->stmt); + block_stmt_iterator bsi = bsi_for_stmt (use->stmt); enum tree_code compare; if (may_eliminate_iv (data->current_loop, diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 4362e01aff8..7f73bcf6e73 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1105,20 +1105,9 @@ replace_immediate_uses (tree var, tree repl) fold_stmt (&tmp); if (tmp != stmt) { - basic_block bb = bb_for_stmt (stmt); - block_stmt_iterator si; - - /* Start iterating at the start of the basic block - holding STMT until we reach it. This is slow, but - it's the only way to get a statement pointer - reliably. */ - for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si)) - if (bsi_stmt (si) == stmt) - { - fold_stmt (bsi_stmt_ptr (si)); - stmt = bsi_stmt (si); - break; - } + block_stmt_iterator si = bsi_for_stmt (stmt); + bsi_replace (&si, tmp, true); + stmt = bsi_stmt (si); } } |