[clang] 0591297 - [clang][bytecode] Fix initializing primitive fields via initlist (#164789)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 23 05:19:17 PDT 2025
Author: Timm Baeder
Date: 2025-10-23T14:19:13+02:00
New Revision: 0591297c8aa123d9503e4706b5c45617536ec882
URL: https://github.com/llvm/llvm-project/commit/0591297c8aa123d9503e4706b5c45617536ec882
DIFF: https://github.com/llvm/llvm-project/commit/0591297c8aa123d9503e4706b5c45617536ec882.diff
LOG: [clang][bytecode] Fix initializing primitive fields via initlist (#164789)
Fixes https://github.com/llvm/llvm-project/issues/152901
Added:
Modified:
clang/lib/AST/ByteCode/Compiler.cpp
clang/test/AST/ByteCode/records.cpp
Removed:
################################################################################
diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp
index f15b3c1e5aae4..b484ca8ce038a 100644
--- a/clang/lib/AST/ByteCode/Compiler.cpp
+++ b/clang/lib/AST/ByteCode/Compiler.cpp
@@ -1842,7 +1842,6 @@ bool Compiler<Emitter>::visitInitList(ArrayRef<const Expr *> Inits,
const Expr *Init, PrimType T,
bool Activate = false) -> bool {
InitStackScope<Emitter> ISS(this, isa<CXXDefaultInitExpr>(Init));
- InitLinkScope<Emitter> ILS(this, InitLink::Field(FieldToInit->Offset));
if (!this->visit(Init))
return false;
diff --git a/clang/test/AST/ByteCode/records.cpp b/clang/test/AST/ByteCode/records.cpp
index 48cf81182c1de..5040b54de3229 100644
--- a/clang/test/AST/ByteCode/records.cpp
+++ b/clang/test/AST/ByteCode/records.cpp
@@ -1840,3 +1840,11 @@ namespace DiamondDowncast {
constexpr Middle2 &fail = (Middle2&)top1; // both-error {{must be initialized by a constant expression}} \
// both-note {{cannot cast object of dynamic type 'const Bottom' to type 'Middle2'}}
}
+
+namespace PrimitiveInitializedByInitList {
+ constexpr struct {
+ int a;
+ int b{this->a};
+ } c{ 17 };
+ static_assert(c.b == 17, "");
+}
More information about the cfe-commits
mailing list