Issue |
80869
|
Summary |
ICE in clang::Sema::DefineImplicitMoveConstructor
|
Labels |
clang
|
Assignees |
|
Reporter |
mpolacek
|
From https://gcc.gnu.org/PR94231:
```c++
struct F {F(F&&)=delete;};
template<int=0>
struct M {
F f;
M();
M(const M&);
M(M&&);
};
template<int I>
M<I>::M(M&&)=default;
M<> f() {
M<> m;
return m;
}
```
results in
```
xclang++: /home/mpolacek/src/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:15860: void clang::Sema::DefineImplicitMoveConstructor(clang::SourceLocation, clang::CXXConstructorDecl*): Assertion `(MoveConstructor->isDefaulted() && MoveConstructor->isMoveConstructor() && !MoveConstructor->doesThisDeclarationHaveABody() && !MoveConstructor->isDeleted()) && "DefineImplicitMoveConstructor - call it for implicit move ctor"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: xclang++ -c 94231.C
1. <eof> parser at end of file
2. 94231.C:12:9: instantiating function definition 'M<>::M'
#0 0x00000000047aa4a5 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/mpolacek/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:22
#1 0x00000000047aa595 PrintStackTraceSignalHandler(void*) /home/mpolacek/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:798:1
#2 0x00000000047a8072 llvm::sys::RunSignalHandlers() /home/mpolacek/src/llvm-project/llvm/lib/Support/Signals.cpp:105:20
#3 0x00000000047a9d98 llvm::sys::CleanupOnSignal(unsigned long) /home/mpolacek/src/llvm-project/llvm/lib/Support/Unix/Signals.inc:367:31
#4 0x00000000046df006 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /home/mpolacek/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
#5 0x00000000046df495 CrashRecoverySignalHandler(int) /home/mpolacek/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:391:1
#6 0x00007fa723f7b9a0 __restore_rt (/lib64/libc.so.6+0x3e9a0)
#7 0x00007fa723fcd834 __pthread_kill_implementation /usr/src/debug/glibc-2.38-16.fc39.x86_64/nptl/pthread_kill.c:44:76
#8 0x00007fa723f7b8ee gsignal /usr/src/debug/glibc-2.38-16.fc39.x86_64/signal/../sysdeps/posix/raise.c:27:6
#9 0x00007fa723f638ff abort /usr/src/debug/glibc-2.38-16.fc39.x86_64/stdlib/abort.c:81:7
#10 0x00007fa723f6381b _nl_load_domain.cold /usr/src/debug/glibc-2.38-16.fc39.x86_64/intl/loadmsgcat.c:1177:9
#11 0x00007fa723f73c57 (/lib64/libc.so.6+0x36c57)
#12 0x00000000088d14e0 clang::Sema::DefineImplicitMoveConstructor(clang::SourceLocation, clang::CXXConstructorDecl*) /home/mpolacek/src/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:15865:36
#13 0x00000000088abbb8 DefineDefaultedFunction(clang::Sema&, clang::FunctionDecl*, clang::SourceLocation) /home/mpolacek/src/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:6847:5
#14 0x00000000088db9fe clang::Sema::SetDeclDefaulted(clang::Decl*, clang::SourceLocation) /home/mpolacek/src/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:18292:30
#15 0x00000000095128b8 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) /home/mpolacek/src/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:5142:21
#16 0x000000000951717c clang::Sema::PerformPendingInstantiations(bool) /home/mpolacek/src/llvm-project/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp:6451:32
#17 0x00000000084ea329 clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) /home/mpolacek/src/llvm-project/clang/lib/Sema/Sema.cpp:1089:3
#18 0x00000000084ea6cd clang::Sema::ActOnEndOfTranslationUnit() /home/mpolacek/src/llvm-project/clang/lib/Sema/Sema.cpp:1130:9
#19 0x000000000834e260 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /home/mpolacek/src/llvm-project/clang/lib/Parse/Parser.cpp:729:12
#20 0x00000000083495e2 clang::ParseAST(clang::Sema&, bool, bool) /home/mpolacek/src/llvm-project/clang/lib/Parse/ParseAST.cpp:163:37
#21 0x0000000005734fb2 clang::ASTFrontendAction::ExecuteAction() /home/mpolacek/src/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1183:11
#22 0x0000000005464475 clang::CodeGenAction::ExecuteAction() /home/mpolacek/src/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp:1154:5
#23 0x0000000005734903 clang::FrontendAction::Execute() /home/mpolacek/src/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1073:38
#24 0x000000000565d300 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/mpolacek/src/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1057:42
#25 0x00000000058cc12a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/mpolacek/src/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:272:38
#26 0x0000000000dabccc cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/mpolacek/src/llvm-project/clang/tools/driver/cc1_main.cpp:294:40
#27 0x0000000000d9cd26 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /home/mpolacek/src/llvm-project/clang/tools/driver/driver.cpp:365:20
#28 0x0000000000d9cf13 clang_main(int, char**, llvm::ToolContext const&)::'lambda'(llvm::SmallVectorImpl<char const*>&)::operator()(llvm::SmallVectorImpl<char const*>&) const /home/mpolacek/src/llvm-project/clang/tools/driver/driver.cpp:505:5
#29 0x0000000000d9e4e1 int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::'lambda'(llvm::SmallVectorImpl<char const*>&)>(long, llvm::SmallVectorImpl<char const*>&) /home/mpolacek/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:47:3
#30 0x00000000054d4c89 llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(llvm::SmallVectorImpl<char const*>&) const /home/mpolacek/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:3
#31 0x00000000054d39f8 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()::operator()() const /home/mpolacek/src/llvm-project/clang/lib/Driver/Job.cpp:440:32
#32 0x00000000054d3e0f void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) /home/mpolacek/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:40
#33 0x000000000353e2c6 llvm::function_ref<void ()>::operator()() const /home/mpolacek/src/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:62
#34 0x00000000046df65d llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /home/mpolacek/src/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:427:10
#35 0x00000000054d3be4 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const /home/mpolacek/src/llvm-project/clang/lib/Driver/Job.cpp:440:7
#36 0x0000000005477acd clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const /home/mpolacek/src/llvm-project/clang/lib/Driver/Compilation.cpp:199:22
#37 0x0000000005477df9 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const /home/mpolacek/src/llvm-project/clang/lib/Driver/Compilation.cpp:253:62
#38 0x000000000548a33a clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) /home/mpolacek/src/llvm-project/clang/lib/Driver/Driver.cpp:1922:28
#39 0x0000000000d9e09d clang_main(int, char**, llvm::ToolContext const&) /home/mpolacek/src/llvm-project/clang/tools/driver/driver.cpp:540:39
#40 0x0000000000dd3623 main /home/mpolacek/src/llvm-project/build/tools/clang/tools/driver/clang-driver.cpp:17:20
#41 0x00007fa723f6514a __libc_start_call_main /usr/src/debug/glibc-2.38-16.fc39.x86_64/csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#42 0x00007fa723f6520b /usr/src/debug/glibc-2.38-16.fc39.x86_64/csu/../csu/libc-start.c:128:20
#43 0x00007fa723f6520b __libc_start_main@GLIBC_2.2.5 /usr/src/debug/glibc-2.38-16.fc39.x86_64/csu/../csu/libc-start.c:347:5
#44 0x0000000000d9b325 _start (/home/mpolacek/src/llvm-project/build/bin/clang-12+0xd9b325)
```
This is with
```
clang version 19.0.0git (https://github.com/llvm/llvm-project.git d5a3de4aeef4f4f1c52692533ddb9fdf45aef9d3)
Target: x86_64-unknown-linux-gnu
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs