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

Reply via email to