Skip to content

Revert "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" #137374

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 25, 2025

Conversation

sarnex
Copy link
Member

@sarnex sarnex commented Apr 25, 2025

This reverts commit de0153d.

It breaks MSVC.

sarnex added 2 commits April 25, 2025 17:44
Signed-off-by: Sarnie, Nick <[email protected]>
@sarnex sarnex marked this pull request as ready for review April 25, 2025 20:18
@sarnex sarnex merged commit b60ee39 into llvm:main Apr 25, 2025
11 checks passed
@llvmbot llvmbot added clang Clang issues not falling into any other category backend:ARM backend:AArch64 backend:X86 clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:headers Headers provided by Clang, e.g. for intrinsics labels Apr 25, 2025
@llvmbot
Copy link
Member

llvmbot commented Apr 25, 2025

@llvm/pr-subscribers-backend-x86

@llvm/pr-subscribers-backend-arm

Author: Nick Sarnie (sarnex)

Changes

This reverts commit de0153d.

It breaks MSVC.


Full diff: https://github.com/llvm/llvm-project/pull/137374.diff

14 Files Affected:

  • (modified) clang/include/clang/Basic/BuiltinHeaders.def (-1)
  • (modified) clang/include/clang/Basic/BuiltinsAArch64.def (+10-8)
  • (modified) clang/include/clang/Basic/BuiltinsARM.def (+9-8)
  • (modified) clang/lib/Headers/arm_acle.h (+44-8)
  • (modified) clang/lib/Sema/SemaARM.cpp (-6)
  • (removed) clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c (-50)
  • (removed) clang/test/CodeGen/arm-former-microsoft-intrinsics.c (-53)
  • (modified) clang/test/CodeGen/arm-microsoft-intrinsics.c (+21)
  • (removed) clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c (-53)
  • (removed) clang/test/CodeGen/arm64-former-microsoft-intrinsics.c (-59)
  • (modified) clang/test/CodeGen/arm64-microsoft-intrinsics.c (+56)
  • (modified) clang/test/CodeGen/builtins-arm-microsoft.c (+5-7)
  • (modified) clang/test/Headers/Inputs/include/stdint.h (-12)
  • (modified) clang/test/Headers/ms-intrin.cpp (-4)
diff --git a/clang/include/clang/Basic/BuiltinHeaders.def b/clang/include/clang/Basic/BuiltinHeaders.def
index 22668ec7a3396..8e4a2f9bee9aa 100644
--- a/clang/include/clang/Basic/BuiltinHeaders.def
+++ b/clang/include/clang/Basic/BuiltinHeaders.def
@@ -12,7 +12,6 @@
 //===----------------------------------------------------------------------===//
 
 HEADER(NO_HEADER, nullptr)
-HEADER(ARMACLE_H, "arm_acle.h")
 HEADER(BLOCKS_H, "Blocks.h")
 HEADER(COMPLEX_H, "complex.h")
 HEADER(CTYPE_H, "ctype.h")
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def b/clang/include/clang/Basic/BuiltinsAArch64.def
index 8867a9fe09fb9..0b2dba86d9930 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.def
+++ b/clang/include/clang/Basic/BuiltinsAArch64.def
@@ -50,11 +50,6 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_chkfeat, "WUiWUi", "")
-TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfe,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfi,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sev,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sevl,  "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Like __builtin_trap but provide an 16-bit immediate reason code (which goes into `brk #N`).
 BUILTIN(__builtin_arm_trap, "vUIs", "nr")
@@ -87,9 +82,6 @@ TARGET_BUILTIN(__builtin_arm_mops_memset_tag, "v*v*iz", "", "mte,mops")
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi", "nc")
 BUILTIN(__builtin_arm_isb, "vUi", "nc")
-TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
 
 TARGET_BUILTIN(__builtin_arm_jcvt, "Zid", "nc", "v8.3a")
 
@@ -106,6 +98,16 @@ BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc")
 TARGET_BUILTIN(__builtin_arm_wsr128, "vcC*LLLUi", "nc", "d128")
 BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
 
+// MSVC
+LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__yield, "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfe,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfi,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__sev,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__sevl,  "v", "",   ALL_MS_LANGUAGES)
+
 // Misc
 BUILTIN(__builtin_sponentry, "v*", "c")
 
diff --git a/clang/include/clang/Basic/BuiltinsARM.def b/clang/include/clang/Basic/BuiltinsARM.def
index 2592e25e95c37..cbab87cecbc7d 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -186,19 +186,11 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_dbg, "vUi", "")
-TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfe, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfi, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sev, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sevl, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Data barrier
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi", "nc")
 BUILTIN(__builtin_arm_isb, "vUi", "nc")
-TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Prefetch
 BUILTIN(__builtin_arm_prefetch, "vvC*UiUi", "nc")
@@ -217,6 +209,15 @@ BUILTIN(__builtin_sponentry, "v*", "c")
 // MSVC
 LANGBUILTIN(__emit, "vIUiC", "", ALL_MS_LANGUAGES)
 
+LANGBUILTIN(__yield, "v", "", ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfe, "v", "", ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfi, "v", "", ALL_MS_LANGUAGES)
+LANGBUILTIN(__sev, "v", "", ALL_MS_LANGUAGES)
+LANGBUILTIN(__sevl, "v", "", ALL_MS_LANGUAGES)
+
+LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
 LANGBUILTIN(__ldrexd, "WiWiCD*", "", ALL_MS_LANGUAGES)
 LANGBUILTIN(_MoveFromCoprocessor, "UiIUiIUiIUiIUiIUi", "", ALL_MS_LANGUAGES)
 LANGBUILTIN(_MoveFromCoprocessor2, "UiIUiIUiIUiIUiIUi", "", ALL_MS_LANGUAGES)
