https://gcc.gnu.org/g:17f084306c68c437b1350682bcde6075ae749f15

commit r17-2498-g17f084306c68c437b1350682bcde6075ae749f15
Author: Richard Earnshaw <[email protected]>
Date:   Tue Jul 7 17:14:07 2026 +0100

    aarch64: deprecate the TME extension
    
    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.

Diff:
---
 gcc/config/aarch64/aarch64.cc                      |  9 ++++++
 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(+), 86 deletions(-)

diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index a1f91dd425ef..40b68709dbb1 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");
+
       if (!aarch64_process_one_target_attr (token))
        {
          /* Check if token is possibly an arch extension without
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 2e5c9d6788ed..739fc77c282b 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -21991,8 +21991,6 @@ Enable SVE2 sha3 instructions.  This also enables SVE2 
instructions.
 Enable SVE2.1 instructions.  This also enables SVE2 instructions.
 @item sve2p2
 Enable SVE2.2 instructions.  This also enables SVE2 and SVE2.1 instructions.
-@item tme
-Enable the Transactional Memory Extension.
 @item i8mm
 Enable 8-bit Integer Matrix Multiply instructions.  This also enables
 Advanced SIMD and floating-point instructions.  This option is enabled by
diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme.c 
b/gcc/testsuite/gcc.target/aarch64/acle/tme.c
deleted file mode 100644
index 5df93b1dcb10..000000000000
--- a/gcc/testsuite/gcc.target/aarch64/acle/tme.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Test the TME intrinsics.  */
-
-/* { dg-do compile } */
-/* { dg-options "-save-temps -O2 -march=armv8-a+tme" } */
-
-#include "arm_acle.h"
-
-#define tcancel_reason 0x234
-
-unsigned
-check_tme (void)
-{
-  unsigned status = __tstart ();
-  if (status == 0)
-    {
-      if (__ttest () == 2)
-       {
-         __tcancel (tcancel_reason & _TMFAILURE_REASON);
-         return tcancel_reason;
-       }
-
-      __tcommit ();
-      return 0;
-    }
-  else if (status & _TMFAILURE_NEST)
-    return _TMFAILURE_NEST;
-  else if (status & _TMFAILURE_TRIVIAL)
-    return _TMFAILURE_TRIVIAL;
-}
-
-/* { dg-final { scan-assembler "tstart\tx..?\n" } } */
-/* { dg-final { scan-assembler "tcancel\t#564\n" } } */
-/* { dg-final { scan-assembler "ttest\tx..?\n" } } */
-/* { dg-final { scan-assembler "tcommit\n" } } */
diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-1.c 
b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-1.c
deleted file mode 100644
index 9894d3341f6b..000000000000
--- a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-1.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/* { dg-do compile } */
-/* { dg-additional-options "-march=armv8-a" } */
-
-#include <arm_acle.h>
-
-void foo (void)
-{
-  __tcommit (); /* { dg-error {ACLE function '__tcommit' requires ISA 
extension 'tme'} } */
-}
diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-2.c 
b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-2.c
deleted file mode 100644
index 4e3d69712b14..000000000000
--- a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-2.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* { dg-do compile } */
-/* { dg-additional-options "-march=armv8-a" } */
-
-#include <arm_acle.h>
-
-#pragma GCC target("arch=armv8-a+tme")
-void foo (void)
-{
-  __tcommit ();
-}
diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-3.c 
b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-3.c
deleted file mode 100644
index 5f480ebb8209..000000000000
--- a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-3.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/* { dg-do compile } */
-/* { dg-additional-options "-march=armv8-a+tme -mgeneral-regs-only" } */
-
-#include <arm_acle.h>
-
-void foo (void)
-{
-  __tcommit ();
-}
diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-4.c 
b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-4.c
deleted file mode 100644
index bf4d368370c6..000000000000
--- a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-4.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* { dg-do compile } */
-/* { dg-additional-options "-march=armv8-a+tme" } */
-
-#include <arm_acle.h>
-
-#pragma GCC target("arch=armv8-a")
-void foo (void)
-{
-  __tcommit (); /* { dg-error {ACLE function '__tcommit' requires ISA 
extension 'tme'} } */
-}
diff --git a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c 
b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
index d8fc86d15578..76fc5b5680e2 100644
--- a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
+++ b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
@@ -4,18 +4,6 @@
 #pragma GCC push_options
 #pragma GCC target ("arch=armv8-a")
 
-#pragma GCC push_options
-#pragma GCC target ("arch=armv8-a+tme")
-#ifndef __ARM_FEATURE_TME
-#error "__ARM_FEATURE_TME is not defined but should be!"
-#endif
-
-#pragma GCC pop_options
-
-#ifdef __ARM_FEATURE_TME
-#error "__ARM_FEATURE_TME is defined but should not be!"
-#endif
-
 /* Test Armv8.6-A features.  */
 
 #ifdef __ARM_FEATURE_MATMUL_INT8

Reply via email to