On 09.10.24 10:26, Richard Biener wrote:
On Wed, 9 Oct 2024, Richard Biener wrote:

On Tue, 8 Oct 2024, Frank Scheiner wrote:

With stage 3 of GCC 15 approaching, to save me some time by finally
dropping the non-LRA testcase from my cross builds of GCC and Linux and
as I had the time, I updated the patch set from René with the requested
changes and rebased it to 0ad2c76bea20dbeac753f10df6f9f86d142348d4.

Patch 1/2: Remove ia64*-*-linux from the list of obsolete targets
Patch 2/2: Enable LRA for ia64

LRA functionality was tested by bootstrapping GCC natively and running
the testsuite on ia64 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

A diff between them is attached.

Can this be brought forward now as is?

I'll push this for you.

I spoke too fast - something between you and me corrupts the patch
so it doesn't apply (even after manually resolving line-wrapping,
I suspect whitespace is also broken).  Can you re-send them as
attachments please?

Is it OK to attach them to my reply here or better with a v4?

If the latter, should the patches be attached to the cover letter and the numbering in the subject be removed then, as everything is included in one email?

Cheers,
Frank
From 0c6e038d25b377bf3a5efe5ab456643bf73be3f4 Mon Sep 17 00:00:00 2001
From: Frank Scheiner <frank.schei...@web.de>
Date: Wed, 12 Jun 2024 12:42:00 +0200
Subject: [PATCH 1/2] Remove ia64*-*-linux from the list of obsolete targets
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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

The following un-deprecates ia64*-*-linux for GCC 15. Since we plan to
support this for some years to come.

gcc/
        * config.gcc: Only list ia64*-*-(hpux|vms|elf) in the list of
          obsoleted targets.

contrib/
        * config-list.mk (LIST): no --enable-obsolete for ia64-linux.

Signed-off-by: René Rebe <r...@exactcode.de>
---
 contrib/config-list.mk | 2 +-
 gcc/config.gcc         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/contrib/config-list.mk b/contrib/config-list.mk
index f282cd95c..4ddb3eeab 100644
--- a/contrib/config-list.mk
+++ b/contrib/config-list.mk
@@ -61,7 +61,7 @@ LIST = \
   i686-rtems i686-solaris2.11 i686-wrs-vxworks \
   i686-wrs-vxworksae \
   i686-cygwinOPT-enable-threads=yes i686-mingw32crt ia64-elfOPT-enable-obsolete \
-  ia64-linuxOPT-enable-obsolete ia64-hpuxOPT-enable-obsolete \
+  ia64-linux ia64-hpuxOPT-enable-obsolete \
   ia64-hp-vmsOPT-enable-obsolete iq2000-elf lm32-elf \
   lm32-rtems lm32-uclinux \
   loongarch64-linux-gnuf64 loongarch64-linux-gnuf32 loongarch64-linux-gnusf \
diff --git a/gcc/config.gcc b/gcc/config.gcc
index f09ce9f63..71ac3bada 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -272,7 +272,7 @@ esac
 
 # Obsolete configurations.
 case ${target} in
-     ia64*-*-*				\
+     ia64*-*-hpux* | ia64*-*-*vms* | ia64*-*-elf*	\
    | nios2*-*-*				\
  )
     if test "x$enable_obsolete" != xyes; then
-- 
2.25.1

From cd331e11af3786ffaceb0269db4a9cf529ca95a1 Mon Sep 17 00:00:00 2001
From: Frank Scheiner <frank.schei...@web.de>
Date: Wed, 12 Jun 2024 12:42:00 +0200
Subject: [PATCH 2/2] Enable LRA for ia64
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: René Rebe <r...@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 <r...@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

Reply via email to