[clang] [llvm] [CHERI] Allow @llvm.clear_cache to accept pointers in address spaces other than 0. (PR #189283)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Mar 29 13:14:34 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-codegen
Author: Owen Anderson (resistor)
<details>
<summary>Changes</summary>
Co-Authored-by: Jessica Clarke <jrtc27@<!-- -->jrtc27.com>
---
Full diff: https://github.com/llvm/llvm-project/pull/189283.diff
11 Files Affected:
- (modified) clang/lib/CodeGen/CGBuiltin.cpp (+1-1)
- (modified) clang/test/CodeGen/clear_cache.c (+1-1)
- (modified) llvm/include/llvm/IR/Intrinsics.td (+1-1)
- (modified) llvm/test/Bitcode/compatibility-3.6.ll (+1-1)
- (modified) llvm/test/Bitcode/compatibility-3.7.ll (+1-1)
- (modified) llvm/test/Bitcode/compatibility-3.8.ll (+1-1)
- (modified) llvm/test/Bitcode/compatibility-3.9.ll (+1-1)
- (modified) llvm/test/Bitcode/compatibility-4.0.ll (+1-1)
- (modified) llvm/test/Bitcode/compatibility-5.0.ll (+1-1)
- (modified) llvm/test/Bitcode/compatibility-6.0.ll (+1-1)
- (modified) llvm/test/Bitcode/compatibility.ll (+1-1)
``````````diff
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index 51c5d970a0f84..4d74d681cd320 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -3829,7 +3829,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
case Builtin::BI__builtin___clear_cache: {
Value *Begin = EmitScalarExpr(E->getArg(0));
Value *End = EmitScalarExpr(E->getArg(1));
- Function *F = CGM.getIntrinsic(Intrinsic::clear_cache);
+ Function *F = CGM.getIntrinsic(Intrinsic::clear_cache, {CGM.DefaultPtrTy});
return RValue::get(Builder.CreateCall(F, {Begin, End}));
}
case Builtin::BI__builtin_trap:
diff --git a/clang/test/CodeGen/clear_cache.c b/clang/test/CodeGen/clear_cache.c
index d168cda02210f..d07ed2f5fcf97 100644
--- a/clang/test/CodeGen/clear_cache.c
+++ b/clang/test/CodeGen/clear_cache.c
@@ -10,7 +10,7 @@ char buffer[32] = "This is a largely unused buffer";
// CHECK-NEXT: entry:
// CHECK-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
// CHECK-NEXT: store i32 0, ptr [[RETVAL]], align 4
-// CHECK-NEXT: call void @llvm.clear_cache(ptr @buffer, ptr getelementptr inbounds nuw (i8, ptr @buffer, i64 32))
+// CHECK-NEXT: call void @llvm.clear_cache.p0(ptr @buffer, ptr getelementptr inbounds nuw (i8, ptr @buffer, i64 32))
// CHECK-NEXT: ret i32 0
//
int main(void) {
diff --git a/llvm/include/llvm/IR/Intrinsics.td b/llvm/include/llvm/IR/Intrinsics.td
index b51ac732914bd..30e6c8f614a00 100644
--- a/llvm/include/llvm/IR/Intrinsics.td
+++ b/llvm/include/llvm/IR/Intrinsics.td
@@ -1974,7 +1974,7 @@ def int_fptosi_sat : DefaultAttrsIntrinsic<[llvm_anyint_ty], [llvm_anyfloat_ty]>
// Clear cache intrinsic, default to ignore (ie. emit nothing)
// maps to void __clear_cache() on supporting platforms
-def int_clear_cache : Intrinsic<[], [llvm_ptr_ty, llvm_ptr_ty],
+def int_clear_cache : Intrinsic<[], [llvm_anyptr_ty, LLVMMatchType<0>],
[], "llvm.clear_cache">;
// Intrinsic to detect whether its argument is a constant.
diff --git a/llvm/test/Bitcode/compatibility-3.6.ll b/llvm/test/Bitcode/compatibility-3.6.ll
index 62b5a88d085c6..987017e9f2793 100644
--- a/llvm/test/Bitcode/compatibility-3.6.ll
+++ b/llvm/test/Bitcode/compatibility-3.6.ll
@@ -1140,7 +1140,7 @@ define void @intrinsics.codegen() {
; CHECK: call i64 @llvm.readcyclecounter()
call void @llvm.clear_cache(i8* null, i8* null)
- ; CHECK: call void @llvm.clear_cache(ptr null, ptr null)
+ ; CHECK: call void @llvm.clear_cache.p0(ptr null, ptr null)
call void @llvm.instrprof_increment(i8* null, i64 0, i32 0, i32 0)
; CHECK: call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
diff --git a/llvm/test/Bitcode/compatibility-3.7.ll b/llvm/test/Bitcode/compatibility-3.7.ll
index 61cc50ef4dead..0e6668d871ca0 100644
--- a/llvm/test/Bitcode/compatibility-3.7.ll
+++ b/llvm/test/Bitcode/compatibility-3.7.ll
@@ -1171,7 +1171,7 @@ define void @intrinsics.codegen() {
; CHECK: call i64 @llvm.readcyclecounter()
call void @llvm.clear_cache(i8* null, i8* null)
- ; CHECK: call void @llvm.clear_cache(ptr null, ptr null)
+ ; CHECK: call void @llvm.clear_cache.p0(ptr null, ptr null)
call void @llvm.instrprof_increment(i8* null, i64 0, i32 0, i32 0)
; CHECK: call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
diff --git a/llvm/test/Bitcode/compatibility-3.8.ll b/llvm/test/Bitcode/compatibility-3.8.ll
index 19a5c0f7a4e1f..553abc6efd778 100644
--- a/llvm/test/Bitcode/compatibility-3.8.ll
+++ b/llvm/test/Bitcode/compatibility-3.8.ll
@@ -1326,7 +1326,7 @@ define void @intrinsics.codegen() {
; CHECK: call i64 @llvm.readcyclecounter()
call void @llvm.clear_cache(i8* null, i8* null)
- ; CHECK: call void @llvm.clear_cache(ptr null, ptr null)
+ ; CHECK: call void @llvm.clear_cache.p0(ptr null, ptr null)
call void @llvm.instrprof_increment(i8* null, i64 0, i32 0, i32 0)
; CHECK: call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
diff --git a/llvm/test/Bitcode/compatibility-3.9.ll b/llvm/test/Bitcode/compatibility-3.9.ll
index b29463940424a..10652265082ad 100644
--- a/llvm/test/Bitcode/compatibility-3.9.ll
+++ b/llvm/test/Bitcode/compatibility-3.9.ll
@@ -1397,7 +1397,7 @@ define void @intrinsics.codegen() {
; CHECK: call i64 @llvm.readcyclecounter()
call void @llvm.clear_cache(i8* null, i8* null)
- ; CHECK: call void @llvm.clear_cache(ptr null, ptr null)
+ ; CHECK: call void @llvm.clear_cache.p0(ptr null, ptr null)
call void @llvm.instrprof_increment(i8* null, i64 0, i32 0, i32 0)
; CHECK: call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
diff --git a/llvm/test/Bitcode/compatibility-4.0.ll b/llvm/test/Bitcode/compatibility-4.0.ll
index 0d3a024af511d..d9b6360e1d0eb 100644
--- a/llvm/test/Bitcode/compatibility-4.0.ll
+++ b/llvm/test/Bitcode/compatibility-4.0.ll
@@ -1397,7 +1397,7 @@ define void @intrinsics.codegen() {
; CHECK: call i64 @llvm.readcyclecounter()
call void @llvm.clear_cache(i8* null, i8* null)
- ; CHECK: call void @llvm.clear_cache(ptr null, ptr null)
+ ; CHECK: call void @llvm.clear_cache.p0(ptr null, ptr null)
call void @llvm.instrprof_increment(i8* null, i64 0, i32 0, i32 0)
; CHECK: call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
diff --git a/llvm/test/Bitcode/compatibility-5.0.ll b/llvm/test/Bitcode/compatibility-5.0.ll
index c59701c5915aa..95d05acb4ea47 100644
--- a/llvm/test/Bitcode/compatibility-5.0.ll
+++ b/llvm/test/Bitcode/compatibility-5.0.ll
@@ -1409,7 +1409,7 @@ define void @intrinsics.codegen() {
; CHECK: call i64 @llvm.readcyclecounter()
call void @llvm.clear_cache(i8* null, i8* null)
- ; CHECK: call void @llvm.clear_cache(ptr null, ptr null)
+ ; CHECK: call void @llvm.clear_cache.p0(ptr null, ptr null)
call void @llvm.instrprof_increment(i8* null, i64 0, i32 0, i32 0)
; CHECK: call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
diff --git a/llvm/test/Bitcode/compatibility-6.0.ll b/llvm/test/Bitcode/compatibility-6.0.ll
index f0b18a8c8145e..e82a0b31a1d79 100644
--- a/llvm/test/Bitcode/compatibility-6.0.ll
+++ b/llvm/test/Bitcode/compatibility-6.0.ll
@@ -1419,7 +1419,7 @@ define void @intrinsics.codegen() {
; CHECK: call i64 @llvm.readcyclecounter()
call void @llvm.clear_cache(i8* null, i8* null)
- ; CHECK: call void @llvm.clear_cache(ptr null, ptr null)
+ ; CHECK: call void @llvm.clear_cache.p0(ptr null, ptr null)
call void @llvm.instrprof_increment(i8* null, i64 0, i32 0, i32 0)
; CHECK: call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
diff --git a/llvm/test/Bitcode/compatibility.ll b/llvm/test/Bitcode/compatibility.ll
index f2df4c68404fb..3c154633740ee 100644
--- a/llvm/test/Bitcode/compatibility.ll
+++ b/llvm/test/Bitcode/compatibility.ll
@@ -1915,7 +1915,7 @@ define void @intrinsics.codegen() {
; CHECK: call i64 @llvm.readcyclecounter()
call void @llvm.clear_cache(ptr null, ptr null)
- ; CHECK: call void @llvm.clear_cache(ptr null, ptr null)
+ ; CHECK: call void @llvm.clear_cache.p0(ptr null, ptr null)
call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
; CHECK: call void @llvm.instrprof_increment(ptr null, i64 0, i32 0, i32 0)
``````````
</details>
https://github.com/llvm/llvm-project/pull/189283
More information about the cfe-commits
mailing list