aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitar Dimitrov <dimitar@dinux.eu>2019-09-15 18:01:22 +0300
committerDimitar Dimitrov <dimitar@dinux.eu>2020-05-05 20:42:57 +0300
commit1ea8de4c8c23791c2c1ca231cc3461a4a9fc1efb (patch)
tree1507f675645916d8a880dba266cf890a7bed5422
parent931dfb70abce3d979b8fa81e3b7c7dfcfecb0cd4 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/pru/pru.c34
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