diff --git a/clang/lib/Headers/arm_acle.h b/clang/lib/Headers/arm_acle.h
index 5cfa3d023a7d5..a7a62b69e0468 100644
--- a/clang/lib/Headers/arm_acle.h
+++ b/clang/lib/Headers/arm_acle.h
@@ -29,16 +29,52 @@ extern "C" {
 
 /* 7 SYNCHRONIZATION, BARRIER AND HINT INTRINSICS */
 /* 7.3 Memory barriers */
-void __dmb(unsigned int);
-void __dsb(unsigned int);
-void __isb(unsigned int);
+#if !__has_builtin(__dmb)
+#define __dmb(i) __builtin_arm_dmb(i)
+#endif
+#if !__has_builtin(__dsb)
+#define __dsb(i) __builtin_arm_dsb(i)
+#endif
+#if !__has_builtin(__isb)
+#define __isb(i) __builtin_arm_isb(i)
+#endif
 
 /* 7.4 Hints */
-void __wfi(void);
-void __wfe(void);
-void __sev(void);
-void __sevl(void);
-void __yield(void);
+
+#if !__has_builtin(__wfi)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__wfi(void) {
+  __builtin_arm_wfi();
+}
+#endif
+
+#if !__has_builtin(__wfe)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__wfe(void) {
+  __builtin_arm_wfe();
+}
+#endif
+
+#if !__has_builtin(__sev)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__sev(void) {
+  __builtin_arm_sev();
+}
+#endif
+
+#if !__has_builtin(__sevl)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__sevl(void) {
+  __builtin_arm_sevl();
+}
+#endif
+
+#if !__has_builtin(__yield)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__yield(void) {
+  __builtin_arm_yield();
+}
+#endif
 
 #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
 #define __dbg(t) __builtin_arm_dbg(t)
diff --git a/clang/lib/Sema/SemaARM.cpp b/clang/lib/Sema/SemaARM.cpp
index c1cfea042fca5..de6cf1ae9d7ed 100644
--- a/clang/lib/Sema/SemaARM.cpp
+++ b/clang/lib/Sema/SemaARM.cpp
@@ -1010,11 +1010,8 @@ bool SemaARM::CheckARMBuiltinFunctionCall(const TargetInfo &TI,
   case ARM::BI__builtin_arm_vcvtr_d:
     return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 1);
   case ARM::BI__builtin_arm_dmb:
-  case ARM::BI__dmb:
   case ARM::BI__builtin_arm_dsb:
-  case ARM::BI__dsb:
   case ARM::BI__builtin_arm_isb:
-  case ARM::BI__isb:
   case ARM::BI__builtin_arm_dbg:
     return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 15);
   case ARM::BI__builtin_arm_cdp:
@@ -1111,11 +1108,8 @@ bool SemaARM::CheckAArch64BuiltinFunctionCall(const TargetInfo &TI,
   switch (BuiltinID) {
   default: return false;
   case AArch64::BI__builtin_arm_dmb:
-  case AArch64::BI__dmb:
   case AArch64::BI__builtin_arm_dsb:
-  case AArch64::BI__dsb:
   case AArch64::BI__builtin_arm_isb:
-  case AArch64::BI__isb:
     l = 0;
     u = 15;
     break;
diff --git a/clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c b/clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c
deleted file mode 100644
index 8edcbbeb0375d..0000000000000
--- a/clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c
+++ /dev/null
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -triple thumbv7-windows -fms-compatibility -Wno-everything -Wimplicit-function-declaration -fsyntax-only -verify %s
-// RUN: %clang_cc1 -triple armv7-eabi -Wno-everything -Wimplicit-function-declaration -fsyntax-only -verify %s
-
-void check__dmb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __dmb(0);
-}
-
-void check__dsb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __dsb(0);
-}
-
-void check__isb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __isb(0);
-}
-
-void check__yield(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __yield();
-}
-
-void check__wfe(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __wfe();
-}
-
-void check__wfi(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __wfi();
-}
-
-void check__sev(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __sev();
-}
-
-void check__sevl(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __sevl();
-}
diff --git a/clang/test/CodeGen/arm-former-microsoft-intrinsics.c b/clang/test/CodeGen/arm-former-microsoft-intrinsics.c
deleted file mode 100644
index 8a02602dc9876..0000000000000
--- a/clang/test/CodeGen/arm-former-microsoft-intrinsics.c
+++ /dev/null
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple thumbv7-windows -fms-compatibility -emit-llvm -o - %s \
-// RUN:    | FileCheck %s
-
-// RUN: %clang_cc1 -triple armv7-eabi -Werror -emit-llvm -o - %s \
-// RUN:    | FileCheck %s
-#include <arm_acle.h>
-void check__dmb(void) {
-  __dmb(0);
-}
-
-// CHECK: @llvm.arm.dmb(i32 0)
-
-void check__dsb(void) {
-  __dsb(0);
-}
-
-// CHECK: @llvm.arm.dsb(i32 0)
-
-void check__isb(void) {
-  __isb(0);
-}
-
-// CHECK: @llvm.arm.isb(i32 0)
-
-void check__yield(void) {
-  __yield();
-}
-
-// CHECK: @llvm.arm.hint(i32 1)
-
-void check__wfe(void) {
-  __wfe();
-}
-
-// CHECK: @llvm.arm.hint(i32 2)
-
-void check__wfi(void) {
-  __wfi();
-}
-
-// CHECK: @llvm.arm.hint(i32 3)
-
-void check__sev(void) {
-  __sev();
-}
-
-// CHECK: @llvm.arm.hint(i32 4)
-
-void check__sevl(void) {
-  __sevl();
-}
-
-// CHECK: @llvm.arm.hint(i32 5)
diff --git a/clang/test/CodeGen/arm-microsoft-intrinsics.c b/clang/test/CodeGen/arm-microsoft-intrinsics.c
index a5f3e2c719227..6793b3879eede 100644
--- a/clang/test/CodeGen/arm-microsoft-intrinsics.c
+++ b/clang/test/CodeGen/arm-microsoft-intrinsics.c
@@ -4,6 +4,27 @@
 // RUN: not %clang_cc1 -triple armv7-eabi -Werror -S -o /dev/null %s 2>&1 \
 // RUN:    | FileCheck %s -check-prefix CHECK-EABI
 
