From 7c3958812bd5e2e139c7f0adf8f03b505fda67f2 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Mon, 30 Sep 2019 16:21:49 +0000 Subject: [PATCH] Hide regs_invalidated_by_call etc. The previous patches removed all target-independent uses of regs_invalidated_by_call, call_used_or_fixed_regs and call_used_or_fixed_reg_p. This patch therefore restricts them to target-specific code (and reginfo.c, which sets them up). 2019-09-30 Richard Sandiford gcc/ * hard-reg-set.h (regs_invalidated_by_call): Only define if IN_TARGET_CODE. (call_used_or_fixed_regs): Likewise. (call_used_or_fixed_reg_p): Likewise. * reginfo.c (regs_invalidated_by_call): New macro. From-SVN: r276338 --- gcc/ChangeLog | 8 ++++++++ gcc/hard-reg-set.h | 4 ++++ gcc/reginfo.c | 2 ++ 3 files changed, 14 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c47da4c..00a1731 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2019-09-30 Richard Sandiford + * hard-reg-set.h (regs_invalidated_by_call): Only define if + IN_TARGET_CODE. + (call_used_or_fixed_regs): Likewise. + (call_used_or_fixed_reg_p): Likewise. + * reginfo.c (regs_invalidated_by_call): New macro. + +2019-09-30 Richard Sandiford + * shrink-wrap.c: Include function-abi.h. (requires_stack_frame_p): Use crtl->abi to test whether the current function can use a register without saving it first. diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h index a54c167..6e7ceab 100644 --- a/gcc/hard-reg-set.h +++ b/gcc/hard-reg-set.h @@ -477,10 +477,12 @@ extern struct target_hard_regs *this_target_hard_regs; #endif #define savable_regs \ (this_target_hard_regs->x_savable_regs) +#ifdef IN_TARGET_CODE #define regs_invalidated_by_call \ (this_target_hard_regs->x_regs_invalidated_by_call) #define call_used_or_fixed_regs \ (regs_invalidated_by_call | fixed_reg_set) +#endif #define reg_alloc_order \ (this_target_hard_regs->x_reg_alloc_order) #define inv_reg_alloc_order \ @@ -509,6 +511,7 @@ extern const char * reg_class_names[]; #define REG_CAN_CHANGE_MODE_P(REGN, FROM, TO) \ (targetm.can_change_mode_class (FROM, TO, REGNO_REG_CLASS (REGN))) +#ifdef IN_TARGET_CODE /* Return true if register REGNO is either fixed or call-used (aka call-clobbered). */ @@ -517,5 +520,6 @@ call_used_or_fixed_reg_p (unsigned int regno) { return fixed_regs[regno] || this_target_hard_regs->x_call_used_regs[regno]; } +#endif #endif /* ! GCC_HARD_REG_SET_H */ diff --git a/gcc/reginfo.c b/gcc/reginfo.c index 265157f..791c7a0 100644 --- a/gcc/reginfo.c +++ b/gcc/reginfo.c @@ -69,6 +69,8 @@ struct target_regs *this_target_regs = &default_target_regs; #define call_used_regs \ (this_target_hard_regs->x_call_used_regs) +#define regs_invalidated_by_call \ + (this_target_hard_regs->x_regs_invalidated_by_call) /* Data for initializing fixed_regs. */ static const char initial_fixed_regs[] = FIXED_REGISTERS; -- 2.7.4