[clang] [ARM] mtp = auto using hard point while arch supports thumb2 and hardtp (PR #130027)
Simon Tatham via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 10 04:44:24 PDT 2025
================
@@ -14,18 +14,18 @@
// RUN: FileCheck -check-prefix=ARMv7_THREAD_POINTER-TPIDRPRW %s
// ARMv7_THREAD_POINTER-TPIDRPRW: "-target-feature" "+read-tp-tpidrprw"
-// RUN: %clang --target=armv6t2-linux -mtp=cp15 -### -S %s 2>&1 | \
-// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
-// RUN: %clang --target=thumbv6t2-linux -mtp=cp15 -### -S %s 2>&1 | \
-// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
// RUN: %clang --target=armv6k-linux -mtp=cp15 -### -S %s 2>&1 | \
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
-// RUN: %clang --target=armv6-linux -mtp=cp15 -### -S %s 2>&1 | \
-// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
-// RUN: %clang --target=armv5t-linux -mtp=cp15 -### -S %s 2>&1 | \
-// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
// ARM_THREAD_POINTER-HARD: "-target-feature" "+read-tp-tpidruro"
+// RUN: %clang --target=armv6k-linux -mtp=auto -### -S %s 2>&1 | \
+// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER_AUTO %s
+// ARM_THREAD_POINTER_AUTO-NOT: "-target-feature" "+read-tp-tpidruro"
----------------
statham-arm wrote:
I don't see any test for `thumbv6k`. Could we add one?
If I've understood this correctly, we expect `thumbv6k` _not_ to use the hardware thread register, because you can't access it from Thumb mode.
That raises the question of what happens if a mixed Arm/Thumb interworking program is compiled for Armv6K. I suppose the answer is that the Thumb code has to call a function to get the thread pointer -- and the function is expected to be written in Arm state and read TPIDRURO before returning to its Thumb caller?
https://github.com/llvm/llvm-project/pull/130027
More information about the cfe-commits
mailing list