[PATCH v3 2/2] Enable LRA for ia64

Frank Scheiner frank.scheiner@web.de
Tue Oct 8 19:16:14 GMT 2024


From: René Rebe <rene@exactcode.de>

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 cd6ed8952..54706da33 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 698e30208..d485acc0e 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 01a4effd3..85f5380e7 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.  */
-- 
2.25.1




More information about the Gcc-patches mailing list