From 51ec2375642c91567b231ddb9e06f61e33734a89 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Tue, 2 Mar 1993 13:05:09 -0800 Subject: [PATCH] (relax_delay_slots): Delete jump around insn identical to the insn in its delay slot. From-SVN: r3606 --- gcc/reorg.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gcc/reorg.c b/gcc/reorg.c index efbc078e119..e78c44c4d3b 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3440,6 +3440,19 @@ relax_delay_slots (first) continue; } + /* See if this is an unconditional jump around a single insn which is + identical to the one in its delay slot. In this case, we can just + delete the branch and the insn in its delay slot. */ + if (next && GET_CODE (next) == INSN + && prev_label (next_active_insn (next)) == target_label + && simplejump_p (insn) + && XVECLEN (pat, 0) == 2 + && rtx_equal_p (PATTERN (next), PATTERN (XVECEXP (pat, 0, 1)))) + { + delete_insn (insn); + continue; + } + /* See if this jump (with its delay slots) branches around another jump (without delay slots). If so, invert this jump and point it to the target of the second jump. We cannot do this for -- 2.30.2