[clang] [clang][bytecode] Check strcmp input for unknown-size arrays (PR #220835)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 3 00:58:53 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Timm Baeder (tbaederr)
<details>
<summary>Changes</summary>
The later calls to getNumElems() will fail for them.
---
Full diff: https://github.com/llvm/llvm-project/pull/220835.diff
2 Files Affected:
- (modified) clang/lib/AST/ByteCode/InterpBuiltin.cpp (+3-1)
- (modified) clang/test/AST/ByteCode/builtin-functions.cpp (+6)
``````````diff
diff --git a/clang/lib/AST/ByteCode/InterpBuiltin.cpp b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
index 91d6a32c136ac..b78ce614e290d 100644
--- a/clang/lib/AST/ByteCode/InterpBuiltin.cpp
+++ b/clang/lib/AST/ByteCode/InterpBuiltin.cpp
@@ -306,7 +306,9 @@ static bool interp__builtin_strcmp(InterpState &S, CodePtr OpPC,
if (!A.isReadablePointerType() || !B.isReadablePointerType())
return false;
- if (A.isDummy() || B.isDummy())
+
+ if (A.isDummy() || B.isDummy() || A.isUnknownSizeArray() ||
+ B.isUnknownSizeArray())
return false;
bool IsWide = ID == Builtin::BIwcscmp || ID == Builtin::BIwcsncmp ||
diff --git a/clang/test/AST/ByteCode/builtin-functions.cpp b/clang/test/AST/ByteCode/builtin-functions.cpp
index 47a1c23d77799..51e1b6cde4779 100644
--- a/clang/test/AST/ByteCode/builtin-functions.cpp
+++ b/clang/test/AST/ByteCode/builtin-functions.cpp
@@ -132,6 +132,12 @@ namespace strcmp {
static_assert(__builtin_strncmp("abaa", "abba", 0) == 0);
static_assert(__builtin_strncmp(0, 0, 0) == 0);
static_assert(__builtin_strncmp("abab\0banana", "abab\0canada", 100) == 0);
+
+
+ constexpr char missingInit[] = bar__; // both-error {{use of undeclared identifier 'bar__'}} \
+ // ref-note {{declared here}}
+ static_assert(__builtin_strcmp(missingInit, "bar") == 0, ""); // both-error {{not an integral constant expression}} \
+ // ref-note {{initializer of 'missingInit' is unknown}}
}
namespace WcsCmp {
``````````
</details>
https://github.com/llvm/llvm-project/pull/220835
More information about the cfe-commits
mailing list