Commit 7df98878 by Roger Sayle Committed by Roger Sayle

re PR rtl-optimization/6405 (Loop-unrolling related performance regressions)


	PR optimization/6405
	* unroll.c (loop_iterations): last_loop_insn should be the previous
	non-note instruction before loop->end.
	* loop.c (strength_reduce): The conditional jump is the last
	non-note instruction before loop->end (as above).

From-SVN: r56956
parent f40f4c8e
2002-09-08 Roger Sayle <roger@eyesopen.com> 2002-09-08 Roger Sayle <roger@eyesopen.com>
PR optimization/6405
* unroll.c (loop_iterations): last_loop_insn should be the previous
non-note instruction before loop->end.
* loop.c (strength_reduce): The conditional jump is the last
non-note instruction before loop->end (as above).
2002-09-08 Roger Sayle <roger@eyesopen.com>
* combine.c (try_combine): Handle the case that undobuf.other_insn * combine.c (try_combine): Handle the case that undobuf.other_insn
has been turned into a return or unconditional jump, by inserting has been turned into a return or unconditional jump, by inserting
a BARRIER if necessary. a BARRIER if necessary.
......
...@@ -5348,7 +5348,7 @@ strength_reduce (loop, flags) ...@@ -5348,7 +5348,7 @@ strength_reduce (loop, flags)
unsigned HOST_WIDE_INT n unsigned HOST_WIDE_INT n
= loop_info->n_iterations / loop_info->unroll_number; = loop_info->n_iterations / loop_info->unroll_number;
if (n > 1) if (n > 1)
predict_insn (PREV_INSN (loop->end), PRED_LOOP_ITERATIONS, predict_insn (prev_nonnote_insn (loop->end), PRED_LOOP_ITERATIONS,
REG_BR_PROB_BASE - REG_BR_PROB_BASE / n); REG_BR_PROB_BASE - REG_BR_PROB_BASE / n);
} }
......
...@@ -3273,7 +3273,7 @@ loop_iterations (loop) ...@@ -3273,7 +3273,7 @@ loop_iterations (loop)
accidentally get the branch for a contained loop if the branch for this accidentally get the branch for a contained loop if the branch for this
loop was deleted. We can only trust branches immediately before the loop was deleted. We can only trust branches immediately before the
loop_end. */ loop_end. */
last_loop_insn = PREV_INSN (loop->end); last_loop_insn = prev_nonnote_insn (loop->end);
/* ??? We should probably try harder to find the jump insn /* ??? We should probably try harder to find the jump insn
at the end of the loop. The following code assumes that at the end of the loop. The following code assumes that
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment