From 68afc7acf609be2b19ec05c8393c2ffc7f4adb4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Rebe?= <rene@exactcode.de> Date: Wed, 12 Jun 2024 12:42:00 +0200 Subject: [PATCH] Enable LRA for ia64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was tested by bootstrapping GCC natively on ia64-t2-linux-gnu and running the testsuite (based on 236116068151bbc72aaaf53d0f223fe06f7e3bac): https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817268.html For comparison, the same with just 236116068151bbc72aaaf53d0f223fe06f7e3bac: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817267.html gcc/ * config/ia64/ia64.cc: Enable LRA for ia64. * config/ia64/ia64.md: Likewise. * config/ia64/predicates.md: Likewise. Signed-off-by: René Rebe <rene@exactcode.de> --- gcc/config/ia64/ia64.cc | 7 ++----- gcc/config/ia64/ia64.md | 4 ++-- gcc/config/ia64/predicates.md | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc index cd6ed8952114..54706da33364 100644 --- a/gcc/config/ia64/ia64.cc +++ b/gcc/config/ia64/ia64.cc @@ -619,9 +619,6 @@ static const scoped_attribute_specs *const ia64_attribute_table[] = #undef TARGET_LEGITIMATE_ADDRESS_P #define TARGET_LEGITIMATE_ADDRESS_P ia64_legitimate_address_p -#undef TARGET_LRA_P -#define TARGET_LRA_P hook_bool_void_false - #undef TARGET_CANNOT_FORCE_CONST_MEM #define TARGET_CANNOT_FORCE_CONST_MEM ia64_cannot_force_const_mem @@ -1333,7 +1330,7 @@ ia64_expand_move (rtx op0, rtx op1) { machine_mode mode = GET_MODE (op0); - if (!reload_in_progress && !reload_completed && !ia64_move_ok (op0, op1)) + if (!lra_in_progress && !reload_completed && !ia64_move_ok (op0, op1)) op1 = force_reg (mode, op1); if ((mode == Pmode || mode == ptr_mode) && symbolic_operand (op1, VOIDmode)) @@ -1780,7 +1777,7 @@ ia64_expand_movxf_movrf (machine_mode mode, rtx operands[]) } } - if (!reload_in_progress && !reload_completed) + if (!lra_in_progress && !reload_completed) { operands[1] = spill_xfmode_rfmode_operand (operands[1], 0, mode); diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md index 698e302081e7..d485acc0ea86 100644 --- a/gcc/config/ia64/ia64.md +++ b/gcc/config/ia64/ia64.md @@ -2318,7 +2318,7 @@ (match_operand:DI 3 "register_operand" "f")) (match_operand:DI 4 "nonmemory_operand" "rI"))) (clobber (match_scratch:DI 5 "=f"))] - "reload_in_progress" + "lra_in_progress" "#" [(set_attr "itanium_class" "unknown")]) @@ -3407,7 +3407,7 @@ (match_operand:DI 2 "shladd_operand" "n")) (match_operand:DI 3 "nonmemory_operand" "r")) (match_operand:DI 4 "nonmemory_operand" "rI")))] - "reload_in_progress" + "lra_in_progress" "* gcc_unreachable ();" "reload_completed" [(set (match_dup 0) (plus:DI (mult:DI (match_dup 1) (match_dup 2)) diff --git a/gcc/config/ia64/predicates.md b/gcc/config/ia64/predicates.md index 01a4effd3396..85f5380e7344 100644 --- a/gcc/config/ia64/predicates.md +++ b/gcc/config/ia64/predicates.md @@ -347,7 +347,7 @@ allows reload the opportunity to avoid spilling addresses to the stack, and instead simply substitute in the value from a REG_EQUIV. We'll split this up again when splitting the insn. */ - if (reload_in_progress || reload_completed) + if (lra_in_progress || reload_completed) return true; /* Some symbol types we allow to use with any offset. */ -- GitLab