summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-01 08:33:35 +0000
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-01 08:33:35 +0000
commit21cde6ec4fc9e4302410941e8c0a1c2d4af73fdd (patch)
treed97bbb87097291701d7e0bfa093b5efdac6110cc
parentfe2de951b1669a22661733f2f4496f7bcf2f02f2 (diff)
downloadgcc-21cde6ec4fc9e4302410941e8c0a1c2d4af73fdd.tar.gz
* config/rx/rx.c (rx_expand_prologue): Do not adjust frame size
when pushing accumulator register. (rx_get_stack_layout): Always save call clobbered registers inside interrupt handlers. * config/rx/rx-modes.def: Fix descriptive comment at start of file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163720 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/rx/rx-modes.def9
-rw-r--r--gcc/config/rx/rx.c8
3 files changed, 16 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0c260f1ce67..3cb6f27bcd0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2010-09-01 Nick Clifton <nickc@redhat.com>
+
+ * config/rx/rx.c (rx_expand_prologue): Do not adjust frame size
+ when pushing accumulator register.
+ (rx_get_stack_layout): Always save call clobbered registers inside
+ interrupt handlers.
+ * config/rx/rx-modes.def: Fix descriptive comment at start of file.
+
2010-09-01 Uros Bizjak <ubizjak@gmail.com>
* config.gcc (i[34567]86-*-freebsd*, x86_64-*-freebsd*): Add
diff --git a/gcc/config/rx/rx-modes.def b/gcc/config/rx/rx-modes.def
index 5936b672b6b..0c4c192a265 100644
--- a/gcc/config/rx/rx-modes.def
+++ b/gcc/config/rx/rx-modes.def
@@ -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.
diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c
index 86d8ad48892..a5be690340d 100644
--- a/gcc/config/rx/rx.c
+++ b/gcc/config/rx/rx.c
@@ -1067,7 +1067,11 @@ rx_get_stack_layout (unsigned int * lowest,
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 @@ rx_expand_prologue (void)
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. */