aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1995-02-24 18:40:03 -0800
committerJim Wilson <wilson@gcc.gnu.org>1995-02-24 18:40:03 -0800
commit9e94dc88d3ec245c45cfdb4575ccb6132bc9a207 (patch)
tree9f1883a2fa838c94e17714699ffe993412ffe455 /gcc
parented73e9f119e3231017a0dea36124587287364d00 (diff)
downloadgcc-9e94dc88d3ec245c45cfdb4575ccb6132bc9a207.zip
gcc-9e94dc88d3ec245c45cfdb4575ccb6132bc9a207.tar.gz
gcc-9e94dc88d3ec245c45cfdb4575ccb6132bc9a207.tar.bz2
(relax_delay_slots): When searching for next CODE_LABEL,
use next_real_insn not next_active_insn. From-SVN: r9075
Diffstat (limited to 'gcc')
-rw-r--r--gcc/reorg.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 653c477..6c72f4c 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -3865,7 +3865,12 @@ relax_delay_slots (first)
/* If this jump goes to another unconditional jump, thread it, but
don't convert a jump into a RETURN here. */
trial = follow_jumps (target_label);
- trial = prev_label (next_active_insn (trial));
+ /* We use next_real_insn instead of next_active_insn, so that
+ the special USE insns emitted by reorg won't be ignored.
+ If they are ignored, then they will get deleted if target_label
+ is now unreachable, and that would cause mark_target_live_regs
+ to fail. */
+ trial = prev_label (next_real_insn (trial));
if (trial == 0 && target_label != 0)
trial = find_end_label ();