aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-09-30 16:21:49 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-09-30 16:21:49 +0000
commit7c3958812bd5e2e139c7f0adf8f03b505fda67f2 (patch)
treeebf2dbfac2d083425c627ba78e9bd582d4c515b5 /gcc
parentb21a62b6246d3344cf74c79965523e4f59db7459 (diff)
downloadgcc-7c3958812bd5e2e139c7f0adf8f03b505fda67f2.zip
gcc-7c3958812bd5e2e139c7f0adf8f03b505fda67f2.tar.gz
gcc-7c3958812bd5e2e139c7f0adf8f03b505fda67f2.tar.bz2
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 <richard.sandiford@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. From-SVN: r276338
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/hard-reg-set.h4
-rw-r--r--gcc/reginfo.c2
3 files changed, 14 insertions, 0 deletions
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 <richard.sandiford@arm.com>
+ * 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 <richard.sandiford@arm.com>
+
* 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;