diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-09-10 18:57:03 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-09-10 18:57:03 +0000 |
commit | 53bee79caba4fb88acbcd9bad7891ea45b5511e3 (patch) | |
tree | 5d53be803911796260e5d0b9d669c7ca85e0cba7 /gcc | |
parent | 2e3d041b1328f123e60244df9e78f9c30e73462c (diff) | |
download | gcc-53bee79caba4fb88acbcd9bad7891ea45b5511e3.zip gcc-53bee79caba4fb88acbcd9bad7891ea45b5511e3.tar.gz gcc-53bee79caba4fb88acbcd9bad7891ea45b5511e3.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/hard-reg-set.h | 4 | ||||
-rw-r--r-- | gcc/reginfo.c | 3 |
3 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 86aa676..7c8c5c5 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 8fd787a..654e0d6 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 026a7bf..e860def 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; |