+2013-05-16 Nick Clifton <nickc@redhat.com>
+
+ * config/rl78/rl78.c (rl78_attribute_table): Add naked.
+ (rl78_is_naked_func): New function.
+ (rl78_expand_prologue): Skip prologue generation for naked
+ functions.
+ (rl78_expand_epilogue): Skip epilogue generation for naked
+ functions.
+ * doc/extend.texi (naked): Add RL78 to the list of processors
+ that supports this attribute.
+
2013-05-16 Jeff Law <law@redhat.com>
* Makefile.in (tree-switch-conversion.o): Depend on $(OPTABS_H).
false },
{ "brk_interrupt", 0, 0, true, false, false, rl78_handle_func_attribute,
false },
+ { "naked", 0, 0, true, false, false, rl78_handle_func_attribute,
+ false },
{ NULL, 0, 0, false, false, false, NULL, false }
};
return rv;
}
+static int
+rl78_is_naked_func (void)
+{
+ return (lookup_attribute ("naked", DECL_ATTRIBUTES (current_function_decl)) != NULL_TREE);
+}
+
/* Expand the function prologue (from the prologue pattern). */
void
rl78_expand_prologue (void)
rtx sp = gen_rtx_REG (HImode, STACK_POINTER_REGNUM);
int rb = 0;
+ if (rl78_is_naked_func ())
+ return;
+
if (!cfun->machine->computed)
rl78_compute_frame_info ();
rtx sp = gen_rtx_REG (HImode, STACK_POINTER_REGNUM);
int rb = 0;
+ if (rl78_is_naked_func ())
+ return;
+
if (frame_pointer_needed)
{
emit_move_insn (gen_rtx_REG (HImode, STACK_POINTER_REGNUM),
@item naked
@cindex function without a prologue/epilogue code
-Use this attribute on the ARM, AVR, MCORE, RX and SPU ports to indicate that
+Use this attribute on the ARM, AVR, MCORE, RL78, RX and SPU ports to indicate that
the specified function does not need prologue/epilogue sequences generated by
the compiler. It is up to the programmer to provide these sequences. The
only statements that can be safely included in naked functions are