Commit 17b962bd by Nick Clifton Committed by Nick Clifton

rl78.c (rl78_attribute_table): Add naked.

	* 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.

From-SVN: r199001
parent b1a0f84e
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).
......
......@@ -499,6 +499,8 @@ const struct attribute_spec rl78_attribute_table[] =
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 }
};
......@@ -825,6 +827,12 @@ rl78_initial_elimination_offset (int from, int to)
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)
......@@ -833,6 +841,9 @@ 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 ();
......@@ -877,6 +888,9 @@ rl78_expand_epilogue (void)
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),
......
......@@ -3142,7 +3142,7 @@ and newer.
@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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment