[8/9] Hide call_used_regs in target-independent code
diff mbox series

Message ID mptef0o2jq6.fsf@arm.com
State New
Headers show
Series
  • Reduce the amount of global ABI state
Related show

Commit Message

Richard Sandiford Sept. 10, 2019, 4:34 p.m. UTC
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.

Comments

Jeff Law Sept. 10, 2019, 6:36 p.m. UTC | #1
On 9/10/19 10:34 AM, Richard Sandiford wrote:
> 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.
OK
jeff

Patch
diff mbox series

Index: gcc/hard-reg-set.h
===================================================================
--- gcc/hard-reg-set.h	2019-09-10 17:22:54.094353828 +0100
+++ gcc/hard-reg-set.h	2019-09-10 17:23:04.278282749 +0100
@@ -473,8 +473,10 @@  #define fixed_reg_set \
   (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 @@  #define REG_CAN_CHANGE_MODE_P(REGN, FROM
 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: gcc/reginfo.c
===================================================================
--- gcc/reginfo.c	2019-09-10 17:22:44.698419188 +0100
+++ gcc/reginfo.c	2019-09-10 17:23:04.278282749 +0100
@@ -66,6 +66,9 @@  struct target_hard_regs *this_target_har
 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;