summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-09-10 18:57:03 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-09-10 18:57:03 +0000
commit53bee79caba4fb88acbcd9bad7891ea45b5511e3 (patch)
tree5d53be803911796260e5d0b9d669c7ca85e0cba7
parent2e3d041b1328f123e60244df9e78f9c30e73462c (diff)
Hide call_used_regs in target-independent code
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. From-SVN: r275604
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/hard-reg-set.h4
-rw-r--r--gcc/reginfo.c3
3 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 86aa6768897..7c8c5c500cb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
+ * 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.
+
+2019-09-10 Richard Sandiford <richard.sandiford@arm.com>
+
* config/alpha/alpha.c (alpha_compute_frame_layout): Remove redundant
fixed_regs test.
* config/bpf/bpf.c (bpf_compute_frame_layout, bpf_expand_prologue)
diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h
index 8fd787a516c..654e0d68577 100644
--- a/gcc/hard-reg-set.h
+++ b/gcc/hard-reg-set.h
@@ -473,8 +473,10 @@ extern struct target_hard_regs *this_target_hard_regs;
(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 @@ extern const char * reg_class_names[];
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 */
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index 026a7bfff74..e860def557f 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -66,6 +66,9 @@ struct target_hard_regs *this_target_hard_regs = &default_target_hard_regs;
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;