m32c.c (m32c_emit_epilogue): Check for R8C or M16C chip and ignore the "fast_interrupt" attribute if so.

* config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
chip and ignore the "fast_interrupt" attribute if so.

From-SVN: r151780
This commit is contained in:
DJ Delorie 2009-09-16 18:18:30 -04:00 committed by DJ Delorie
parent ee3422cf45
commit 402f2db8e6
2 changed files with 24 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2009-09-16 DJ Delorie <dj@redhat.com>
* config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
chip and ignore the "fast_interrupt" attribute if so.
2009-09-16 Richard Henderson <rth@redhat.com>
PR middle-end/41360

View file

@ -4052,8 +4052,26 @@ m32c_emit_epilogue (void)
if (!bank_switch_p (cfun->decl) && cfun->machine->intr_pushm)
emit_insn (gen_popm (GEN_INT (cfun->machine->intr_pushm)));
/* The FREIT (Fast REturn from InTerrupt) instruction should be
generated only for M32C/M32CM targets (generate the REIT
instruction otherwise). */
if (fast_interrupt_p (cfun->decl))
emit_jump_insn (gen_epilogue_freit ());
{
/* Check if fast_attribute is set for M32C or M32CM. */
if (TARGET_A24)
{
emit_jump_insn (gen_epilogue_freit ());
}
/* If fast_interrupt attribute is set for an R8C or M16C
target ignore this attribute and generated REIT
instruction. */
else
{
warning (OPT_Wattributes,
"%<fast_interrupt%> attribute directive ignored");
emit_jump_insn (gen_epilogue_reit_16 ());
}
}
else if (TARGET_A16)
emit_jump_insn (gen_epilogue_reit_16 ());
else