Commit d7862be3 by Nick Clifton Committed by Nick Clifton

rx.c (rx_get_stack_layout): Only save call clobbered registers inside interrupt handlers if...

	* config/rx/rx.c (rx_get_stack_layout): Only save call clobbered
	registers inside interrupt handlers if the handler is not a leaf
	function.

From-SVN: r169434
parent 171bbfd2
2011-01-31 Nick Clifton <nickc@redhat.com> 2011-01-31 Nick Clifton <nickc@redhat.com>
* config/rx/rx.c (rx_get_stack_layout): Only save call clobbered
registers inside interrupt handlers if the handler is not a leaf
function.
2011-01-31 Nick Clifton <nickc@redhat.com>
* config/mn10300/mn10300.c (mn10300_regno_in_class_p): Check for * config/mn10300/mn10300.c (mn10300_regno_in_class_p): Check for
reg_renumber returning an INVALID_REGNUM. reg_renumber returning an INVALID_REGNUM.
......
...@@ -1137,10 +1137,12 @@ rx_get_stack_layout (unsigned int * lowest, ...@@ -1137,10 +1137,12 @@ rx_get_stack_layout (unsigned int * lowest,
for (save_mask = high = low = 0, reg = 1; reg < CC_REGNUM; reg++) for (save_mask = high = low = 0, reg = 1; reg < CC_REGNUM; reg++)
{ {
if ((df_regs_ever_live_p (reg) if ((df_regs_ever_live_p (reg)
/* Always save all call clobbered registers inside interrupt /* Always save all call clobbered registers inside non-leaf
handlers, even if they are not live - they may be used in interrupt handlers, even if they are not live - they may
routines called from this one. */ be used in (non-interrupt aware) routines called from this one. */
|| (call_used_regs[reg] && is_interrupt_func (NULL_TREE))) || (call_used_regs[reg]
&& is_interrupt_func (NULL_TREE)
&& ! current_function_is_leaf))
&& (! call_used_regs[reg] && (! call_used_regs[reg]
/* Even call clobbered registered must /* Even call clobbered registered must
be pushed inside interrupt handlers. */ be pushed inside interrupt handlers. */
......
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