From cd11e3405788be53f834dbd4d0938b41c8eadef0 Mon Sep 17 00:00:00 2001 From: law Date: Thu, 12 Jun 1997 15:45:32 +0000 Subject: [PATCH] * reorg.c (emit_delay_sequence): Call set_new_first_and_last_insn after the new sequence insn has been spliced into the insn chain. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14229 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/reorg.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/gcc/reorg.c b/gcc/reorg.c index 3a5a7e94460..5f24cfc200c 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -894,15 +894,22 @@ emit_delay_sequence (insn, list, length, avail) NEXT_INSN (seq_insn) = NEXT_INSN (insn); PREV_INSN (seq_insn) = PREV_INSN (insn); + if (insn != last) + PREV_INSN (NEXT_INSN (seq_insn)) = seq_insn; + + if (insn != first) + NEXT_INSN (PREV_INSN (seq_insn)) = seq_insn; + + /* Note the calls to set_new_first_and_last_insn must occur after + SEQ_INSN has been completely spliced into the insn stream. + + Otherwise CUR_INSN_UID will get set to an incorrect value because + set_new_first_and_last_insn will not find SEQ_INSN in the chain. */ if (insn == last) set_new_first_and_last_insn (first, seq_insn); - else - PREV_INSN (NEXT_INSN (seq_insn)) = seq_insn; if (insn == first) set_new_first_and_last_insn (seq_insn, last); - else - NEXT_INSN (PREV_INSN (seq_insn)) = seq_insn; /* Build our SEQUENCE and rebuild the insn chain. */ XVECEXP (seq, 0, 0) = delay_insn; -- 2.11.4.GIT