summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authordnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-18 18:01:10 +0000
committerdnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-10-18 18:01:10 +0000
commited5cb77f09fb99056644ce86c6305f80df0c18ce (patch)
tree65fa2dda5884adcb69fca3aa5ca69487f2799ab4 /gcc
parent81fdab0ff0f31bdd66cedb925c57f1994e02502c (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/lambda-code.c2
-rw-r--r--gcc/tree-cfg.c2
-rw-r--r--gcc/tree-flow.h2
-rw-r--r--gcc/tree-ssa-loop-ivopts.c8
-rw-r--r--gcc/tree-ssa.c17
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);
}
}