On 2026-06-29 15:38, Richard Earnshaw (foss) wrote:
On 29/06/2026 07:35, Torbjörn SVENSSON wrote:
Ok for trunk?

Is there any risk that r17-1602-ga5ab19d9db2d13 is to be picked to 
releases/gcc-16?

I wouldn't expect it to be - it's a new optimization, thus doesn't meet the 
criteria for a backport.

Ok.

BTW, quoting patches this way is accurate, but generally unhelpful since I 
don't cache hashes in my brain.  A link to the relevant email in the archives 
is generally preferable.

Okay, I thought it was easier than a link to a mail, but okay. I'll post the 
link in the future.


If so, I think this patch should be picked for releases/gcc-16 now to avoid the 
failures later on.
AFAICT, there should be no harm in changing noinline to noipa with or without 
the r17-1602-ga5ab19d9db2d13 change.

Kind regards,
Torbjörn

--

Since r17-1602-ga5ab19d9db2d13, the tests starts to fail due to that
GCC thinks it can optimize away the function. With `noipa`, the function
is preserved.

gcc/testsuite/ChangeLog:

        * gcc.target/arm/long-calls-1.c: Change to `noipa` to prevent
        optimizing away the functions.
        * gcc.target/arm/long-calls-2.c: Likewise.
        * gcc.target/arm/long-calls-3.c: Likewise.
        * gcc.target/arm/long-calls-4.c: Likewise.

OK.

Pushed as r17-1976-g822ffdda4630d7.

Kind regards,
Torbjörn


R.>
Signed-off-by: Torbjörn SVENSSON <[email protected]>
---
  gcc/testsuite/gcc.target/arm/long-calls-1.c | 6 +++---
  gcc/testsuite/gcc.target/arm/long-calls-2.c | 6 +++---
  gcc/testsuite/gcc.target/arm/long-calls-3.c | 6 +++---
  gcc/testsuite/gcc.target/arm/long-calls-4.c | 6 +++---
  4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/gcc/testsuite/gcc.target/arm/long-calls-1.c 
b/gcc/testsuite/gcc.target/arm/long-calls-1.c
index f10f10606a6..7b2933734bf 100644
--- a/gcc/testsuite/gcc.target/arm/long-calls-1.c
+++ b/gcc/testsuite/gcc.target/arm/long-calls-1.c
@@ -6,7 +6,7 @@
#define section(S) __attribute__((section(S)))
  #define weak __attribute__((weak))
-#define noinline __attribute__((noinline))
+#define noipa __attribute__((noipa))
  #define long_call __attribute__((long_call))
  #define short_call __attribute__((short_call))
