aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKazuhiro Inaoka <inaoka.kazuhiro@renesas.com>2004-10-08 08:21:38 +0000
committerNick Clifton <nickc@gcc.gnu.org>2004-10-08 08:21:38 +0000
commit69a53ee8f01b64ab6f03b63cc1cd89735032f3d7 (patch)
tree39be96cf3bf1b4d8b0b7bed3e15072d7e7c2e75f /gcc
parent29ef89522ea2a45358c6474964cc834a760f11b9 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config/m32r/m32r.c4
-rw-r--r--gcc/config/m32r/m32r.h7
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