+void check__dmb(void) {
+  __dmb(0);
+}
+
+// CHECK-MSVC: @llvm.arm.dmb(i32 0)
+// CHECK-EABI: error: call to undeclared function '__dmb'
+
+void check__dsb(void) {
+  __dsb(0);
+}
+
+// CHECK-MSVC: @llvm.arm.dsb(i32 0)
+// CHECK-EABI: error: call to undeclared function '__dsb'
+
+void check__isb(void) {
+  __isb(0);
+}
+
+// CHECK-MSVC: @llvm.arm.isb(i32 0)
+// CHECK-EABI: error: call to undeclared function '__isb'
+
 __INT64_TYPE__ check__ldrexd(void) {
   __INT64_TYPE__ i64;
   return __ldrexd(&i64);
diff --git a/clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c b/clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c
deleted file mode 100644
index 52fed49db4dd2..0000000000000
--- a/clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c
+++ /dev/null
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple arm64-windows -Wno-everything -Wimplicit-function-declaration -fms-compatibility -fsyntax-only -verify %s
-
-// RUN: %clang_cc1 -triple arm64-linux -Wno-everything -Wimplicit-function-declaration -fsyntax-only -verify %s
-
-// RUN: %clang_cc1 -triple arm64-darwin -Wno-everything -Wimplicit-function-declaration -fms-compatibility -fsyntax-only -verify %s
-
-void check__dmb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __dmb(0);
-}
-
-void check__dsb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __dsb(0);
-}
-
-void check__isb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __isb(0);
-}
-
-void check__yield(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __yield();
-}
-
-void check__wfe(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __wfe();
-}
-
-void check__wfi(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __wfi();
-}
-
-void check__sev(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __sev();
-}
-
-void check__sevl(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __sevl();
-}
diff --git a/clang/test/CodeGen/arm64-former-microsoft-intrinsics.c b/clang/test/CodeGen/arm64-former-microsoft-intrinsics.c
deleted file mode 100644
index f1d9af2c6d25e..0000000000000
--- a/clang/test/CodeGen/arm64-former-microsoft-intrinsics.c
+++ /dev/null
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -triple arm64-windows -Wno-implicit-function-declaration -fms-compatibility -emit-llvm -o - %s \
-// RUN:    | FileCheck %s
-
-// RUN: %clang_cc1 -triple arm64-linux -Werror -emit-llvm -o - %s 2>&1 \
-// RUN:    | FileCheck %s
-
-// RUN: %clang_cc1 -triple arm64-darwin -Wno-implicit-function-declaration -fms-compatibility -emit-llvm -o - %s \
-// RUN:    | FileCheck %s
-
-#include <arm_acle.h>
-
-void check__dmb(void) {
-  __dmb(0);
-}
-
-// CHECK: @llvm.aarch64.dmb(i32 0)
-
-void check__dsb(void) {
-  __dsb(0);
-}
-
-// CHECK: @llvm.aarch64.dsb(i32 0)
-
-void check__isb(void) {
-  __isb(0);
-}
-
-// CHECK: @llvm.aarch64.isb(i32 0)
-
-void check__yield(void) {
-  __yield();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 1)
-
-void check__wfe(void) {
-  __wfe();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 2)
-
-void check__wfi(void) {
-  __wfi();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 3)
-
-void check__sev(void) {
-  __sev();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 4)
-
-void check__sevl(void) {
-  __sevl();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 5)
-
diff --git a/clang/test/CodeGen/arm64-microsoft-intrinsics.c b/clang/test/CodeGen/arm64-microsoft-intrinsics.c
index e18977a4559b1..74c6f2f79e632 100644
--- a/clang/test/CodeGen/arm64-microsoft-intrinsics.c
+++ b/clang/test/CodeGen/arm64-microsoft-intrinsics.c
@@ -35,6 +35,62 @@ __int64 test_InterlockedAdd64_constant(__int64 volatile *Addend) {
 // CHECK-MSVC: ret i64 %[[NEWVAL:[0-9]+]]
 // CHECK-LINUX: error: call to undeclared function '_InterlockedAdd64'
 
+void check__dmb(void) {
+  __dmb(0);
+}
+
+// CHECK-MSVC: @llvm.aarch64.dmb(i32 0)
+// CHECK-LINUX: error: call to undeclared function '__dmb'
+
+void check__dsb(void) {
+  __dsb(0);
+}
+
+// CHECK-MSVC: @llvm.aarch64.dsb(i32 0)
+// CHECK-LINUX: error: call to undeclared function '__dsb'
+
+void check__isb(void) {
+  __isb(0);
+}
+
+// CHECK-MSVC: @llvm.aarch64.isb(i32 0)
+// CHECK-LINUX: error: call to undeclared function '__isb'
+
+void check__yield(void) {
+  __yield();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 1)
+// CHECK-LINUX: error: call to undeclared function '__yield'
+
+void check__wfe(void) {
+  __wfe();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 2)
+// CHECK-LINUX: error: call to undeclared function '__wfe'
+
+void check__wfi(void) {
+  __wfi();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 3)
+// CHECK-LINUX: error: call to undeclared function '__wfi'
+
+void check__sev(void) {
+  __sev();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 4)
+// CHECK-LINUX: error: call to undeclared function '__sev'
+
+void check__sevl(void) {
+  __sevl();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 5)
+// CHECK-LINUX: error: call to undeclared function '__sevl'
+
 void check_ReadWriteBarrier(void) {
   _ReadWriteBarrier();
 }
diff --git a/clang/test/CodeGen/builtins-arm-microsoft.c b/clang/test/CodeGen/builtins-arm-microsoft.c
index b2681197e33e0..841a8a500d533 100644
--- a/clang/test/CodeGen/builtins-arm-microsoft.c
+++ b/clang/test/CodeGen/builtins-arm-microsoft.c
@@ -4,40 +4,38 @@
 // RUN:     | FileCheck %s -check-prefix CHECK-EABI
 // REQUIRES: arm-registered-target
 
-#include <arm_acle.h>
-
 void test_yield_intrinsic() {
   __yield();
 }
 
 // CHECK-MSVC: call void @llvm.arm.hint(i32 1)
-// CHECK-EABI: call void @llvm.arm.hint(i32 1)
+// CHECK-EABI-NOT: call void @llvm.arm.hint(i32 1)
 
 void wfe() {
   __wfe();
 }
 
 // CHECK-MSVC: call {{.*}} @llvm.arm.hint(i32 2)
-// CHECK-EABI: call {{.*}} @llvm.arm.hint(i32 2)
+// CHECK-EABI-NOT: call {{.*}} @llvm.arm.hint(i32 2)
 
 void wfi() {
   __wfi();
 }
 
 // CHECK-MSVC: call {{.*}} @llvm.arm.hint(i32 3)
-// CHECK-EABI: call {{.*}} @llvm.arm.hint(i32 3)
+// CHECK-EABI-NOT: call {{.*}} @llvm.arm.hint(i32 3)
 
 void sev() {
   __sev();
 }
 
 // CHECK-MSVC: call {{.*}} @llvm.arm.hint(i32 4)
-// CHECK-EABI: call {{.*}} @llvm.arm.hint(i32 4)
+// CHECK-EABI-NOT: call {{.*}} @llvm.arm.hint(i32 4)
 
 void sevl() {
   __sevl();
 }
 
 // CHECK-MSVC: call {{.*}} @llvm.arm.hint(i32 5)
-// CHECK-EABI: call {{.*}} @llvm.arm.hint(i32 5)
+// CHECK-EABI-NOT: call {{.*}} @llvm.arm.hint(i32 5)
 
diff --git a/clang/test/Headers/Inputs/include/stdint.h b/clang/test/Headers/Inputs/include/stdint.h
index eb09272b40c33..67b27b8dfc7b9 100644
--- a/clang/test/Headers/Inputs/include/stdint.h
+++ b/clang/test/Headers/Inputs/include/stdint.h
@@ -1,23 +1,11 @@
 #ifndef STDINT_H
 #define STDINT_H
 
-#ifdef __INT8_TYPE__
-typedef __INT8_TYPE__ int8_t;
-#endif
-typedef unsigned char uint8_t;
-
-#ifdef __INT16_TYPE__
-typedef __INT16_TYPE__ int16_t;
-typedef unsigned __INT16_TYPE__ uint16_t;
-#endif
-
 #ifdef __INT32_TYPE__
-typedef __INT32_TYPE__ int32_t;
 typedef unsigned __INT32_TYPE__ uint32_t;
 #endif
 
 #ifdef __INT64_TYPE__
-typedef __INT64_TYPE__ int64_t;
 typedef unsigned __INT64_TYPE__ uint64_t;
 #endif
 
diff --git a/clang/test/Headers/ms-intrin.cpp b/clang/test/Headers/ms-intrin.cpp
index 985f8577c46bf..d630883e79d6a 100644
--- a/clang/test/Headers/ms-intrin.cpp
+++ b/clang/test/Headers/ms-intrin.cpp
@@ -36,10 +36,6 @@ typedef __SIZE_TYPE__ size_t;
 
 #include <intrin.h>
 
-#ifdef __ARM_ACLE
-#include <arm_acle.h>
-#endif
-
 // Use some C++ to make sure we closed the extern "C" brackets.
 template <typename T>
 void foo(T V) {}

@llvmbot
Copy link
Member

llvmbot commented Apr 25, 2025

@llvm/pr-subscribers-backend-aarch64

Author: Nick Sarnie (sarnex)

Changes

This reverts commit de0153d.

It breaks MSVC.


Full diff: https://github.com/llvm/llvm-project/pull/137374.diff

14 Files Affected:

  • (modified) clang/include/clang/Basic/BuiltinHeaders.def (-1)
  • (modified) clang/include/clang/Basic/BuiltinsAArch64.def (+10-8)
  • (modified) clang/include/clang/Basic/BuiltinsARM.def (+9-8)
  • (modified) clang/lib/Headers/arm_acle.h (+44-8)
  • (modified) clang/lib/Sema/SemaARM.cpp (-6)
  • (removed) clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c (-50)
  • (removed) clang/test/CodeGen/arm-former-microsoft-intrinsics.c (-53)
  • (modified) clang/test/CodeGen/arm-microsoft-intrinsics.c (+21)
  • (removed) clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c (-53)
  • (removed) clang/test/CodeGen/arm64-former-microsoft-intrinsics.c (-59)
  • (modified) clang/test/CodeGen/arm64-microsoft-intrinsics.c (+56)
  • (modified) clang/test/CodeGen/builtins-arm-microsoft.c (+5-7)
  • (modified) clang/test/Headers/Inputs/include/stdint.h (-12)
  • (modified) clang/test/Headers/ms-intrin.cpp (-4)
diff --git a/clang/include/clang/Basic/BuiltinHeaders.def b/clang/include/clang/Basic/BuiltinHeaders.def
index 22668ec7a3396..8e4a2f9bee9aa 100644
--- a/clang/include/clang/Basic/BuiltinHeaders.def
+++ b/clang/include/clang/Basic/BuiltinHeaders.def
@@ -12,7 +12,6 @@
 //===----------------------------------------------------------------------===//
 
 HEADER(NO_HEADER, nullptr)
-HEADER(ARMACLE_H, "arm_acle.h")
 HEADER(BLOCKS_H, "Blocks.h")
 HEADER(COMPLEX_H, "complex.h")
 HEADER(CTYPE_H, "ctype.h")
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def b/clang/include/clang/Basic/BuiltinsAArch64.def
index 8867a9fe09fb9..0b2dba86d9930 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.def
+++ b/clang/include/clang/Basic/BuiltinsAArch64.def
@@ -50,11 +50,6 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_chkfeat, "WUiWUi", "")
-TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfe,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfi,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sev,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sevl,  "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Like __builtin_trap but provide an 16-bit immediate reason code (which goes into `brk #N`).
 BUILTIN(__builtin_arm_trap, "vUIs", "nr")