@@ -15,12 +15,12 @@
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }
#define EXTERN_CALL(ID, TARGET_ATTRS, CALL_ATTRS) \
-  const char *TARGET_ATTRS noinline ID (void) { return #ID; }          \
+  const char *TARGET_ATTRS noipa ID (void) { return #ID; }             \
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }               
\
    const char *CALL_ATTRS sibcall_##ID (void) { return ID (); }
#define STATIC_CALL(ID, TARGET_ATTRS, CALL_ATTRS) \
-  static const char *TARGET_ATTRS noinline ID (void) { return #ID; }   \
+  static const char *TARGET_ATTRS noipa ID (void) { return #ID; }      \
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }               
\
    const char *CALL_ATTRS sibcall_##ID (void) { return ID (); }
diff --git a/gcc/testsuite/gcc.target/arm/long-calls-2.c b/gcc/testsuite/gcc.target/arm/long-calls-2.c
index 8ce2404c1f7..97aa41a0137 100644
--- a/gcc/testsuite/gcc.target/arm/long-calls-2.c
+++ b/gcc/testsuite/gcc.target/arm/long-calls-2.c
@@ -4,7 +4,7 @@
#define section(S) __attribute__((section(S)))
  #define weak __attribute__((weak))
-#define noinline __attribute__((noinline))
+#define noipa __attribute__((noipa))
  #define long_call __attribute__((long_call))
  #define short_call __attribute__((short_call))
@@ -13,12 +13,12 @@
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }
#define EXTERN_CALL(ID, TARGET_ATTRS, CALL_ATTRS) \
-  const char *TARGET_ATTRS noinline ID (void) { return #ID; }          \
+  const char *TARGET_ATTRS noipa ID (void) { return #ID; }             \
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }               
\
    const char *CALL_ATTRS sibcall_##ID (void) { return ID (); }
#define STATIC_CALL(ID, TARGET_ATTRS, CALL_ATTRS) \
-  static const char *TARGET_ATTRS noinline ID (void) { return #ID; }   \
+  static const char *TARGET_ATTRS noipa ID (void) { return #ID; }      \
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }               
\
    const char *CALL_ATTRS sibcall_##ID (void) { return ID (); }
diff --git a/gcc/testsuite/gcc.target/arm/long-calls-3.c b/gcc/testsuite/gcc.target/arm/long-calls-3.c
index bd1891c008b..e40ac49b187 100644
--- a/gcc/testsuite/gcc.target/arm/long-calls-3.c
+++ b/gcc/testsuite/gcc.target/arm/long-calls-3.c
@@ -4,7 +4,7 @@
#define section(S) __attribute__((section(S)))
  #define weak __attribute__((weak))
-#define noinline __attribute__((noinline))
+#define noipa __attribute__((noipa))
  #define long_call __attribute__((long_call))
  #define short_call __attribute__((short_call))
@@ -13,12 +13,12 @@
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }
#define EXTERN_CALL(ID, TARGET_ATTRS, CALL_ATTRS) \
-  const char *TARGET_ATTRS noinline ID (void) { return #ID; }          \
+  const char *TARGET_ATTRS noipa ID (void) { return #ID; }             \
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }               
\
    const char *CALL_ATTRS sibcall_##ID (void) { return ID (); }
#define STATIC_CALL(ID, TARGET_ATTRS, CALL_ATTRS) \
-  static const char *TARGET_ATTRS noinline ID (void) { return #ID; }   \
+  static const char *TARGET_ATTRS noipa ID (void) { return #ID; }      \
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }               
\
    const char *CALL_ATTRS sibcall_##ID (void) { return ID (); }
diff --git a/gcc/testsuite/gcc.target/arm/long-calls-4.c b/gcc/testsuite/gcc.target/arm/long-calls-4.c
index dc184b8f8be..ebf74f85443 100644
--- a/gcc/testsuite/gcc.target/arm/long-calls-4.c
+++ b/gcc/testsuite/gcc.target/arm/long-calls-4.c
@@ -4,7 +4,7 @@
#define section(S) __attribute__((section(S)))
  #define weak __attribute__((weak))
-#define noinline __attribute__((noinline))
+#define noipa __attribute__((noipa))
  #define long_call __attribute__((long_call))
  #define short_call __attribute__((short_call))
@@ -13,12 +13,12 @@
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }
#define EXTERN_CALL(ID, TARGET_ATTRS, CALL_ATTRS) \
-  const char *TARGET_ATTRS noinline ID (void) { return #ID; }          \
+  const char *TARGET_ATTRS noipa ID (void) { return #ID; }             \
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }               
\
    const char *CALL_ATTRS sibcall_##ID (void) { return ID (); }
#define STATIC_CALL(ID, TARGET_ATTRS, CALL_ATTRS) \
-  static const char *TARGET_ATTRS noinline ID (void) { return #ID; }   \
+  static const char *TARGET_ATTRS noipa ID (void) { return #ID; }      \
    const char *CALL_ATTRS call_##ID (void) { return ID () + 1; }               
\
    const char *CALL_ATTRS sibcall_##ID (void) { return ID (); }


Reply via email to