diff options
author | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-01 08:33:35 +0000 |
---|---|---|
committer | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-01 08:33:35 +0000 |
commit | 21cde6ec4fc9e4302410941e8c0a1c2d4af73fdd (patch) | |
tree | d97bbb87097291701d7e0bfa093b5efdac6110cc | |
parent | fe2de951b1669a22661733f2f4496f7bcf2f02f2 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/rx/rx-modes.def | 9 | ||||
-rw-r--r-- | gcc/config/rx/rx.c | 8 |
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. */ |