re PR target/54029 (SH: ICE in find_dead_or_set_registers)
PR target/54029 * config/sh/sh.c (gen_far_branch): Set JUMP_LABEL for return jumps. From-SVN: r189652
This commit is contained in:
parent
95cbf8515a
commit
867ff7ed19
2 changed files with 17 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2012-07-19 Christian Bruel <christian.bruel@st.com>
|
||||
|
||||
PR target/54029
|
||||
* config/sh/sh.c (gen_far_branch): Set JUMP_LABEL for return jumps.
|
||||
|
||||
2012-07-19 Richard Guenther <rguenther@suse.de>
|
||||
Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
|
|
|
@ -5304,6 +5304,7 @@ gen_far_branch (struct far_branch *bp)
|
|||
}
|
||||
else
|
||||
jump = emit_jump_insn_after (gen_return (), insn);
|
||||
|
||||
/* Emit a barrier so that reorg knows that any following instructions
|
||||
are not reachable via a fall-through path.
|
||||
But don't do this when not optimizing, since we wouldn't suppress the
|
||||
|
@ -5312,10 +5313,19 @@ gen_far_branch (struct far_branch *bp)
|
|||
if (optimize)
|
||||
emit_barrier_after (jump);
|
||||
emit_label_after (bp->near_label, insn);
|
||||
JUMP_LABEL (jump) = bp->far_label;
|
||||
|
||||
if (bp->far_label)
|
||||
JUMP_LABEL (jump) = bp->far_label;
|
||||
else
|
||||
{
|
||||
rtx pat = PATTERN (jump);
|
||||
gcc_assert (ANY_RETURN_P (pat));
|
||||
JUMP_LABEL (jump) = pat;
|
||||
}
|
||||
|
||||
ok = invert_jump (insn, label, 1);
|
||||
gcc_assert (ok);
|
||||
|
||||
|
||||
/* If we are branching around a jump (rather than a return), prevent
|
||||
reorg from using an insn from the jump target as the delay slot insn -
|
||||
when reorg did this, it pessimized code (we rather hide the delay slot)
|
||||
|
|
Loading…
Add table
Reference in a new issue