diff options
author | Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com> | 2004-10-08 08:21:38 +0000 |
---|---|---|
committer | Nick Clifton <nickc@gcc.gnu.org> | 2004-10-08 08:21:38 +0000 |
commit | 69a53ee8f01b64ab6f03b63cc1cd89735032f3d7 (patch) | |
tree | 39be96cf3bf1b4d8b0b7bed3e15072d7e7c2e75f /gcc | |
parent | 29ef89522ea2a45358c6474964cc834a760f11b9 (diff) | |
download | gcc-69a53ee8f01b64ab6f03b63cc1cd89735032f3d7.zip gcc-69a53ee8f01b64ab6f03b63cc1cd89735032f3d7.tar.gz gcc-69a53ee8f01b64ab6f03b63cc1cd89735032f3d7.tar.bz2 |
m32r.h (CONDITIONAL_REGISTER_USAGE): Don't exclude fixed registers form all_used_regs.
m32r.h (CONDITIONAL_REGISTER_USAGE): Don't exclude fixed registers form
all_used_regs. Update call_really_used_regs.
(CALL_REALLY_USED_REGISTERS): Define.
m32r.c (MUST_SAVE_REGISTER): Replace call_used_regs with call_really_used_regs.
From-SVN: r88737
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/m32r/m32r.c | 4 | ||||
-rw-r--r-- | gcc/config/m32r/m32r.h | 7 |
3 files changed, 16 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d4cfda..2906982 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-10-08 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com> + + * config/m32r/m32r.h (CONDITIONAL_REGISTER_USAGE): Don't exclude + fixed registers form all_used_regs. Update call_really_used_regs. + (CALL_REALLY_USED_REGISTERS): Define. + * config/m32r/m32r.c (MUST_SAVE_REGISTER): Replace call_used_regs + with call_really_used_regs. + 2004-10-08 Alan Modra <amodra@bigpond.net.au> * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Choose gcrt1.o diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c index 9e3404a..b562156 100644 --- a/gcc/config/m32r/m32r.c +++ b/gcc/config/m32r/m32r.c @@ -1591,8 +1591,8 @@ static struct m32r_frame_info zero_frame_info; The return address and frame pointer are treated separately. Don't consider them here. */ #define MUST_SAVE_REGISTER(regno, interrupt_p) \ -((regno) != RETURN_ADDR_REGNUM && (regno) != FRAME_POINTER_REGNUM \ - && (regs_ever_live[regno] && (!call_used_regs[regno] || interrupt_p))) + ((regno) != RETURN_ADDR_REGNUM && (regno) != FRAME_POINTER_REGNUM \ + && (regs_ever_live[regno] && (!call_really_used_regs[regno] || interrupt_p))) #define MUST_SAVE_FRAME_POINTER (regs_ever_live[FRAME_POINTER_REGNUM]) #define MUST_SAVE_RETURN_ADDR (regs_ever_live[RETURN_ADDR_REGNUM] || current_function_profile) diff --git a/gcc/config/m32r/m32r.h b/gcc/config/m32r/m32r.h index 9befbee..d5aa56b 100644 --- a/gcc/config/m32r/m32r.h +++ b/gcc/config/m32r/m32r.h @@ -633,6 +633,8 @@ extern enum m32r_sdata m32r_sdata; SUBTARGET_CALL_USED_REGISTERS \ } +#define CALL_REALLY_USED_REGISTERS CALL_USED_REGISTERS + /* Zero or more C statements that may conditionally modify two variables `fixed_regs' and `call_used_regs' (both of type `char []') after they have been initialized from the two preceding macros. @@ -649,7 +651,10 @@ extern enum m32r_sdata m32r_sdata; do \ { \ if (flag_pic) \ - fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \ + { \ + fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \ + call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1; \ + } \ } \ while (0) #endif |