From 0e5bad531b3ab78b6a4fd88e80db6232fe460107 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 30 Sep 1993 21:23:10 -0600 Subject: [PATCH] reorg.c (optimize_skip): Do not thread a jump to a new target if doing so would invalidate the insn in... * reorg.c (optimize_skip): Do not thread a jump to a new target if doing so would invalidate the insn in the jump's delay slot. From-SVN: r5540 --- gcc/reorg.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/reorg.c b/gcc/reorg.c index 341383dfd92..547cba98983 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -1157,7 +1157,14 @@ optimize_skip (insn) target_label = JUMP_LABEL (next_trial); if (target_label == 0) target_label = find_end_label (); - reorg_redirect_jump (insn, target_label); + + /* Recompute the flags based on TARGET_LABEL since threading + the jump to TARGET_LABEL may change the direction of the + jump (which may change the circumstances in which the + delay slot is nullified). */ + flags = get_jump_flags (insn, target_label); + if (eligible_for_annul_true (insn, 0, trial, flags)) + reorg_redirect_jump (insn, target_label); } INSN_ANNULLED_BRANCH_P (insn) = 1; -- 2.30.2