[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