[clang] 3b8a18c - [clang][bytecode] Fix contains check using llvm::find (#149050)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 16 04:26:14 PDT 2025
Author: Timm Baeder
Date: 2025-07-16T13:26:10+02:00
New Revision: 3b8a18c27a1e70895feac15d48b3a6122e6b377f
URL: https://github.com/llvm/llvm-project/commit/3b8a18c27a1e70895feac15d48b3a6122e6b377f
DIFF: https://github.com/llvm/llvm-project/commit/3b8a18c27a1e70895feac15d48b3a6122e6b377f.diff
LOG: [clang][bytecode] Fix contains check using llvm::find (#149050)
We need to compare to the end() interator.
Added:
Modified:
clang/lib/AST/ByteCode/Interp.cpp
clang/test/AST/ByteCode/placement-new.cpp
clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/ByteCode/Interp.cpp b/clang/lib/AST/ByteCode/Interp.cpp
index edb1866b5265c..e8b519478c026 100644
--- a/clang/lib/AST/ByteCode/Interp.cpp
+++ b/clang/lib/AST/ByteCode/Interp.cpp
@@ -574,7 +574,7 @@ bool CheckConst(InterpState &S, CodePtr OpPC, const Pointer &Ptr) {
// The This pointer is writable in constructors and destructors,
// even if isConst() returns true.
- if (llvm::find(S.InitializingBlocks, Ptr.block()))
+ if (llvm::is_contained(S.InitializingBlocks, Ptr.block()))
return true;
const QualType Ty = Ptr.getType();
diff --git a/clang/test/AST/ByteCode/placement-new.cpp b/clang/test/AST/ByteCode/placement-new.cpp
index 670def2d5870e..b587cd6eaf89c 100644
--- a/clang/test/AST/ByteCode/placement-new.cpp
+++ b/clang/test/AST/ByteCode/placement-new.cpp
@@ -486,3 +486,11 @@ namespace bitcast {
}
static_assert(foo() == 0);
}
+
+constexpr int modify_const_variable() {
+ const int a = 10;
+ new ((int *)&a) int(12); // both-note {{modification of object of const-qualified type 'const int' is not allowed in a constant expression}}
+ return a;
+}
+static_assert(modify_const_variable()); // both-error {{not an integral constant expression}} \
+ // both-note {{in call to}}
diff --git a/clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp b/clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp
index 6f6f9b04aa392..4cf0e9ffe1d64 100644
--- a/clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp
+++ b/clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp
@@ -1,4 +1,5 @@
// RUN: %clang_cc1 -std=c++2c -verify %s
+// RUN: %clang_cc1 -std=c++2c -verify %s -fexperimental-new-constant-interpreter
namespace std {
More information about the cfe-commits
mailing list