https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/237933
Otherwise we have no scope to attach temporary variables created as part of the virtual base initializer to. >From c7b2020018e237288dbb5ce738d58968a9606f34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <[email protected]> Date: Mon, 2 Nov 2026 12:47:21 +0100 Subject: [PATCH] [clang][bytecode] Add a variable scope for virtual base initializers Otherwise we have no scope to attach temporary variables created as part of the virtual base initializer to. --- clang/lib/AST/ByteCode/Compiler.cpp | 1 + clang/test/AST/ByteCode/virtual-bases.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp index 71f761f58aed28..dc59a12bbde811 100644 --- a/clang/lib/AST/ByteCode/Compiler.cpp +++ b/clang/lib/AST/ByteCode/Compiler.cpp @@ -7759,6 +7759,7 @@ bool Compiler<Emitter>::compileConstructor(const CXXConstructorDecl *Ctor) { return false; for (const auto *Init : Ctor->inits()) { + LocalScope<Emitter> VirtLocalScope(this); if (const Type *Base = Init->getBaseClass(); Base && Init->isBaseVirtual()) { const auto *BaseDecl = Base->getAsCXXRecordDecl(); diff --git a/clang/test/AST/ByteCode/virtual-bases.cpp b/clang/test/AST/ByteCode/virtual-bases.cpp index f8dabd43749a50..47e8bbd6a2daf8 100644 --- a/clang/test/AST/ByteCode/virtual-bases.cpp +++ b/clang/test/AST/ByteCode/virtual-bases.cpp @@ -486,3 +486,12 @@ namespace MostDerivedIsArrayElem { static_assert(d[8].n == 7); static_assert(d[8].k == 0); } + +namespace TemoprariesInVirtualBaseInitializer { + struct S {}; + struct C { + C(C &, S s = S()); + }; + struct D : virtual C {}; + void foo(D d) { D d2(d); }; +} _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
