Hide call_used_regs in target-independent code
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 10 Sep 2019 18:57:03 +0000 (18:57 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 10 Sep 2019 18:57:03 +0000 (18:57 +0000)
Now that tests of call_used_regs go through call_used_or_fixed_reg_p,
we can hide call_used_regs from target-independent code.  (It still
needs to be available to targets for the conditional register usage
hooks.)

2019-09-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* hard-reg-set.h (call_used_regs): Only define if IN_TARGET_CODE.
(call_used_or_fixed_reg_p): Expand definition of call_used_regs.
* reginfo.c (call_used_regs): New macro.

From-SVN: r275604

gcc/ChangeLog
gcc/hard-reg-set.h
gcc/reginfo.c

index 86aa67688979d921ad75900d1faa91b5b7f9d2af..7c8c5c500cb7caf449f82966882683d42782670f 100644 (file)
@@ -1,3 +1,9 @@
+2019-09-10  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * hard-reg-set.h (call_used_regs): Only define if IN_TARGET_CODE.
+       (call_used_or_fixed_reg_p): Expand definition of call_used_regs.
+       * reginfo.c (call_used_regs): New macro.
+
 2019-09-10  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/alpha/alpha.c (alpha_compute_frame_layout): Remove redundant
index 8fd787a516c1b1872e9768355b0253300b227780..654e0d68577a4bcd9f95b43e425fb9d143ee5809 100644 (file)
@@ -473,8 +473,10 @@ extern struct target_hard_regs *this_target_hard_regs;
   (this_target_hard_regs->x_fixed_reg_set)
 #define fixed_nonglobal_reg_set \
   (this_target_hard_regs->x_fixed_nonglobal_reg_set)
+#ifdef IN_TARGET_CODE
 #define call_used_regs \
   (this_target_hard_regs->x_call_used_regs)
+#endif
 #define call_really_used_regs \
   (this_target_hard_regs->x_call_really_used_regs)
 #define savable_regs \
@@ -517,7 +519,7 @@ extern const char * reg_class_names[];
 inline bool
 call_used_or_fixed_reg_p (unsigned int regno)
 {
-  return fixed_regs[regno] || call_used_regs[regno];
+  return fixed_regs[regno] || this_target_hard_regs->x_call_used_regs[regno];
 }
 
 #endif /* ! GCC_HARD_REG_SET_H */
index 026a7bfff749a7b001a508a8e5ea1498b5657012..e860def557ffc7b00e233f0e9c390a0e2bfe21a2 100644 (file)
@@ -66,6 +66,9 @@ struct target_hard_regs *this_target_hard_regs = &default_target_hard_regs;
 struct target_regs *this_target_regs = &default_target_regs;
 #endif
 
+#define call_used_regs \
+  (this_target_hard_regs->x_call_used_regs)
+
 /* Data for initializing fixed_regs.  */
 static const char initial_fixed_regs[] = FIXED_REGISTERS;