On Mon, Jul 20, 2026 at 12:58:35PM +0000, Alex Coplan via Sourceware Forge 
wrote:
> From: Alex Coplan <[email protected]>
> 
> This is a follow-up patch to Richard E's r17-2498-g17f084306c68c4 (#186
> on the Forge).  As Alice pointed out in her review:
> https://gcc.gnu.org/pipermail/gcc-patches/2026-July/724391.html
> the original patch missed things like +memtag+tme due to the string
> parsing approach.  This instead just inspects the parsed feature flags
> from aarch64_parse_extension to determine whether to warn in the target
> attribute/pragma case.
> 
> +tme on the command line is handled as per Richard's original patch (no
> change there).

Ok, thanks

> 
> gcc/ChangeLog:
> 
>       * config/aarch64/aarch64.cc (aarch64_handle_attr_isa_flags):
>       Warn if +tme is enabled by the target attribute/pragma, relying
>       on the feature flags from aarch64_parse_extension.
>       (aarch64_process_target_attr): Drop +tme warning based on custom
>       string parsing.
> 
> gcc/testsuite/ChangeLog:
> 
>       * gcc.target/aarch64/deprecate-tme.c: New test.
> ---
>  gcc/config/aarch64/aarch64.cc                    |  8 ++++----
>  gcc/testsuite/gcc.target/aarch64/deprecate-tme.c | 16 ++++++++++++++++
>  2 files changed, 20 insertions(+), 4 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.target/aarch64/deprecate-tme.c
> 
> diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
> index 40b68709dbb1..61562c94a553 100644
> --- a/gcc/config/aarch64/aarch64.cc
> +++ b/gcc/config/aarch64/aarch64.cc
> @@ -20822,6 +20822,10 @@ aarch64_handle_attr_isa_flags (char *str)
>  
>    if (parse_res == AARCH_PARSE_OK)
>      {
> +      if (!TARGET_TME && (isa_flags & AARCH64_FL_TME))
> +     warning (OPT_Wdeprecated,
> +              "the architecture extension %<+tme%> is deprecated");
> +
>        aarch64_set_asm_isa_flags (isa_flags);
>        return true;
>      }
> @@ -21083,10 +21087,6 @@ aarch64_process_target_attr (tree args)
>      {
>        num_attrs++;
>  
> -      if (strcmp (token, "+tme") == 0 && !TARGET_TME)
> -     warning (OPT_Wdeprecated,
> -              "the architecture extension %<+tme%> is deprecated");
> -
>        if (!aarch64_process_one_target_attr (token))
>       {
>         /* Check if token is possibly an arch extension without
> diff --git a/gcc/testsuite/gcc.target/aarch64/deprecate-tme.c 
> b/gcc/testsuite/gcc.target/aarch64/deprecate-tme.c
> new file mode 100644
> index 000000000000..b190c4d2c211
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/aarch64/deprecate-tme.c
> @@ -0,0 +1,16 @@
> +/* { dg-do compile } */
> +
> +__attribute__((target("+tme")))
> +void a(void) {} /* { dg-warning {'\+tme' is deprecated} } */
> +
> +__attribute__((target("+dotprod+tme")))
> +void b(void) {} /* { dg-warning {'\+tme' is deprecated} } */
> +
> +#pragma GCC target ("+nothing+tme") /* { dg-warning {'\+tme' is deprecated} 
> } */
> +
> +void c(void) {}
> +
> +/* No warning here, we only want to warn when tme transitions from
> +   disabled to enabled.  This helps keeps noise to a minimum.  */
> +__attribute__((target("+tme")))
> +void d(void) {}
> -- 
> 2.54.0
> 

Reply via email to