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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits