rs6000.h (CALL_REALLY_USED_REGISTERS): New.
authorAldy Hernandez <aldyh@redhat.com>
Fri, 30 Nov 2001 21:21:32 +0000 (21:21 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Fri, 30 Nov 2001 21:21:32 +0000 (21:21 +0000)
2001-11-30  Aldy Hernandez  <aldyh@redhat.com>

        * rs6000.h (CALL_REALLY_USED_REGISTERS): New.
        (CONDITIONAL_REGISTER_USAGE): Set call_really_used_registers to
        the values in call_used_registers.

From-SVN: r47493

gcc/ChangeLog
gcc/config/rs6000/rs6000.h

index 9a471c6473172dd613e2a9e989b7c151663a49d3..177e62a7402f0c0ebc8a84a91dc2bc4b01679edc 100644 (file)
@@ -1,3 +1,9 @@
+2001-11-30  Aldy Hernandez  <aldyh@redhat.com>
+
+        * config/rs6000/rs6000.h (CALL_REALLY_USED_REGISTERS): New.
+        (CONDITIONAL_REGISTER_USAGE): Set call_really_used_registers to
+        the values in call_used_registers.
+
 Fri Nov 30 12:48:26 2001  Jeffrey A Law  (law@cygnus.com)
 
        * gthr-dce.h: If _DCE_THREADS is not defined, then just include
index d17ce87a221b35c48df8b36897760e0715fbd327..70a4ec98c2970c70e94a6a0fe2fbbc599959f0ec 100644 (file)
@@ -725,6 +725,23 @@ extern int rs6000_debug_arg;               /* debug argument handling */
    1                                              \
 }
 
+/* Like `CALL_USED_REGISTERS' except this macro doesn't require that
+   the entire set of `FIXED_REGISTERS' be included.
+   (`CALL_USED_REGISTERS' must be a superset of `FIXED_REGISTERS').
+   This macro is optional.  If not specified, it defaults to the value
+   of `CALL_USED_REGISTERS'.  */
+                      
+#define CALL_REALLY_USED_REGISTERS  \
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, FIXED_R13, 0, 0, \
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, \
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+   1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,         \
+   /* AltiVec registers.  */                      \
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+   0                                              \
+}
 
 #define MQ_REGNO     64
 #define CR0_REGNO    68
@@ -928,23 +945,27 @@ extern int rs6000_debug_arg;              /* debug argument handling */
   if (! TARGET_POWER)                                                  \
     fixed_regs[64] = 1;                                                        \
   if (TARGET_64BIT)                                                    \
-    fixed_regs[13] = call_used_regs[13] = 1;                           \
+    fixed_regs[13] = call_used_regs[13]                                        \
+      = call_really_used_regs[13] = 1;                                         \
   if (TARGET_SOFT_FLOAT)                                               \
     for (i = 32; i < 64; i++)                                          \
-      fixed_regs[i] = call_used_regs[i] = 1;                           \
+      fixed_regs[i] = call_used_regs[i]                                        \
+        = call_really_used_regs[i] = 1;                                        \
   if (DEFAULT_ABI == ABI_V4 && flag_pic == 1)                          \
     fixed_regs[PIC_OFFSET_TABLE_REGNUM]                                        \
-      = call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;                   \
+      = call_used_regs[PIC_OFFSET_TABLE_REGNUM]                                \
+      = call_really_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;            \
   if (DEFAULT_ABI == ABI_DARWIN && flag_pic)                           \
     global_regs[PIC_OFFSET_TABLE_REGNUM]                               \
       = fixed_regs[PIC_OFFSET_TABLE_REGNUM]                            \
-        = call_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;                 \
+      = call_used_regs[PIC_OFFSET_TABLE_REGNUM]                                \
+      = call_really_used_regs[PIC_OFFSET_TABLE_REGNUM] = 1;            \
   if (! TARGET_ALTIVEC)                                                        \
     for (i = FIRST_ALTIVEC_REGNO; i <= LAST_ALTIVEC_REGNO; ++i)                \
-      fixed_regs[i] = call_used_regs[i] = 1;                           \
+      fixed_regs[i] = call_used_regs[i] = call_really_used_regs[i] = 1;        \
   if (TARGET_ALTIVEC_ABI)                                              \
     for (i = FIRST_ALTIVEC_REGNO; i < FIRST_ALTIVEC_REGNO + 20; ++i)   \
-      call_used_regs[i] = 1;                                           \
+      call_used_regs[i] = call_really_used_regs[i] = 1;                        \
 }
 
 /* Specify the registers used for certain standard purposes.