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-11  Richard Sandiford  <richard.sandif...@arm.com>

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.

Index: gcc/hard-reg-set.h
===================================================================
--- gcc/hard-reg-set.h  2019-09-10 19:57:04.713041281 +0100
+++ gcc/hard-reg-set.h  2019-09-11 19:49:18.149461264 +0100
@@ -477,10 +477,12 @@ #define call_used_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 @@ #define reg_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 r
 {
   return fixed_regs[regno] || this_target_hard_regs->x_call_used_regs[regno];
 }
+#endif
 
 #endif /* ! GCC_HARD_REG_SET_H */
Index: gcc/reginfo.c
===================================================================
--- gcc/reginfo.c       2019-09-11 19:47:39.474156575 +0100
+++ gcc/reginfo.c       2019-09-11 19:49:18.149461264 +0100
@@ -69,6 +69,8 @@ struct target_regs *this_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;

Reply via email to