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.sandif...@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;