OSDN Git Service

m32r.h (CONDITIONAL_REGISTER_USAGE): Don't exclude fixed registers form
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 8 Oct 2004 08:21:38 +0000 (08:21 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 8 Oct 2004 08:21:38 +0000 (08:21 +0000)
  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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88737 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/m32r/m32r.c
gcc/config/m32r/m32r.h

index 4d4cfda..2906982 100644 (file)
@@ -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
index 9e3404a..b562156 100644 (file)
@@ -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)
index 9befbee..d5aa56b 100644 (file)
@@ -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