PR target/35190
* config/sh/sh.md (jump_compact): Disable for crossing jumps.
* config/sh/sh.c (find_barrier): Don't go past
NOTE_INSN_SWITCH_TEXT_SECTIONS note.
From-SVN: r132502
+2008-02-20 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/35190
+ * config/sh/sh.md (jump_compact): Disable for crossing jumps.
+
+ * config/sh/sh.c (find_barrier): Don't go past
+ NOTE_INSN_SWITCH_TEXT_SECTIONS note.
+
2008-02-20 DJ Delorie <dj@redhat.com>
* config/h8300/h8300.md (insv): Force source operand to be a register.
if (GET_CODE (from) == BARRIER)
{
+ rtx next;
found_barrier = from;
this kind of barrier. */
if (barrier_align (from) > 2)
good_barrier = from;
+
+ /* If we are at the end of a hot/cold block, dump the constants
+ here. */
+ next = NEXT_INSN (from);
+ if (next
+ && NOTE_P (next)
+ && NOTE_KIND (next) == NOTE_INSN_SWITCH_TEXT_SECTIONS)
+ break;
}
if (broken_move (from))
(define_insn "jump_compact"
[(set (pc)
(label_ref (match_operand 0 "" "")))]
- "TARGET_SH1"
+ "TARGET_SH1 && !find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)"
"*
{
/* The length is 16 if the delay slot is unfilled. */