@@ -87,9 +82,6 @@ TARGET_BUILTIN(__builtin_arm_mops_memset_tag, "v*v*iz", "", "mte,mops")
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi", "nc")
 BUILTIN(__builtin_arm_isb, "vUi", "nc")
-TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
 
 TARGET_BUILTIN(__builtin_arm_jcvt, "Zid", "nc", "v8.3a")
 
@@ -106,6 +98,16 @@ BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc")
 TARGET_BUILTIN(__builtin_arm_wsr128, "vcC*LLLUi", "nc", "d128")
 BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
 
+// MSVC
+LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__yield, "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfe,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfi,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__sev,   "v", "",   ALL_MS_LANGUAGES)
+LANGBUILTIN(__sevl,  "v", "",   ALL_MS_LANGUAGES)
+
 // Misc
 BUILTIN(__builtin_sponentry, "v*", "c")
 
diff --git a/clang/include/clang/Basic/BuiltinsARM.def b/clang/include/clang/Basic/BuiltinsARM.def
index 2592e25e95c37..cbab87cecbc7d 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -186,19 +186,11 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_dbg, "vUi", "")
-TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfe, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__wfi, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sev, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__sevl, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Data barrier
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi", "nc")
 BUILTIN(__builtin_arm_isb, "vUi", "nc")
-TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
-TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Prefetch
 BUILTIN(__builtin_arm_prefetch, "vvC*UiUi", "nc")
@@ -217,6 +209,15 @@ BUILTIN(__builtin_sponentry, "v*", "c")
 // MSVC
 LANGBUILTIN(__emit, "vIUiC", "", ALL_MS_LANGUAGES)
 
+LANGBUILTIN(__yield, "v", "", ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfe, "v", "", ALL_MS_LANGUAGES)
+LANGBUILTIN(__wfi, "v", "", ALL_MS_LANGUAGES)
+LANGBUILTIN(__sev, "v", "", ALL_MS_LANGUAGES)
+LANGBUILTIN(__sevl, "v", "", ALL_MS_LANGUAGES)
+
+LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
+LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
 LANGBUILTIN(__ldrexd, "WiWiCD*", "", ALL_MS_LANGUAGES)
 LANGBUILTIN(_MoveFromCoprocessor, "UiIUiIUiIUiIUiIUi", "", ALL_MS_LANGUAGES)
 LANGBUILTIN(_MoveFromCoprocessor2, "UiIUiIUiIUiIUiIUi", "", ALL_MS_LANGUAGES)
diff --git a/clang/lib/Headers/arm_acle.h b/clang/lib/Headers/arm_acle.h
index 5cfa3d023a7d5..a7a62b69e0468 100644
--- a/clang/lib/Headers/arm_acle.h
+++ b/clang/lib/Headers/arm_acle.h
@@ -29,16 +29,52 @@ extern "C" {
 
 /* 7 SYNCHRONIZATION, BARRIER AND HINT INTRINSICS */
 /* 7.3 Memory barriers */
-void __dmb(unsigned int);
-void __dsb(unsigned int);
-void __isb(unsigned int);
+#if !__has_builtin(__dmb)
+#define __dmb(i) __builtin_arm_dmb(i)
+#endif
+#if !__has_builtin(__dsb)
+#define __dsb(i) __builtin_arm_dsb(i)
+#endif
+#if !__has_builtin(__isb)
+#define __isb(i) __builtin_arm_isb(i)
+#endif
 
 /* 7.4 Hints */
-void __wfi(void);
-void __wfe(void);
-void __sev(void);
-void __sevl(void);
-void __yield(void);
+
+#if !__has_builtin(__wfi)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__wfi(void) {
+  __builtin_arm_wfi();
+}
+#endif
+
+#if !__has_builtin(__wfe)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__wfe(void) {
+  __builtin_arm_wfe();
+}
+#endif
+
+#if !__has_builtin(__sev)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__sev(void) {
+  __builtin_arm_sev();
+}
+#endif
+
+#if !__has_builtin(__sevl)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__sevl(void) {
+  __builtin_arm_sevl();
+}
+#endif
+
+#if !__has_builtin(__yield)
+static __inline__ void __attribute__((__always_inline__, __nodebug__))
+__yield(void) {
+  __builtin_arm_yield();
+}
+#endif
 
 #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
 #define __dbg(t) __builtin_arm_dbg(t)
