Author: Max
Date: 2026-01-15T12:42:05-05:00
New Revision: eb82ddc53a21ee7a8acf4de9efe1e385c88fe497

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

LOG: [clang][-Wunsafe-buffer-usage] Ignore consteval functions (#171503)

We dont need to visit or warn on consteval functions as they can't have
UB.

---------

Co-authored-by: mxms <[email protected]>

Added: 
    

Modified: 
    clang/lib/Analysis/UnsafeBufferUsage.cpp
    clang/test/SemaCXX/warn-unsafe-buffer-usage.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Analysis/UnsafeBufferUsage.cpp 
b/clang/lib/Analysis/UnsafeBufferUsage.cpp
index a50a284a37566..6bb08102c0345 100644
--- a/clang/lib/Analysis/UnsafeBufferUsage.cpp
+++ b/clang/lib/Analysis/UnsafeBufferUsage.cpp
@@ -4594,6 +4594,10 @@ void clang::checkUnsafeBufferUsage(const Decl *D,
   SmallVector<Stmt *> Stmts;
 
   if (const auto *FD = dyn_cast<FunctionDecl>(D)) {
+    // Consteval functions are free of UB by the spec, so we don't need to
+    // visit them or produce diagnostics.
+    if (FD->isConsteval())
+      return;
     // We do not want to visit a Lambda expression defined inside a method
     // independently. Instead, it should be visited along with the outer 
method.
     // FIXME: do we want to do the same thing for `BlockDecl`s?

diff  --git a/clang/test/SemaCXX/warn-unsafe-buffer-usage.cpp 
b/clang/test/SemaCXX/warn-unsafe-buffer-usage.cpp
index 41d38ada48788..6fad7585026f2 100644
--- a/clang/test/SemaCXX/warn-unsafe-buffer-usage.cpp
+++ b/clang/test/SemaCXX/warn-unsafe-buffer-usage.cpp
@@ -406,4 +406,11 @@ void testMultiLineDeclStmt(int * p) {
   foo(ap1[1]);  // expected-note{{used in buffer access here}}
 }
 
+#if __cplusplus >= 202002L
+consteval void testConstevalPtrArithmetic(int idx) {
+  int y[3] = {0, 1, 2};
+  foo(y[idx]);
+}
+#endif
+
 #endif


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to