From: Jeff Law Date: Fri, 1 Oct 1993 03:23:10 +0000 (-0600) Subject: reorg.c (optimize_skip): Do not thread a jump to a new target if doing so would inval... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0e5bad531b3ab78b6a4fd88e80db6232fe460107;p=gcc.git 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 --- 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;