[clang] e00d1dd - [ARM] Fix armv6kz LDREX definition (#122965)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 15 05:31:58 PST 2025
Author: Un1q32
Date: 2025-01-15T13:31:54Z
New Revision: e00d1dd6eaf46cf17080cdf506348ab8f037f6f2
URL: https://github.com/llvm/llvm-project/commit/e00d1dd6eaf46cf17080cdf506348ab8f037f6f2
DIFF: https://github.com/llvm/llvm-project/commit/e00d1dd6eaf46cf17080cdf506348ab8f037f6f2.diff
LOG: [ARM] Fix armv6kz LDREX definition (#122965)
Fixes #37901
This behavior is consistent with GCC
Added:
Modified:
clang/lib/Basic/Targets/ARM.cpp
clang/test/Preprocessor/arm-acle-6.4.c
Removed:
################################################################################
diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp
index 61ee26d8863832..0fd5433a76402e 100644
--- a/clang/lib/Basic/Targets/ARM.cpp
+++ b/clang/lib/Basic/Targets/ARM.cpp
@@ -617,7 +617,8 @@ bool ARMTargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
case 6:
if (ArchProfile == llvm::ARM::ProfileKind::M)
LDREX = 0;
- else if (ArchKind == llvm::ARM::ArchKind::ARMV6K)
+ else if (ArchKind == llvm::ARM::ArchKind::ARMV6K ||
+ ArchKind == llvm::ARM::ArchKind::ARMV6KZ)
LDREX = LDREX_D | LDREX_W | LDREX_H | LDREX_B;
else
LDREX = LDREX_W;
diff --git a/clang/test/Preprocessor/arm-acle-6.4.c b/clang/test/Preprocessor/arm-acle-6.4.c
index fcabe028b9559c..2c8f4868263a61 100644
--- a/clang/test/Preprocessor/arm-acle-6.4.c
+++ b/clang/test/Preprocessor/arm-acle-6.4.c
@@ -93,6 +93,10 @@
// CHECK-V6K: __ARM_FEATURE_LDREX 0xf
+// RUN: %clang -target arm-none-linux-eabi -march=armv6kz -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V6KZ
+
+// CHECK-V6KZ: __ARM_FEATURE_LDREX 0xf
+
// RUN: %clang -target arm-none-linux-eabi -march=armv7-a -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-V7A
// CHECK-V7A: __ARM_ARCH 7
More information about the cfe-commits
mailing list