===================================================================
@@ -1067,7 +1067,11 @@
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
+ handlers, even if they are not live - they may be used in
+ routines called from this one. */
+ || (call_used_regs[reg] && is_interrupt_func (NULL_TREE)))
&& (! call_used_regs[reg]
/* Even call clobbered registered must
be pushed inside interrupt handlers. */
@@ -1307,8 +1311,6 @@
emit_insn (gen_stack_pushm (GEN_INT (2 * UNITS_PER_WORD),
gen_rx_store_vector (acc_low, acc_high)));
}
-
- frame_size += 2 * UNITS_PER_WORD;
}
/* If needed, set up the frame pointer. */
===================================================================
@@ -1,9 +1,6 @@
-/* Definitions of target machine for GNU compiler, for ARM.
- Copyright (C) 2002, 2004, 2007 Free Software Foundation, Inc.
- Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
- and Martin Simmons (@harleqn.co.uk).
- More major hacks by Richard Earnshaw (rearnsha@arm.com)
- Minor hacks by Nick Clifton (nickc@cygnus.com)
+/* Definitions of target specific machine modes for the RX.
+ Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+ Contributed by Red Hat.
This file is part of GCC.