[clang] [clang] [Sema] Check argument range for prefetchi* intrinsics (PR #149745)
Timothy Herchen via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 21 22:31:39 PDT 2025
https://github.com/anematode updated https://github.com/llvm/llvm-project/pull/149745
>From d36dcec834f1846f050b89650b31bee4e138ddc3 Mon Sep 17 00:00:00 2001
From: Timothy Herchen <timothy.herchen at gmail.com>
Date: Sun, 20 Jul 2025 16:11:22 -0700
Subject: [PATCH 1/2] [clang] [Sema] Check argument range for prefetchi*
intrinsics
---
clang/lib/Sema/SemaX86.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/clang/lib/Sema/SemaX86.cpp b/clang/lib/Sema/SemaX86.cpp
index 5c149bdec7073..6bb3558972126 100644
--- a/clang/lib/Sema/SemaX86.cpp
+++ b/clang/lib/Sema/SemaX86.cpp
@@ -954,6 +954,11 @@ bool SemaX86::CheckBuiltinFunctionCall(const TargetInfo &TI, unsigned BuiltinID,
l = 0;
u = 15;
break;
+ case X86::BI__builtin_ia32_prefetchi:
+ i = 1;
+ l = 2; // _MM_HINT_T1
+ u = 3; // _MM_HINT_T0
+ break;
}
// Note that we don't force a hard error on the range check here, allowing
>From 90a8047250b0b061201166feb1b88ba7efb1b66b Mon Sep 17 00:00:00 2001
From: Timothy Herchen <timothy.herchen at gmail.com>
Date: Mon, 21 Jul 2025 21:20:03 -0700
Subject: [PATCH 2/2] add test
---
clang/test/CodeGen/X86/prefetchi-builtins.c | 4 ++++
clang/test/CodeGen/X86/sm3-builtins.c | 1 +
2 files changed, 5 insertions(+)
diff --git a/clang/test/CodeGen/X86/prefetchi-builtins.c b/clang/test/CodeGen/X86/prefetchi-builtins.c
index c822f7cb7dbea..9becd572e1559 100644
--- a/clang/test/CodeGen/X86/prefetchi-builtins.c
+++ b/clang/test/CodeGen/X86/prefetchi-builtins.c
@@ -14,3 +14,7 @@ void test_m_prefetch_it1(void *p) {
// CHECK-LABEL: define{{.*}} void @test_m_prefetch_it1
// CHECK: call void @llvm.prefetch.p0(ptr {{.*}}, i32 0, i32 2, i32 0)
}
+
+void test_invalid_prefetchi(void* p) {
+ return __builtin_ia32_prefetchi(p, 1); // expected-error {{argument value 1 is outside the valid range [2, 3]}}
+}
\ No newline at end of file
diff --git a/clang/test/CodeGen/X86/sm3-builtins.c b/clang/test/CodeGen/X86/sm3-builtins.c
index fb703ccfae672..6a8266eeb1d39 100644
--- a/clang/test/CodeGen/X86/sm3-builtins.c
+++ b/clang/test/CodeGen/X86/sm3-builtins.c
@@ -20,3 +20,4 @@ __m128i test_mm_sm3rnds2_epi32(__m128i __A, __m128i __B, __m128i __C) {
// CHECK: call <4 x i32> @llvm.x86.vsm3rnds2(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 127)
return _mm_sm3rnds2_epi32(__A, __B, __C, 127);
}
+
More information about the cfe-commits
mailing list