diff options
author | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-02-14 14:54:37 +0000 |
---|---|---|
committer | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-02-14 14:54:37 +0000 |
commit | f98505bb95692460e618f6822045d523e4323ea0 (patch) | |
tree | b967749b4eb224822e41da16588df79f92eb3539 /gcc | |
parent | 129a15403a12e668604af6a07ebd2052aa524ec3 (diff) | |
download | gcc-f98505bb95692460e618f6822045d523e4323ea0.tar.gz |
* lambda-code.c (lambda_loopnest_to_gcc_loopnest, perfect_nestify):
Use standard_iv_increment_position for computing the bsi position
for create_iv.
* tree-ssa-loop-manip.c (create_iv): Add a comment on how to compute
the bsi position.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95013 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/lambda-code.c | 21 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-manip.c | 3 |
3 files changed, 23 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6cf49a96d08..dc6e63c8a8f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-02-14 Sebastian Pop <pop@cri.ensmp.fr> + + * lambda-code.c (lambda_loopnest_to_gcc_loopnest, perfect_nestify): + Use standard_iv_increment_position for computing the bsi position + for create_iv. + * tree-ssa-loop-manip.c (create_iv): Add a comment on how to compute + the bsi position. + 2005-02-13 Zdenek Dvorak <dvorakz@suse.cz> PR target/17428 diff --git a/gcc/lambda-code.c b/gcc/lambda-code.c index 40f3ac36883..2267e748120 100644 --- a/gcc/lambda-code.c +++ b/gcc/lambda-code.c @@ -1873,6 +1873,7 @@ lambda_loopnest_to_gcc_loopnest (struct loop *old_loopnest, tree newupperbound, newlowerbound; lambda_linear_expression offset; tree type; + bool insert_after; oldiv = VEC_index (tree, old_ivs, i); type = TREE_TYPE (oldiv); @@ -1915,14 +1916,12 @@ lambda_loopnest_to_gcc_loopnest (struct loop *old_loopnest, bsi = bsi_start (bb); bsi_insert_after (&bsi, stmts, BSI_NEW_STMT); - /* Create the new iv, and insert it's increment on the latch - block. */ + /* Create the new iv. */ - bb = EDGE_PRED (temp->latch, 0)->src; - bsi = bsi_last (bb); + standard_iv_increment_position (temp, &bsi, &insert_after); create_iv (newlowerbound, build_int_cst (type, LL_STEP (newloop)), - ivvar, temp, &bsi, false, &ivvar, + ivvar, temp, &bsi, insert_after, &ivvar, &ivvarinced); /* Replace the exit condition with the new upper bound @@ -2297,6 +2296,7 @@ perfect_nestify (struct loops *loops, basic_block preheaderbb, headerbb, bodybb, latchbb, olddest; size_t i; block_stmt_iterator bsi; + bool insert_after; edge e; struct loop *newloop; tree phi; @@ -2377,10 +2377,10 @@ perfect_nestify (struct loops *loops, /* Create the new iv. */ ivvar = create_tmp_var (integer_type_node, "perfectiv"); add_referenced_tmp_var (ivvar); - bsi = bsi_last (EDGE_PRED (newloop->latch, 0)->src); + standard_iv_increment_position (newloop, &bsi, &insert_after); create_iv (VEC_index (tree, lbounds, 0), build_int_cst (integer_type_node, VEC_index (int, steps, 0)), - ivvar, newloop, &bsi, false, &ivvar, &ivvarinced); + ivvar, newloop, &bsi, insert_after, &ivvar, &ivvarinced); /* Create the new upper bound. This may be not just a variable, so we copy it to one just in case. */ @@ -2392,7 +2392,12 @@ perfect_nestify (struct loops *loops, VEC_index (tree, ubounds, 0)); uboundvar = make_ssa_name (uboundvar, stmt); TREE_OPERAND (stmt, 0) = uboundvar; - bsi_insert_before (&bsi, stmt, BSI_SAME_STMT); + + if (insert_after) + bsi_insert_after (&bsi, stmt, BSI_SAME_STMT); + else + bsi_insert_before (&bsi, stmt, BSI_SAME_STMT); + COND_EXPR_COND (exit_condition) = build (GE_EXPR, boolean_type_node, uboundvar, diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c index fe9c43c5860..2fdfafa274f 100644 --- a/gcc/tree-ssa-loop-manip.c +++ b/gcc/tree-ssa-loop-manip.c @@ -41,7 +41,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA It is expected that neither BASE nor STEP are shared with other expressions (unless the sharing rules allow this). Use VAR as a base var_decl for it (if NULL, a new temporary will be created). The increment will occur at - INCR_POS (after it if AFTER is true, before it otherwise). The ssa versions + INCR_POS (after it if AFTER is true, before it otherwise). INCR_POS and + AFTER can be computed using standard_iv_increment_position. The ssa versions of the variable before and after increment will be stored in VAR_BEFORE and VAR_AFTER (unless they are NULL). */ |