From 402f2db8e6a58496c57a602609eddda363304833 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Wed, 16 Sep 2009 18:18:30 -0400 Subject: 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 --- gcc/config/m32c/m32c.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'gcc/config/m32c/m32c.c') diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c index ae4c897..1bf3d1b 100644 --- a/gcc/config/m32c/m32c.c +++ b/gcc/config/m32c/m32c.c @@ -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, + "% attribute directive ignored"); + emit_jump_insn (gen_epilogue_reit_16 ()); + } + } else if (TARGET_A16) emit_jump_insn (gen_epilogue_reit_16 ()); else -- cgit v1.1