<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/80869>80869</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
ICE in clang::Sema::DefineImplicitMoveConstructor
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mpolacek
</td>
</tr>
</table>
<pre>
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
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl9z4ygS_zTKCxWXBPr7kAfHjndnb6YmNfFezZsLAbK5kcEHKJt8-yuQZAnFzk4yycxV3aVStixB8-tfN003CGvNt4KxqyC5DpLlBW7MTqqr_UHWmLBvF6Wkj1crJfdgZ8xBB2gewFUAV1tCZlvRzKTaBnB1-6WIIYrs03AZhP1nGrb_JIDX9t_dBUAb1RADViDIrlcBzFcBTN1_EaAlZTUzLEDXQba0nyN5ABi2P9TYPl5wYQK0DAN0MxH7yYrt7wGwAtVRDPgUwNwNM2pg7xEptLFX6amnn0b4jo_-Hh74MID7FKCF-4nmAZpPhS4pq3BTmycCbbcA3YCqxe1r1j_ce4AVM40S45sWqW-P8SCK6aY2GnBx0nTtzwdSY7HtrIjmIICrndyzAK56RwngSisSwFVd3-8vD0r-ixETwFXXcVXzMoCrO7bH3deSkXrx9euMHA4BmkdJnoZW8r3kFLSdHFWuh7tasooL9mF_qDnh5pO8ZwtrNWtzqawNR51kowj7KAk2XIoALsYSF1-_jjpaGAGcOzPMwVxrpmwfYFWH-WSUywDdcL1sjcVobxRnSHCy7VOYox4BjE50opLp9c4OQ2qsnAa_43s2v5b08Xv62552CnXwvPbwWRLBJSC4rgE3oJIK8K4V2Mt7Blr4MIAZqDCvGZ21rnH78WZ-dwN0U-65ARiUzRYodpDKACMnQaNstnpmHaQLGwALCrggdUMZMDsGiMJ6B0pMvhmFCbOWOyh2UJIwrRkF2hnW3rY9sdaScGwYBaoRQBPFD6aDdWcw-QZosz8cg1I4C8LiVsmtwnuA1bbZM2EsODB2b3BJgAtms0XbLbLdArRgsrKz7YCVZgpgA5igQFag4jVrW0Lbsu-L5hEM0Ny5FRfaYGE4NlxsQdUI4nyMWmPw1t1g1k3nY4TI-ukLUQjCh7D_izOMY5wAy2PbWD_q9uJWcWGc5uuWvnxopPBfG6mNYnjv3GEBbAR1zvG9c9kJO07l5mCNHMDVn4I_2Bt8K3CtZ1yQAM0ziAI0h3BQIpoqkRQJmCBuZfyOBa2ZnSw2GrSz871gFrm11IASTlDmYQZPUf2lER5YfZyaPwizx9fFxTCxNIYDQDQBWNAiPwVwUTMsmsPnDmYA80a4pZ6CWlpnfy9KUZrZzxGnsQc5pVUY2mCUYyHF4142Ggi8Z_rgXLbo4NtI8IURec_U40IKwx6MDVvt05Z01yaAuXPkBXh7_U6B6AyTWfdOBh2TqY5xkQCv_9S332r6PQMSFZHv3WmHMqtwBlGVlQUOwWajmDZSsY0ywLmxHSON228y03KWBvA6fECswKG10FFe5ssjNEcx2GwOZqcYpptvvK43dhlhNtTiLtKtGq2OOlJWNnYp2NqhLuEM5ZdROqsIKmYPebpxKMTB1AFcjaXOrKfFsTVEOsDJp-rljIGtdsS_ZmDdTZ3VbGZ_PWrKDtoikdo5vsJcMwcFWp8fISl8JCnKqwrgUjqGX47D0NbqToIbMLeW7ZYIG1zDJwNGJdiIelNLTDdU7jEXMyJr-prxuXAGsKL2ektwCyGKssytcEcQ0YR_RJLseY9KSZIdPcqK8OJvntMoZuGvyQffJ8lNXIQc9EW-vrgsyxy0qh3zzFWXMEyUcsOkE236tkc9vKdTIt5ByTSPsyE0WhXjiUnLomKnTXrHjBU2TrBH7X6ZSlEOC5vLoXBQyov3RRLBvMxPK_XhmPyxwTh94vcCPz1h2VLK-un3mzCw7krZEXo7cMdIEsWWEBgNhKQTQrIoI6cJuWWqkmp_ywTlYjsMwKWwWdRPUyKNExtEERyUyDxXjRlGsDitxJyYz-JG0M_VWmGhawf_T8HNSuGtXe1OTFZ3tf6zb_EPLugbKXrMFnObPqFBoXyqUErOlNdnFXpxYvu3KCMU-utG4aFEMYOpF_RvXc01ul7Lw0d2z-p2LoyJ_nzA_27YrVEBWkxix29KNocvzFZxT-PmQMQnSZvaritS2crEsHaX5tUEOMD9t-rTR5fnRoPrwXDCQZEw-ISD-d367CLwVkHAwzu_W_dWS23Gi4aUA3oFXZKhuCo9xPO79UrZfFTQebt-uds3D4w0hs37Je1HsPbyR5et3KOr5ch9Dai9BCOJ0zjOEi8dkJT9xsR7Ie7ED1cTvEnsLZ4QTUkuQuStCucZfm9uQ1cDoXwA6630SZpQFIY-t_sDr5lq4zFhp-k9r92PTcSRQlMgQ7Vtc5d4NC29dT7JCYkgHqvUgR8E3h9X7_w5zX8sxexVWbu5vjoLotMLZnBiKW-1DikuCSGAkGhj6wRv32iuFH50UXNBdlgBt1Vu4dsougD-PbgAr9qy6bUzUta2wKKK39siedVD6hUp7PSIhzwMZr4iBaEwBT0fi6glaKTO3R7X9T-ZTfXb7YQTWrlwOnSxMrq6um_3Sj98ol570Vfr6XivxyqXT5Wrom7y93bqtj6sDo70-XdBbx8GMKvxvqQ4gNlrOOrEyANT-Li3_SpB7Z03JzRxm2ejYFpM-GQxiwAXZsRYvzm7Uc7l7cNXctPt5BJc1yUm3zaV6FOS_xLj3dh-bqtsPOp32-zFG1fdRv9wY75c28xw_bEvbXB982AU1rOdneWZl8r6m-BJTGOSF-9puF_h169jKvWTfn-nPYkpKiqvNu1mS7swLaKF3O-xoNPc4eQSoA3t2WlhBGgx4sUoLrZdit2uD8cOmw15eIii9keJNScb7Zp37HmN7Y2NUZgb3T-eiMN1bdc4qUbPbZNRXTw_WuDklDkfwH4kIrXr87KPR3_IsgtGcRz6xSaCUzOxsGrPP896tXvaYz8fYP5v5omZh1D3E-JW6qco_okNShCDJH2Zid_EQ18ZW3L7MfLaJ4c5aTJ22FOnEcOJGa5Y_eg53fPav_P5SOy27aORrZLpnCxZ_D8dOt8-BA47CCj12c4y7O9OeWy74gY_qXJ7E3jl1qSjbTBKoRbPjDFuOvd2Vt6MkJEmfd1ZFKPDcstMNmWGVsVLmflDlvo8LX_I8iPXxqPluQzn6D4HzFX3_tULmOx87OfwCRM0iVq5z2eOEcLnsC9H115lfaKuP2eHn8jn63cRjgwux1VTVEC3tz_sFqAndVNY0LeoQ9--4muTrGFrOQ596BSlEAEL-gVjlw2v6Wjs87sV9sGlhyjK_Jo-npyRpkkUY7DZ1Ly0UR0rs7EJ3aaH-NKjWqKbp-fV3QH6qTHcIp_FXgERwylGGJY_CKa9dG0dgvYEGeYTdtCpkT12nMPF4W8fP1wvNnAGZ8l7IEOTQ8w4nkyBEsEEtJC6E-4XOlNp503nMRF0p-Gt1OE4_PxLm-sd14Br8Bc3u2caO-ngninNpQBRMQtn4ZY7wJO3ebnZNeWMyP0ojxrhntleNMGIshgzVsVVXEUkgWkBE4QoLYuKVnGCWVVQdFRgjdWWGfeCneP9shHfhPxLXNZcNA-XW9FMUF_QK0QLVOALdhVlYQZRFhfFxe4KR5CyMM0jFCbWLyikRYRxlBZpQktaXvArGMI4hGEapSiPilkRlSmGKUURoxEtaBCHbI95fXz98IJr3bCrPMzT4qLGJau1ewcawm56wyBZXqgrR0PZbHUQhzXXZniB8cJwU7OrD4sbwMUr3lG4aFR99TI72PzdwraT2iH_TwAAAP__S9Xa1A">