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:
parent
ee3422cf45
commit
402f2db8e6
2 changed files with 24 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue