diff options
author | Dimitar Dimitrov <dimitar@dinux.eu> | 2019-09-15 18:01:22 +0300 |
---|---|---|
committer | Dimitar Dimitrov <dimitar@dinux.eu> | 2020-05-05 20:42:57 +0300 |
commit | 1ea8de4c8c23791c2c1ca231cc3461a4a9fc1efb (patch) | |
tree | 1507f675645916d8a880dba266cf890a7bed5422 | |
parent | 931dfb70abce3d979b8fa81e3b7c7dfcfecb0cd4 (diff) | |
download | gcc-1ea8de4c8c23791c2c1ca231cc3461a4a9fc1efb.zip gcc-1ea8de4c8c23791c2c1ca231cc3461a4a9fc1efb.tar.gz gcc-1ea8de4c8c23791c2c1ca231cc3461a4a9fc1efb.tar.bz2 |
PRU: Remove TARGET_HARD_REGNO_CALL_PART_CLOBBERED
Per clarification in [1], macro is supposed to check for partial
clobbering of single HW registers. Since PRU declares only 8-bit
HW registers, and ABI does not define individual bit clobbering,
it is safe to remove the implementation.
[1] https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00778.html
gcc/ChangeLog:
2020-05-05 Dimitar Dimitrov <dimitar@dinux.eu>
* config/pru/pru.c (pru_hard_regno_call_part_clobbered): Remove.
(TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Remove.
Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/pru/pru.c | 34 |
2 files changed, 5 insertions, 34 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b3c8b73..6b4d53d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2020-05-05 Dimitar Dimitrov <dimitar@dinux.eu> + * config/pru/pru.c (pru_hard_regno_call_part_clobbered): Remove. + (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Remove. + +2020-05-05 Dimitar Dimitrov <dimitar@dinux.eu> + * config/pru/pru.h: Mark R3.w0 as caller saved. 2020-05-05 Dimitar Dimitrov <dimitar@dinux.eu> diff --git a/gcc/config/pru/pru.c b/gcc/config/pru/pru.c index 45b18ed..a715f6b 100644 --- a/gcc/config/pru/pru.c +++ b/gcc/config/pru/pru.c @@ -556,37 +556,6 @@ pru_hard_regno_scratch_ok (unsigned int regno) } -/* Implement TARGET_HARD_REGNO_CALL_PART_CLOBBERED. */ - -static bool -pru_hard_regno_call_part_clobbered (unsigned, unsigned regno, - machine_mode mode) -{ - HARD_REG_SET caller_saved_set; - HARD_REG_SET callee_saved_set; - - CLEAR_HARD_REG_SET (caller_saved_set); - CLEAR_HARD_REG_SET (callee_saved_set); - - /* r0 and r1 are caller saved. */ - add_range_to_hard_reg_set (&caller_saved_set, 0, 2 * 4); - - add_range_to_hard_reg_set (&caller_saved_set, FIRST_ARG_REGNUM, - LAST_ARG_REGNUM + 1 - FIRST_ARG_REGNUM); - - /* Treat SP as callee saved. */ - add_range_to_hard_reg_set (&callee_saved_set, STACK_POINTER_REGNUM, 4); - - /* r3 to r13 are callee saved. */ - add_range_to_hard_reg_set (&callee_saved_set, FIRST_CALLEE_SAVED_REGNUM, - LAST_CALEE_SAVED_REGNUM + 1 - - FIRST_CALLEE_SAVED_REGNUM); - - return overlaps_hard_reg_set_p (caller_saved_set, mode, regno) - && overlaps_hard_reg_set_p (callee_saved_set, mode, regno); -} - - /* Worker function for `HARD_REGNO_RENAME_OK'. Return nonzero if register OLD_REG can be renamed to register NEW_REG. */ @@ -2935,9 +2904,6 @@ pru_unwind_word_mode (void) #undef TARGET_HARD_REGNO_SCRATCH_OK #define TARGET_HARD_REGNO_SCRATCH_OK pru_hard_regno_scratch_ok -#undef TARGET_HARD_REGNO_CALL_PART_CLOBBERED -#define TARGET_HARD_REGNO_CALL_PART_CLOBBERED \ - pru_hard_regno_call_part_clobbered #undef TARGET_FUNCTION_ARG #define TARGET_FUNCTION_ARG pru_function_arg |