diff options
author | Roger Sayle <roger@eyesopen.com> | 2002-09-08 18:32:31 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2002-09-08 18:32:31 +0000 |
commit | 7df988780bd6c60725929ffea906fc2e160f94df (patch) | |
tree | ca4fc1bb6a60377368ad40416a7ee08a4aaca40f /gcc | |
parent | f40f4c8ed1f8a962169c6c39a6601cd3ca8ba91d (diff) | |
download | gcc-7df988780bd6c60725929ffea906fc2e160f94df.zip gcc-7df988780bd6c60725929ffea906fc2e160f94df.tar.gz gcc-7df988780bd6c60725929ffea906fc2e160f94df.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/loop.c | 2 | ||||
-rw-r--r-- | gcc/unroll.c | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3abc016..43f4844 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 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 has been turned into a return or unconditional jump, by inserting a BARRIER if necessary. @@ -5348,7 +5348,7 @@ strength_reduce (loop, flags) unsigned HOST_WIDE_INT n = loop_info->n_iterations / loop_info->unroll_number; 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); } diff --git a/gcc/unroll.c b/gcc/unroll.c index 4096905..61d63d8 100644 --- a/gcc/unroll.c +++ b/gcc/unroll.c @@ -3273,7 +3273,7 @@ loop_iterations (loop) 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_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 at the end of the loop. The following code assumes that |