Skip to content

Commit 0d4c36c

Browse files
committed
[ARM] Using cp15 while mtp =auto and arch is arm_arch6k and support thumb2
We follow GCC mtp=auto when arch is arm_arch6k and support thumb2 Reference: https://reviews.llvm.org/D114116
1 parent 620c383 commit 0d4c36c

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

clang/lib/Driver/ToolChains/Arch/ARM.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,9 @@ bool arm::useAAPCSForMachO(const llvm::Triple &T) {
208208
bool arm::isHardTPSupported(const llvm::Triple &Triple) {
209209
int Ver = getARMSubArchVersionNumber(Triple);
210210
llvm::ARM::ArchKind AK = llvm::ARM::parseArch(Triple.getArchName());
211-
return Triple.isARM() || AK == llvm::ARM::ArchKind::ARMV6T2 ||
212-
(Ver >= 7 && AK != llvm::ARM::ArchKind::ARMV8MBaseline);
211+
return AK == llvm::ARM::ArchKind::ARMV6K ||
212+
AK == llvm::ARM::ArchKind::ARMV6KZ ||
213+
(Ver >= 7 && !isARMMProfile(Triple));
213214
}
214215

215216
// Select mode for reading thread pointer (-mtp=soft/cp15).

clang/test/Driver/arm-thread-pointer.c

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,19 @@
1414
// RUN: FileCheck -check-prefix=ARMv7_THREAD_POINTER-TPIDRPRW %s
1515
// ARMv7_THREAD_POINTER-TPIDRPRW: "-target-feature" "+read-tp-tpidrprw"
1616

17-
// RUN: %clang --target=armv6t2-linux -mtp=cp15 -### -S %s 2>&1 | \
18-
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
19-
// RUN: %clang --target=thumbv6t2-linux -mtp=cp15 -### -S %s 2>&1 | \
20-
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
2117
// RUN: %clang --target=armv6k-linux -mtp=cp15 -### -S %s 2>&1 | \
2218
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
19+
// ARM_THREAD_POINTER-HARD: "-target-feature" "+read-tp-tpidruro"
20+
21+
// RUN: %clang --target=thumbv6t2-linux -mtp=cp15 -### -S %s 2>&1 | \
22+
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER_NO_HARD %s
23+
// RUN: %clang --target=armv6t2-linux -mtp=cp15 -### -S %s 2>&1 | \
24+
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER_NO_HARD %s
2325
// RUN: %clang --target=armv6-linux -mtp=cp15 -### -S %s 2>&1 | \
24-
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
26+
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER_NO_HARD %s
2527
// RUN: %clang --target=armv5t-linux -mtp=cp15 -### -S %s 2>&1 | \
26-
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER-HARD %s
27-
// ARM_THREAD_POINTER-HARD: "-target-feature" "+read-tp-tpidruro"
28+
// RUN: FileCheck -check-prefix=ARM_THREAD_POINTER_NO_HARD %s
29+
// ARM_THREAD_POINTER_NO_HARD-NOT: "-target-feature" "+read-tp-tpidruro"
2830

2931
// RUN: %clang --target=armv5t-linux -mtp=cp15 -x assembler -### %s 2>&1 | \
3032
// RUN: FileCheck -check-prefix=ARMv5_THREAD_POINTER_ASSEMBLER %s
@@ -47,3 +49,22 @@
4749
// RUN: %clang --target=armv7-linux -mtp=auto -### -S %s 2>&1 | \
4850
// RUN: FileCheck -check-prefix=ARMv7_THREAD_POINTER_Auto %s
4951
// ARMv7_THREAD_POINTER_Auto: "-target-feature" "+read-tp-tpidruro"
52+
53+
// RUN: %clang --target=armv5t-linux -mtp=auto -### -S %s 2>&1 | \
54+
// RUN: FileCheck -check-prefix=ARMv5t_THREAD_POINTER_Auto %s
55+
// ARMv5t_THREAD_POINTER_Auto-NOT: "-target-feature" "+read-tp-tpidruro"
56+
57+
// RUN: %clang --target=armv6k-linux -mtp=auto -### -S %s 2>&1 | \
58+
// RUN: FileCheck -check-prefix=ARMv6k_THREAD_POINTER_Auto %s
59+
// ARMv6k_THREAD_POINTER_Auto: "-target-feature" "+read-tp-tpidruro"
60+
61+
// RUN: %clang --target=armv6-linux -mtp=auto -### -S %s 2>&1 | \
62+
// RUN: FileCheck -check-prefix=ARMv6_THREAD_POINTER_Auto %s
63+
// ARMv6_THREAD_POINTER_Auto-NOT: "-target-feature" "+read-tp-tpidruro"
64+
65+
// RUN: %clang --target=armv6kz-linux -mtp=auto -### -S %s 2>&1 | \
66+
// RUN: FileCheck -check-prefix=ARMv6kz_THREAD_POINTER_Auto %s
67+
// ARMv6kz_THREAD_POINTER_Auto: "-target-feature" "+read-tp-tpidruro"
68+
// RUN: %clang --target=armv6kz-linux -mtp=cp15 -### -S %s 2>&1 | \
69+
// RUN: FileCheck -check-prefix=ARMv6kz_THREAD_POINTER_Cp15 %s
70+
// ARMv6kz_THREAD_POINTER_Cp15: "-target-feature" "+read-tp-tpidruro"

0 commit comments

Comments
 (0)