diff options
author | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-08-28 20:24:51 +0000 |
---|---|---|
committer | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-08-28 20:24:51 +0000 |
commit | 02df46c6eba553dd078478514ec27e03209277f0 (patch) | |
tree | e5d165ea575dc338c49956ac68aa28027e244c10 /gcc/cfgloopmanip.c | |
parent | 70a1a7a2ef148b42a8c2fd5da399b29960357fef (diff) | |
download | gcc-02df46c6eba553dd078478514ec27e03209277f0.tar.gz |
2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
* cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
bounds with LT_EXPR to make niter analysis more precise on code
generated by Graphite.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151180 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgloopmanip.c')
-rw-r--r-- | gcc/cfgloopmanip.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c index 40e3f8e9a59..a357a2fd77a 100644 --- a/gcc/cfgloopmanip.c +++ b/gcc/cfgloopmanip.c @@ -599,7 +599,7 @@ create_empty_if_region_on_edge (edge entry_edge, tree condition) | | | | | | ----------- | ---V--- loop_body --------------- | | | iv_after = iv_before + stride | - | | | if (iv_after <= upper_bound) | + | | | if (iv_before < upper_bound) | | | ---|--------------\-------------- | | | \ exit_e | | V \ @@ -609,9 +609,9 @@ create_empty_if_region_on_edge (edge entry_edge, tree condition) | \ ___ / Creates an empty loop as shown above, the IV_BEFORE is the SSA_NAME - that is used before the increment of IV. IV_BEFORE should be used for + that is used before the increment of IV. IV_BEFORE should be used for adding code to the body that uses the IV. OUTER is the outer loop in - which the new loop should be inserted. + which the new loop should be inserted. Both INITIAL_VALUE and UPPER_BOUND expressions are gimplified and inserted on the loop entry edge. This implies that this function @@ -619,7 +619,7 @@ create_empty_if_region_on_edge (edge entry_edge, tree condition) invariant. */ struct loop * -create_empty_loop_on_edge (edge entry_edge, +create_empty_loop_on_edge (edge entry_edge, tree initial_value, tree stride, tree upper_bound, tree iv, @@ -637,7 +637,7 @@ create_empty_loop_on_edge (edge entry_edge, tree exit_test; edge exit_e; int prob; - + gcc_assert (entry_edge && initial_value && stride && upper_bound && iv); /* Create header, latch and wire up the loop. */ @@ -696,7 +696,7 @@ create_empty_loop_on_edge (edge entry_edge, /* Insert loop exit condition. */ cond_expr = gimple_build_cond - (LE_EXPR, *iv_after, upper_bound, NULL_TREE, NULL_TREE); + (LT_EXPR, *iv_before, upper_bound, NULL_TREE, NULL_TREE); exit_test = gimple_cond_lhs (cond_expr); exit_test = force_gimple_operand_gsi (&gsi, exit_test, true, NULL, |