On 17/07/2026 15:32, Alice Carlotti wrote:
> On Fri, Jul 17, 2026 at 12:26:08PM +0000, Richard Earnshaw via Sourceware 
> Forge wrote:
> > From: Richard Earnshaw <[email protected]>
> > 
> > Arm has sunset the TME extension from the aarch64 architecture since
> > there are no known implementations.  Since this has been present in the
> > compiler for a while though, we need to go through a deprecation cycle.
> > 
> > This patch starts that process by:
> >  - removing it from the documentation
> >  - warning if the option is used during compilation
> >  - removing the tests for it.
> > 
> > gcc/ChangeLog:
> > 
> >     * config/aarch64/aarch64.cc (aarch64_override_options): Warn if
> >     +tme is used as an architecture feature
> >     (aarch64_process_target_attr): Similarly, but only if TME
> >     was previously disabled.
> >     * doc/invoke.texi (aarch64): Remove mentions of +tme.
> > 
> > gcc/testsuite/ChangeLog:
> > 
> >     * gcc.target/aarch64/pragma_cpp_predefs_2.c: Drop tests for TME.
> >     * gcc.target/aarch64/acle/tme.c: Removed.
> >     * gcc.target/aarch64/acle/tme_guard-1.c: Removed.
> >     * gcc.target/aarch64/acle/tme_guard-2.c: Removed.
> >     * gcc.target/aarch64/acle/tme_guard-3.c: Removed.
> >     * gcc.target/aarch64/acle/tme_guard-4.c: Removed.
> > ---
> >  gcc/config/aarch64/aarch64.cc                 | 10 +++++-
> >  gcc/doc/invoke.texi                           |  2 --
> >  gcc/testsuite/gcc.target/aarch64/acle/tme.c   | 34 -------------------
> >  .../gcc.target/aarch64/acle/tme_guard-1.c     |  9 -----
> >  .../gcc.target/aarch64/acle/tme_guard-2.c     | 10 ------
> >  .../gcc.target/aarch64/acle/tme_guard-3.c     |  9 -----
> >  .../gcc.target/aarch64/acle/tme_guard-4.c     | 10 ------
> >  .../gcc.target/aarch64/pragma_cpp_predefs_2.c | 12 -------
> >  8 files changed, 9 insertions(+), 87 deletions(-)
> >  delete mode 100644 gcc/testsuite/gcc.target/aarch64/acle/tme.c
> >  delete mode 100644 gcc/testsuite/gcc.target/aarch64/acle/tme_guard-1.c
> >  delete mode 100644 gcc/testsuite/gcc.target/aarch64/acle/tme_guard-2.c
> >  delete mode 100644 gcc/testsuite/gcc.target/aarch64/acle/tme_guard-3.c
> >  delete mode 100644 gcc/testsuite/gcc.target/aarch64/acle/tme_guard-4.c
> > 
> > diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
> > index a1f91dd425ef..2d34ee09b5be 100644
> > --- a/gcc/config/aarch64/aarch64.cc
> > +++ b/gcc/config/aarch64/aarch64.cc
> > @@ -20428,6 +20428,10 @@ aarch64_override_options (void)
> >    if (TARGET_ILP32)
> >      warning (OPT_Wdeprecated, "%<-mabi=ilp32%> is deprecated");
> >  
> > +  if (TARGET_TME)
> > +    warning (OPT_Wdeprecated,
> > +        "the architecture extension %<+tme%> is deprecated");
> > +
> >    if (global_options.x_pcrelative_literal_loads == 1)
> >      warning (OPT_Wdeprecated, "%<-mpc-relative-literal-loads%> is 
> > deprecated");
> >  
> > @@ -21078,6 +21082,11 @@ aarch64_process_target_attr (tree args)
> >    while (token)
> >      {
> >        num_attrs++;
> > +
> > +      if ((strcmp (token, "+tme") == 0) && !TARGET_TME)
> > +   warning (OPT_Wdeprecated,
> > +            "the architecture extension %<+tme%> is deprecated");
> > +
> 
> This check misses stuff like "+memtag+tme", and I think it's also in the wrong
> place.  The ideal place to check would probably be in aarch64_parse_extension;
> if its use in the driver makes that difficult, then we should find some way of
> passing the information out of that function to somewhere that can emit the
> warning.

Good catch, I forgot you can (of course) have multiple extensions
separated by + here.  Thanks for spotting that.

> 
> We could also use a global variable to ensure we only warn once about each
> deprecated feature - if there's multiple instances, users can easily search 
> the
> code for "+tme" to find all of them.

While I agree that we definitely don't want multiple diagnostics at the
same location, I believe it is conventional for diagnostics to warn
about all instances of a problem, so that users can fix them in bulk
without having to go through an edit-compile cycle for every fix.

Alex

> 
> Alice
> 
> >        if (!aarch64_process_one_target_attr (token))
> >     {
> >       /* Check if token is possibly an arch extension without
> > @@ -21094,7 +21103,6 @@ aarch64_process_target_attr (tree args)
> >         error ("pragma or attribute %<target(\"%s\")%> is not valid", 
> > token);
> >       return false;
> >     }
> > -
> >        token = strtok_r (NULL, ",", &str_to_check);
> >      }
> >  

Reply via email to