[clang] [clang][ARM][AArch64] Don't require arm_acle header for universally defined intrinsics (PR #136742)
Nick Sarnie via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 22 11:47:02 PDT 2025
https://github.com/sarnex updated https://github.com/llvm/llvm-project/pull/136742
>From f5f2d28bd1d878a7e202db91be31ae5b243e1fcf Mon Sep 17 00:00:00 2001
From: "Sarnie, Nick" <nick.sarnie at intel.com>
Date: Tue, 22 Apr 2025 11:43:01 -0700
Subject: [PATCH 1/2] [clang][ARM][AArch64] Don't require arm_acle header for
universally defined intrinsics
Signed-off-by: Sarnie, Nick <nick.sarnie at intel.com>
---
clang/include/clang/Basic/BuiltinHeaders.def | 1 -
clang/include/clang/Basic/BuiltinsAArch64.def | 16 +++---
clang/include/clang/Basic/BuiltinsARM.def | 16 +++---
clang/lib/Headers/arm_acle.h | 6 ++-
...rmer-microsoft-intrinsics-header-warning.c | 50 -----------------
.../CodeGen/arm-former-microsoft-intrinsics.c | 1 -
...rmer-microsoft-intrinsics-header-warning.c | 53 -------------------
.../arm64-former-microsoft-intrinsics.c | 2 -
clang/test/CodeGen/builtins-arm-microsoft.c | 2 -
clang/test/Headers/Inputs/include/stdint.h | 12 -----
clang/test/Headers/ms-intrin.cpp | 4 --
11 files changed, 21 insertions(+), 142 deletions(-)
delete mode 100644 clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c
delete mode 100644 clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c
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 19fa7215b5000..b52219a9a22d8 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.def
+++ b/clang/include/clang/Basic/BuiltinsAArch64.def
@@ -50,11 +50,11 @@ 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, "")
+BUILTIN(__yield, "v", "")
+BUILTIN(__wfe, "v", "")
+BUILTIN(__wfi, "v", "")
+BUILTIN(__sev, "v", "")
+BUILTIN(__sevl, "v", "")
// Like __builtin_trap but provide an 16-bit immediate reason code (which goes into `brk #N`).
BUILTIN(__builtin_arm_trap, "vUIs", "nr")
@@ -87,9 +87,9 @@ 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, "")
+BUILTIN(__dmb, "vUi", "nc")
+BUILTIN(__dsb, "vUi", "nc")
+BUILTIN(__isb, "vUi", "nc")
TARGET_BUILTIN(__builtin_arm_jcvt, "Zid", "nc", "v8.3a")
diff --git a/clang/include/clang/Basic/BuiltinsARM.def b/clang/include/clang/Basic/BuiltinsARM.def
index 2592e25e95c37..5059e996c28d3 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -186,19 +186,19 @@ 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, "")
+BUILTIN(__yield, "v", "")
+BUILTIN(__wfe, "v", "")
+BUILTIN(__wfi, "v", "")
+BUILTIN(__sev, "v", "")
+BUILTIN(__sevl, "v", "")
// 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, "")
+BUILTIN(__dmb, "vUi", "nc")
+BUILTIN(__dsb, "vUi", "nc")
+BUILTIN(__isb, "vUi", "nc")
// Prefetch
BUILTIN(__builtin_arm_prefetch, "vvC*UiUi", "nc")
diff --git a/clang/lib/Headers/arm_acle.h b/clang/lib/Headers/arm_acle.h
index 89db5dc2d7aaa..fae6cc71c2237 100644
--- a/clang/lib/Headers/arm_acle.h
+++ b/clang/lib/Headers/arm_acle.h
@@ -29,16 +29,20 @@ extern "C" {
/* 7 SYNCHRONIZATION, BARRIER AND HINT INTRINSICS */
/* 7.3 Memory barriers */
+/*
void __dmb(unsigned int);
void __dsb(unsigned int);
void __isb(unsigned int);
-
+*/
+
/* 7.4 Hints */
+/*
void __wfi(void);
void __wfe(void);
void __sev(void);
void __sevl(void);
void __yield(void);
+*/
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
#define __dbg(t) __builtin_arm_dbg(t)
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 at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __dmb(0);
-}
-
-void check__dsb(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __dsb(0);
-}
-
-void check__isb(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __isb(0);
-}
-
-void check__yield(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __yield();
-}
-
-void check__wfe(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __wfe();
-}
-
-void check__wfi(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __wfi();
-}
-
-void check__sev(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __sev();
-}
-
-void check__sevl(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +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
index 8a02602dc9876..d8fc49bd10a51 100644
--- a/clang/test/CodeGen/arm-former-microsoft-intrinsics.c
+++ b/clang/test/CodeGen/arm-former-microsoft-intrinsics.c
@@ -3,7 +3,6 @@
// RUN: %clang_cc1 -triple armv7-eabi -Werror -emit-llvm -o - %s \
// RUN: | FileCheck %s
-#include <arm_acle.h>
void check__dmb(void) {
__dmb(0);
}
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 at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __dmb(0);
-}
-
-void check__dsb(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __dsb(0);
-}
-
-void check__isb(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __isb(0);
-}
-
-void check__yield(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __yield();
-}
-
-void check__wfe(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __wfe();
-}
-
-void check__wfi(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __wfi();
-}
-
-void check__sev(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +1{{include the header <arm_acle.h> or explicitly provide a declaration for}}
- __sev();
-}
-
-void check__sevl(void) {
- // expected-warning at +2{{call to undeclared library function}}
- // expected-note at +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
index f1d9af2c6d25e..9f801d9e8c4a7 100644
--- a/clang/test/CodeGen/arm64-former-microsoft-intrinsics.c
+++ b/clang/test/CodeGen/arm64-former-microsoft-intrinsics.c
@@ -7,8 +7,6 @@
// 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);
}
diff --git a/clang/test/CodeGen/builtins-arm-microsoft.c b/clang/test/CodeGen/builtins-arm-microsoft.c
index b2681197e33e0..5de8a71403549 100644
--- a/clang/test/CodeGen/builtins-arm-microsoft.c
+++ b/clang/test/CodeGen/builtins-arm-microsoft.c
@@ -4,8 +4,6 @@
// RUN: | FileCheck %s -check-prefix CHECK-EABI
// REQUIRES: arm-registered-target
-#include <arm_acle.h>
-
void test_yield_intrinsic() {
__yield();
}
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) {}
>From 121639e5fe1a93b4a3cdfbbe0a9fc7d452134f11 Mon Sep 17 00:00:00 2001
From: "Sarnie, Nick" <nick.sarnie at intel.com>
Date: Tue, 22 Apr 2025 11:46:51 -0700
Subject: [PATCH 2/2] format
Signed-off-by: Sarnie, Nick <nick.sarnie at intel.com>
---
clang/lib/Headers/arm_acle.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clang/lib/Headers/arm_acle.h b/clang/lib/Headers/arm_acle.h
index fae6cc71c2237..8a139f4a0a241 100644
--- a/clang/lib/Headers/arm_acle.h
+++ b/clang/lib/Headers/arm_acle.h
@@ -34,7 +34,7 @@ void __dmb(unsigned int);
void __dsb(unsigned int);
void __isb(unsigned int);
*/
-
+
/* 7.4 Hints */
/*
void __wfi(void);
More information about the cfe-commits
mailing list