diff --git a/clang/lib/Sema/SemaARM.cpp b/clang/lib/Sema/SemaARM.cpp
index c1cfea042fca5..de6cf1ae9d7ed 100644
--- a/clang/lib/Sema/SemaARM.cpp
+++ b/clang/lib/Sema/SemaARM.cpp
@@ -1010,11 +1010,8 @@ bool SemaARM::CheckARMBuiltinFunctionCall(const TargetInfo &TI,
   case ARM::BI__builtin_arm_vcvtr_d:
     return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 1);
   case ARM::BI__builtin_arm_dmb:
-  case ARM::BI__dmb:
   case ARM::BI__builtin_arm_dsb:
-  case ARM::BI__dsb:
   case ARM::BI__builtin_arm_isb:
-  case ARM::BI__isb:
   case ARM::BI__builtin_arm_dbg:
     return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 15);
   case ARM::BI__builtin_arm_cdp:
@@ -1111,11 +1108,8 @@ bool SemaARM::CheckAArch64BuiltinFunctionCall(const TargetInfo &TI,
   switch (BuiltinID) {
   default: return false;
   case AArch64::BI__builtin_arm_dmb:
-  case AArch64::BI__dmb:
   case AArch64::BI__builtin_arm_dsb:
-  case AArch64::BI__dsb:
   case AArch64::BI__builtin_arm_isb:
-  case AArch64::BI__isb:
     l = 0;
     u = 15;
     break;
diff --git a/clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c b/clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c
deleted file mode 100644
index 8edcbbeb0375d..0000000000000
--- a/clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c
+++ /dev/null
@@ -1,50 +0,0 @@
-// RUN: %clang_cc1 -triple thumbv7-windows -fms-compatibility -Wno-everything -Wimplicit-function-declaration -fsyntax-only -verify %s
-// RUN: %clang_cc1 -triple armv7-eabi -Wno-everything -Wimplicit-function-declaration -fsyntax-only -verify %s
-
-void check__dmb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __dmb(0);
-}
-
-void check__dsb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __dsb(0);
-}
-
-void check__isb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __isb(0);
-}
-
-void check__yield(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __yield();
-}
-
-void check__wfe(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __wfe();
-}
-
-void check__wfi(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __wfi();
-}
-
-void check__sev(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __sev();
-}
-
-void check__sevl(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __sevl();
-}
diff --git a/clang/test/CodeGen/arm-former-microsoft-intrinsics.c b/clang/test/CodeGen/arm-former-microsoft-intrinsics.c
deleted file mode 100644
index 8a02602dc9876..0000000000000
--- a/clang/test/CodeGen/arm-former-microsoft-intrinsics.c
+++ /dev/null
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple thumbv7-windows -fms-compatibility -emit-llvm -o - %s \
-// RUN:    | FileCheck %s
-
-// RUN: %clang_cc1 -triple armv7-eabi -Werror -emit-llvm -o - %s \
-// RUN:    | FileCheck %s
-#include <arm_acle.h>
-void check__dmb(void) {
-  __dmb(0);
-}
-
-// CHECK: @llvm.arm.dmb(i32 0)
-
-void check__dsb(void) {
-  __dsb(0);
-}
-
-// CHECK: @llvm.arm.dsb(i32 0)
-
-void check__isb(void) {
-  __isb(0);
-}
-
-// CHECK: @llvm.arm.isb(i32 0)
-
-void check__yield(void) {
-  __yield();
-}
-
-// CHECK: @llvm.arm.hint(i32 1)
-
-void check__wfe(void) {
-  __wfe();
-}
-
-// CHECK: @llvm.arm.hint(i32 2)
-
-void check__wfi(void) {
-  __wfi();
-}
-
-// CHECK: @llvm.arm.hint(i32 3)
-
-void check__sev(void) {
-  __sev();
-}
-
-// CHECK: @llvm.arm.hint(i32 4)
-
-void check__sevl(void) {
-  __sevl();
-}
-
-// CHECK: @llvm.arm.hint(i32 5)
diff --git a/clang/test/CodeGen/arm-microsoft-intrinsics.c b/clang/test/CodeGen/arm-microsoft-intrinsics.c
index a5f3e2c719227..6793b3879eede 100644
--- a/clang/test/CodeGen/arm-microsoft-intrinsics.c
+++ b/clang/test/CodeGen/arm-microsoft-intrinsics.c
@@ -4,6 +4,27 @@
 // RUN: not %clang_cc1 -triple armv7-eabi -Werror -S -o /dev/null %s 2>&1 \
 // RUN:    | FileCheck %s -check-prefix CHECK-EABI
 
+void check__dmb(void) {
+  __dmb(0);
+}
+
+// CHECK-MSVC: @llvm.arm.dmb(i32 0)
+// CHECK-EABI: error: call to undeclared function '__dmb'
+
+void check__dsb(void) {
+  __dsb(0);
+}
+
+// CHECK-MSVC: @llvm.arm.dsb(i32 0)
+// CHECK-EABI: error: call to undeclared function '__dsb'
+
+void check__isb(void) {
+  __isb(0);
+}
+
+// CHECK-MSVC: @llvm.arm.isb(i32 0)
+// CHECK-EABI: error: call to undeclared function '__isb'
+
 __INT64_TYPE__ check__ldrexd(void) {
   __INT64_TYPE__ i64;
   return __ldrexd(&i64);
diff --git a/clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c b/clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c
deleted file mode 100644
index 52fed49db4dd2..0000000000000
--- a/clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c
+++ /dev/null
@@ -1,53 +0,0 @@
-// RUN: %clang_cc1 -triple arm64-windows -Wno-everything -Wimplicit-function-declaration -fms-compatibility -fsyntax-only -verify %s
-
-// RUN: %clang_cc1 -triple arm64-linux -Wno-everything -Wimplicit-function-declaration -fsyntax-only -verify %s
-
-// RUN: %clang_cc1 -triple arm64-darwin -Wno-everything -Wimplicit-function-declaration -fms-compatibility -fsyntax-only -verify %s
-
-void check__dmb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __dmb(0);
-}
-
-void check__dsb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __dsb(0);
-}
-
-void check__isb(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __isb(0);
-}
-
-void check__yield(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __yield();
-}
-
-void check__wfe(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __wfe();
-}
-
-void check__wfi(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __wfi();
-}
-
-void check__sev(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __sev();
-}
-
-void check__sevl(void) {
-  // expected-warning@+2{{call to undeclared library function}}
-  // expected-note@+1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
-  __sevl();
-}
diff --git a/clang/test/CodeGen/arm64-former-microsoft-intrinsics.c b/clang/test/CodeGen/arm64-former-microsoft-intrinsics.c
deleted file mode 100644
index f1d9af2c6d25e..0000000000000
--- a/clang/test/CodeGen/arm64-former-microsoft-intrinsics.c
+++ /dev/null
@@ -1,59 +0,0 @@
-// RUN: %clang_cc1 -triple arm64-windows -Wno-implicit-function-declaration -fms-compatibility -emit-llvm -o - %s \
-// RUN:    | FileCheck %s
-
-// RUN: %clang_cc1 -triple arm64-linux -Werror -emit-llvm -o - %s 2>&1 \
-// RUN:    | FileCheck %s
-
-// RUN: %clang_cc1 -triple arm64-darwin -Wno-implicit-function-declaration -fms-compatibility -emit-llvm -o - %s \
-// RUN:    | FileCheck %s
-
-#include <arm_acle.h>
-
-void check__dmb(void) {
-  __dmb(0);
-}
-
-// CHECK: @llvm.aarch64.dmb(i32 0)
-
-void check__dsb(void) {
-  __dsb(0);
-}
-
-// CHECK: @llvm.aarch64.dsb(i32 0)
-
-void check__isb(void) {
-  __isb(0);
-}
-
-// CHECK: @llvm.aarch64.isb(i32 0)
-
-void check__yield(void) {
-  __yield();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 1)
-
-void check__wfe(void) {
-  __wfe();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 2)
-
-void check__wfi(void) {
-  __wfi();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 3)
-
-void check__sev(void) {
-  __sev();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 4)
-
-void check__sevl(void) {
-  __sevl();
-}
-
-// CHECK: @llvm.aarch64.hint(i32 5)
-
diff --git a/clang/test/CodeGen/arm64-microsoft-intrinsics.c b/clang/test/CodeGen/arm64-microsoft-intrinsics.c
index e18977a4559b1..74c6f2f79e632 100644
--- a/clang/test/CodeGen/arm64-microsoft-intrinsics.c
+++ b/clang/test/CodeGen/arm64-microsoft-intrinsics.c
@@ -35,6 +35,62 @@ __int64 test_InterlockedAdd64_constant(__int64 volatile *Addend) {
 // CHECK-MSVC: ret i64 %[[NEWVAL:[0-9]+]]
 // CHECK-LINUX: error: call to undeclared function '_InterlockedAdd64'
 
+void check__dmb(void) {
+  __dmb(0);
+}
+
+// CHECK-MSVC: @llvm.aarch64.dmb(i32 0)
+// CHECK-LINUX: error: call to undeclared function '__dmb'
+
+void check__dsb(void) {
+  __dsb(0);
+}
+
+// CHECK-MSVC: @llvm.aarch64.dsb(i32 0)
+// CHECK-LINUX: error: call to undeclared function '__dsb'
+
+void check__isb(void) {
+  __isb(0);
+}
+
+// CHECK-MSVC: @llvm.aarch64.isb(i32 0)
+// CHECK-LINUX: error: call to undeclared function '__isb'
+
+void check__yield(void) {
+  __yield();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 1)
+// CHECK-LINUX: error: call to undeclared function '__yield'
+
+void check__wfe(void) {
+  __wfe();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 2)
+// CHECK-LINUX: error: call to undeclared function '__wfe'
+
+void check__wfi(void) {
+  __wfi();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 3)
+// CHECK-LINUX: error: call to undeclared function '__wfi'
+
+void check__sev(void) {
+  __sev();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 4)
+// CHECK-LINUX: error: call to undeclared function '__sev'
+
+void check__sevl(void) {
+  __sevl();
+}
+
+// CHECK-MSVC: @llvm.aarch64.hint(i32 5)
+// CHECK-LINUX: error: call to undeclared function '__sevl'
+
 void check_ReadWriteBarrier(void) {
   _ReadWriteBarrier();
 }
diff --git a/clang/test/CodeGen/builtins-arm-microsoft.c b/clang/test/CodeGen/builtins-arm-microsoft.c
index b2681197e33e0..841a8a500d533 100644
--- a/clang/test/CodeGen/builtins-arm-microsoft.c
+++ b/clang/test/CodeGen/builtins-arm-microsoft.c
@@ -4,40 +4,38 @@
 // RUN:     | FileCheck %s -check-prefix CHECK-EABI
 // REQUIRES: arm-registered-target
 
-#include <arm_acle.h>
-
 void test_yield_intrinsic() {
   __yield();
 }
 
 // CHECK-MSVC: call void @llvm.arm.hint(i32 1)
-// CHECK-EABI: call void @llvm.arm.hint(i32 1)
+// CHECK-EABI-NOT: call void @llvm.arm.hint(i32 1)
 
 void wfe() {
   __wfe();
 }
 
 // CHECK-MSVC: call {{.*}} @llvm.arm.hint(i32 2)
-// CHECK-EABI: call {{.*}} @llvm.arm.hint(i32 2)
+// CHECK-EABI-NOT: call {{.*}} @llvm.arm.hint(i32 2)
 
 void wfi() {
   __wfi();
 }
 
 // CHECK-MSVC: call {{.*}} @llvm.arm.hint(i32 3)
-// CHECK-EABI: call {{.*}} @llvm.arm.hint(i32 3)
+// CHECK-EABI-NOT: call {{.*}} @llvm.arm.hint(i32 3)
 
 void sev() {
   __sev();
 }
 
 // CHECK-MSVC: call {{.*}} @llvm.arm.hint(i32 4)
-// CHECK-EABI: call {{.*}} @llvm.arm.hint(i32 4)
+// CHECK-EABI-NOT: call {{.*}} @llvm.arm.hint(i32 4)
 
 void sevl() {
   __sevl();
 }
 
 // CHECK-MSVC: call {{.*}} @llvm.arm.hint(i32 5)
-// CHECK-EABI: call {{.*}} @llvm.arm.hint(i32 5)
+// CHECK-EABI-NOT: call {{.*}} @llvm.arm.hint(i32 5)
 
diff --git a/clang/test/Headers/Inputs/include/stdint.h b/clang/test/Headers/Inputs/include/stdint.h
index eb09272b40c33..67b27b8dfc7b9 100644
--- a/clang/test/Headers/Inputs/include/stdint.h
+++ b/clang/test/Headers/Inputs/include/stdint.h
@@ -1,23 +1,11 @@
 #ifndef STDINT_H
 #define STDINT_H
 
-#ifdef __INT8_TYPE__
-typedef __INT8_TYPE__ int8_t;
-#endif
-typedef unsigned char uint8_t;
-
-#ifdef __INT16_TYPE__
-typedef __INT16_TYPE__ int16_t;
-typedef unsigned __INT16_TYPE__ uint16_t;
-#endif
-
 #ifdef __INT32_TYPE__
-typedef __INT32_TYPE__ int32_t;
 typedef unsigned __INT32_TYPE__ uint32_t;
 #endif
 
 #ifdef __INT64_TYPE__
-typedef __INT64_TYPE__ int64_t;
 typedef unsigned __INT64_TYPE__ uint64_t;
 #endif
 
diff --git a/clang/test/Headers/ms-intrin.cpp b/clang/test/Headers/ms-intrin.cpp
index 985f8577c46bf..d630883e79d6a 100644
--- a/clang/test/Headers/ms-intrin.cpp
+++ b/clang/test/Headers/ms-intrin.cpp
@@ -36,10 +36,6 @@ typedef __SIZE_TYPE__ size_t;
 
 #include <intrin.h>
 
-#ifdef __ARM_ACLE
-#include <arm_acle.h>
-#endif
-
 // Use some C++ to make sure we closed the extern "C" brackets.
 template <typename T>
 void foo(T V) {}

jyli0116 pushed a commit to jyli0116/llvm-project that referenced this pull request Apr 28, 2025
…tin on all platforms" (llvm#137374)

This reverts commit
llvm@de0153d.

It breaks MSVC.

---------

Signed-off-by: Sarnie, Nick <[email protected]>
IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
…tin on all platforms" (llvm#137374)

This reverts commit
llvm@de0153d.

It breaks MSVC.

---------

Signed-off-by: Sarnie, Nick <[email protected]>
IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
…tin on all platforms" (llvm#137374)

This reverts commit
llvm@de0153d.

It breaks MSVC.

---------

Signed-off-by: Sarnie, Nick <[email protected]>
IanWood1 pushed a commit to IanWood1/llvm-project that referenced this pull request May 6, 2025
…tin on all platforms" (llvm#137374)

This reverts commit
llvm@de0153d.

It breaks MSVC.

---------

Signed-off-by: Sarnie, Nick <[email protected]>
Ankur-0429 pushed a commit to Ankur-0429/llvm-project that referenced this pull request May 9, 2025
…tin on all platforms" (llvm#137374)

This reverts commit
llvm@de0153d.

It breaks MSVC.

---------

Signed-off-by: Sarnie, Nick <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:AArch64 backend:ARM backend:X86 clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:headers Headers provided by Clang, e.g. for intrinsics clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants