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. 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. > 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. 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 (); } >
