This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[8/9] Hide call_used_regs in target-independent code
- From: Richard Sandiford <richard dot sandiford at arm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 10 Sep 2019 17:34:41 +0100
- Subject: [8/9] Hide call_used_regs in target-independent code
- References: <mptef0o3yoq.fsf@arm.com>
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.
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;