[clang] [Clang] Preserve CXXParenListInitExpr in TreeTransform. (PR #138518)
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Thu May 22 18:37:30 PDT 2025
alexfh wrote:
@cor3ntin this commit causes an assertion failure: https://gcc.godbolt.org/z/7hW4ssrfq
```
$ cat test.cc
struct E {
virtual void f();
};
struct G {
E e;
};
template <typename>
struct Test {
virtual void f() {
E e;
G g(e);
}
};
auto *t = new Test<int>;
$ ./clang-bad -c -o /dev/null -std=c++20 test.cc
assertion failed at clang/lib/CodeGen/CGExprAgg.cpp:2303 in void clang::CodeGen::CodeGenFunction::EmitAggregateCopy(LValue, LValue, QualType, AggValueSlot::Overlap_t, bool): (Record->hasTrivialCopyConstructor() || Record->hasTrivialCopyAssignment() || Record->hasTrivialMoveConstructor() || Record->hasTrivialMoveAssignment() || Record->hasAttr<TrivialABIAttr>() || Record->isUnion()) && "Trying to aggregate-copy a type without a trivial copy/move " "constructor or assignment operator"
@ 0x55e4e4e3cfe4 __assert_fail
@ 0x55e4df16f247 clang::CodeGen::CodeGenFunction::EmitAggregateCopy()
@ 0x55e4df175f3e (anonymous namespace)::AggExprEmitter::EmitCopy()
@ 0x55e4df16e4b6 (anonymous namespace)::AggExprEmitter::EmitFinalDestCopy()
@ 0x55e4df1762dc (anonymous namespace)::AggExprEmitter::EmitAggLoadOfLValue()
@ 0x55e4df16de02 clang::CodeGen::CodeGenFunction::EmitAggExpr()
@ 0x55e4df00e593 clang::CodeGen::CodeGenFunction::EmitInitializationToLValue()
@ 0x55e4df177fea (anonymous namespace)::AggExprEmitter::VisitCXXParenListOrInitListExpr()
@ 0x55e4df16de02 clang::CodeGen::CodeGenFunction::EmitAggExpr()
@ 0x55e4df08640c clang::CodeGen::CodeGenFunction::EmitExprAsInit()
@ 0x55e4df08314b clang::CodeGen::CodeGenFunction::EmitAutoVarInit()
@ 0x55e4df07bfe7 clang::CodeGen::CodeGenFunction::EmitVarDecl()
@ 0x55e4df07ba62 clang::CodeGen::CodeGenFunction::EmitDecl()
@ 0x55e4df115940 clang::CodeGen::CodeGenFunction::EmitDeclStmt()
@ 0x55e4df10a5de clang::CodeGen::CodeGenFunction::EmitSimpleStmt()
@ 0x55e4df10983f clang::CodeGen::CodeGenFunction::EmitStmt()
@ 0x55e4df116d61 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope()
@ 0x55e4df2725f4 clang::CodeGen::CodeGenFunction::GenerateCode()
@ 0x55e4df29cd88 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition()
@ 0x55e4df293f22 clang::CodeGen::CodeGenModule::EmitGlobalDefinition()
@ 0x55e4df284de2 clang::CodeGen::CodeGenModule::EmitDeferred()
@ 0x55e4df284dfe clang::CodeGen::CodeGenModule::EmitDeferred()
@ 0x55e4df284dfe clang::CodeGen::CodeGenModule::EmitDeferred()
@ 0x55e4df281a2d clang::CodeGen::CodeGenModule::Release()
@ 0x55e4df3c750e (anonymous namespace)::CodeGeneratorImpl::HandleTranslationUnit()
@ 0x55e4def2ef1a clang::BackendConsumer::HandleTranslationUnit()
@ 0x55e4dfe45d68 clang::ParseAST()
@ 0x55e4dfb7e7aa clang::FrontendAction::Execute()
@ 0x55e4dfaf319d clang::CompilerInstance::ExecuteAction()
@ 0x55e4def2e4ab clang::ExecuteCompilerInvocation()
@ 0x55e4def21f17 cc1_main()
```
Actually, I can reproduce the assertion failure in Clang before this commit using a different example, but I haven't yet reduced it. It might be a distinct problem though despite the same assertion failure.
https://github.com/llvm/llvm-project/pull/138518
More information about the cfe-commits
mailing list