aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgloopmanip.c
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2009-08-28 20:24:51 +0000
committerSebastian Pop <sebastian.pop@amd.com>2009-08-28 20:24:51 +0000
commitabcf85e3d5eb824b705e60fc04a8874149d00cc1 (patch)
treee5d165ea575dc338c49956ac68aa28027e244c10 /gcc/cfgloopmanip.c
parent963e6294dbffa2d9fa47334bcc1b9e877826c0ef (diff)
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: https://gcc.gnu.org/svn/gcc/trunk@151180 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgloopmanip.c')
-rw-r--r--gcc/cfgloopmanip.c12
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,