Author: Timothy Herchen
Date: 2025-07-22T15:25:17+08:00
New Revision: e644f5fd9e9b0dfdbf02357260908160d23c5b28

URL: 
https://github.com/llvm/llvm-project/commit/e644f5fd9e9b0dfdbf02357260908160d23c5b28
DIFF: 
https://github.com/llvm/llvm-project/commit/e644f5fd9e9b0dfdbf02357260908160d23c5b28.diff

LOG: [clang] [Sema] Check argument range for prefetchi* intrinsics (#149745)

Fixes https://github.com/llvm/llvm-project/issues/144857 . I can create
a test if desired, but I think the fix is trivial enough.

<img width="805" height="105" alt="image"
src="https://github.com/user-attachments/assets/aaee8e5f-6e65-4f04-b8b9-e4ae1434d958";
/>

Added: 
    clang/test/CodeGen/X86/prefetchi-error.c

Modified: 
    clang/lib/Sema/SemaX86.cpp

Removed: 
    


################################################################################
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

diff  --git a/clang/test/CodeGen/X86/prefetchi-error.c 
b/clang/test/CodeGen/X86/prefetchi-error.c
new file mode 100644
index 0000000000000..31494f7cff152
--- /dev/null
+++ b/clang/test/CodeGen/X86/prefetchi-error.c
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown 
-target-feature +prefetchi  -fsyntax-only -verify
+
+#include <immintrin.h>
+
+void test_invalid_prefetchi(void* p) {
+  __builtin_ia32_prefetchi(p, 1); // expected-error {{argument value 1 is 
outside the valid range [2, 3]}}
+}


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to