<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/112483>112483</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang++] Assertion Failure in clang::OverloadExpr::find
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
yype
</td>
</tr>
</table>
<pre>
Hello there, the following invalid test case triggers an AF in the assertion trunk.
```cpp
a(){({&tree)
```
Tested version(s): 9.0.0 ~ trunk (with assertions enabled)
Example: https://godbolt.org/z/3rhhf6dG1
Stack dump:
<details>
<summary>Click me</summary>
```
clang++: /root/llvm-project/llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From*) [with To = clang::OverloadExpr; From = clang::Expr]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics <source>
1. <eof> parser at end of file
2. <source>:1:4: parsing function body 'a'
3. <source>:1:4: in compound statement ('{}')
#0 0x0000000003bae128 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3bae128)
#1 0x0000000003babdec llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3babdec)
#2 0x0000000003af9048 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007b3c51642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007b3c516969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007b3c51642476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007b3c516287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00007b3c5162871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x00007b3c51639e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x0000000006851dbf clang::OverloadExpr::find(clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6851dbf)
#10 0x00000000070bc67b clang::Sema::ResolveAndFixSingleFunctionTemplateSpecialization(clang::ActionResult<clang::Expr*, true>&, bool, bool, clang::SourceRange, clang::QualType, unsigned int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x70bc67b)
#11 0x0000000006c2e57c clang::Sema::CheckPlaceholderExpr(clang::Expr*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6c2e57c)
#12 0x0000000006d712ad clang::Sema::ActOnFinishFullExpr(clang::Expr*, clang::SourceLocation, bool, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6d712ad)
#13 0x000000000711894e clang::Sema::ActOnExprStmt(clang::ActionResult<clang::Expr*, true>, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x711894e)
#14 0x000000000674a454 clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x674a454)
#15 0x000000000674071c clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x674071c)
#16 0x0000000006741630 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6741630)
#17 0x0000000006742505 clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6742505)
#18 0x0000000006743c5a clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6743c5a)
#19 0x00000000066577d3 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66577d3)
#20 0x000000000668be8d clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x668be8d)
#21 0x000000000664b51e clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x664b51e)
#22 0x000000000664bcde clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x664bcde)
#23 0x0000000006653473 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6653473)
#24 0x000000000665435d clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x665435d)
#25 0x0000000006654800 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6654800)
#26 0x0000000006646842 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6646842)
#27 0x0000000004507088 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4507088)
#28 0x00000000047c1509 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x47c1509)
#29 0x000000000474008e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x474008e)
#30 0x00000000048a70de clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x48a70de)
#31 0x0000000000cdc07f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xcdc07f)
#32 0x0000000000cd3d8a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#33 0x000000000454ad99 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) Job.cpp:0:0
#34 0x0000000003af94f4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3af94f4)
#35 0x000000000454b38f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#36 0x0000000004510c8d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4510c8d)
#37 0x0000000004511d7d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4511d7d)
#38 0x00000000045196a5 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x45196a5)
#39 0x0000000000cd8f4f clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xcd8f4f)
#40 0x0000000000ba8474 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xba8474)
#41 0x00007b3c51629d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#42 0x00007b3c51629e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#43 0x0000000000cd383e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xcd383e)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
```
</details>
The assertion failure triggered here is the same as the one mentioned in #77928. However, I have tested that an assertion build from the fixing PR (#78035), linked to #77928, still crashes on the test case provided above. Therefore, I believe it’s worth reporting this as a new issue, as it might stem from a different root cause.
The test case was generated by a fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWk1z2zjS_jX0BSUVCX4ffFBka8ZTeSt-Y9dcXSDZlLAGAS4AynIO-9u3AFISQctKMmOltnZTjk0R6MbTDxqNhtBEKbrmANde_MmLb65IpzdCXr--tnBViOr1-ndgTCC9AQkeXpoHVAvGxAvla0T5ljBaIQ1Ko5IoQFrS9RqkQoSjxQpRbiWIUiA1FRxp2fHnueffeP5i-J34_U_Ztv0b4uHMw7mXfjIP5neiJYB55UqM1TyC0lChLUhFBfdwpkz_cIHyuT_30b_6kZGHsxeqN0dECgEnBYPqqN7-vt2RpmVgNGy0bpUXLjy88vBqLapCMD0Xcu3h1TcPr0K52dRJ9Vswln_QpHxGVde0RnJsb7isQBPKlBfeHl6prmmIfPXC2yWj5TNqwAuXHl4d35_krP9YMsLXHv5kfsIF8vBKCqE9vGJs28xaKf4B5f6jh1eUl6yr4PjioWtbIU2PJVGa8vV844WLOM2MtgpKpl9b8HBGOi08nCMrFi68cFESpT2craRoPLwwbV78yRL8KJAX3qAemu37ZQuSCVLd7lrphZ-QEZr2sW3xjRl3cfAZL_GpIl64fBSGB5z9SZgdCiceTpCHsYURLh9f-3bTSOS6a4BrJGpEeSmalmhaMEC9LYGHsYdTVBPKoBoc8v7z7eLhFqmuaKhGBBXdGkkw1CAtpm5A9aYr5qUxfM_jhG6qVAfKwytEeIUG1u16KCVRG1SQ8llLUtqF1UpopShBKaiQEp3sXxtJopQoKTHuLTuOVClpq-fvupk_9_z8Xoq1JM2BBjU4hmgNMkMHZSBnsGuZkCDNOzMLs-O6mNkF4-FVQfm-ufcxNFtXL0TWswjN1mgmjF7StkZ7p9tOzxWaNYYLNJvtsmRGVDNTr1yTnRfeUK6BoVnNxWwLshAKTDuaPaDZbF2WMy0EKzeEci-8OYvXdFactGojNJrVpWBCzipK1lwoTUvVj2GZdl6bxdbTu19TgSHMC5cgai-8RS2RCiQiGgGvjPvUlEHfEw89jwrCReCFi8iwa-RMUKw7Xlq_NfETeTglHk57-fCcPOXI2Ck6XiGliQbrvtadUxMF0xvzsI9SyMOhj_ydv_8XFgQCnI0Wp3pV_cO9pFxbT3ns3S07dpLk5UkoLYE0dj0tEeW6X13ZB_mLhz_5uwGegz-Y4C8qKE_hXzIgvGu_8Ae65mbtZx2321aFmDCjXAKtAeOgxQ5aUud-lKGl8a-vUIotyNce3u-EV8wMmg1MOn2WgmvY6bnZ7cKFb_8fhgiHIdIiLOMgiXCM_cE0RgsPr3ZZ8pREM0Z5t5utedc3lHMl5okFbkUc2JGrM0_yukSt3kgg1dMzZeznBrDyzgDxFHSUJmitLBc_Cz5KE0d34urGWVqHiBQmIv-UZivoaE7faA6Kn9YZFI7OzNUZ5pAnP6fTijg687HXJVkcVEX9_q5q3tSUVx7OprvqsD1_7DoZAB1zJxwGTlRK_aJM0mKM-AEa0j99BSXYFha8WtHdA-VrBqsheD5C0zKi4aGFkhJGvxHdp3UjRQvb8yuojpnd_5TBS5P22UDbx7ZCCDb-O4ZlY_JXwtcwafn_jrBHmzUs0SHwXCZKDnQ5fDpRMikxxGl5ms_lBsrne0ZK2AhWgexp-EWe0ANzkDsRM6nSAJPqNPJFqb_wFeVUbVYdY2eAn5izz6IcvOPtBPd_P97a3hjH2tDx-yDI8gjOWGssetCN_js-fTH7BviOfZEzm2lEojga23dv86bRc2_hkMi4Zr7pWxkqhr3xEvPVw3XsiSf2-GlQnrXnYMsXeQMlI9J63aLWIBdaS1p02qT7o-TqoSGM_QmlFtKdzH7i7WSGuDvGpx-n6Ow6mK6TXn4M8uRo0x6XmAbDsjMNyWQagiT0_8I0_KfwfgnODCUOZ-mEMxz78VkblsPB4sDdJ1G9eji7VHjsITmYswnmsIzJWcz7VGCKeSRj5v8db3c8phRm976QRxtDHEvdlC2J07QKf8jSG6gpp28Tnfv-ZLn3diF_xGv3GdQdrwUqBVf6vNRnouEYBT5TpS_kzz0hY8aw7zKWFZBVZ60zVPwmRde-S5RJHN8afKTw9IL-wUD5LtFv-_9QaB70rYS0-ecdpxcj33LrkO_ml0lUxAF8l_wvcuS0d1yD7A_mf3_TedPj7IQuyhKUsqeEmhpGLkCZZcShDE8pK6vvUzZsVA5z7y73Dydu6ne_hriycokLJ6ExjNLzofF217uWu9P_ArIuEfeMtQ4d0YSOKIzPx71H0X6GLbB-4xvz8KUl_-zgXk8SnkOg_Ar1yXTneCr5P1F1DO6aVkht99wL7Zi9mQ4P8ZSHzD-fA66oVPq_hIzMd5I7nEyCS5JF-A0Zi4dH12QL_dSXHJdY1waSg9lJSKPYT_0sG2Neigp-A96fbvfnWSg7DcOr_tLmg5EOQBykThoapWUQ-_kY6UqaxIBXJ6BeCGSPwQGZuyAj38_ApbMf9o4rTXgJpxl936qL-PKAc2yIe0MRZST13Y1ygHy0Z3tIlLJz9l4kQg_4HAOc5Mgvq9JPa1SWwVNDqHvmXEhJXm1gWZYbIvcp92L4osZ9h5doK2h1GTt6lI4ZeGJGWGUE7clfBo82Upw-QN81LTtpk401RxGjY0iqR8eNHFWSbkG-ve8wsEI3bESkynNLzEjv_jrtSVpubetQIGDvz-wtNGMFKZ-fau4G_H7swYeWwVI0DeHVdFGfnEOlh36iNaMTw8GIHy0pXw_bSD_BB4Gnp3K3C4L-Q0EULZ-U7T6w6HQ2L560JFSrffNEHWHMrIn-m4yh3XRZHEO8daKecyvi4ZSRpqjsxeOBKpztL8v-EMXp-YimV1xRHY2m4tRF1vBNfscfSA3s1aHz_NRd4NauR-x4fjxxsSLMnPuT_zkXMaTPWyL13D_rC4lLXOCX7pncIc7OHXmzY-7ZdIL5RNB0eO_7iTNdF06yM7LtYxMIa7bjUJNUJwiq9Kd5-UMU6n1S_hDFZ6q0Q8q50Hzwg5ZQ4wL2aurHeRyc5Zewachy2MwmbOYJid9DfjN6dhKHExnDe7PwC9m8QDpr6XH4yycbe1ZHQ3jbZyh7_DasLIag8P1t-8NzEoNsDD1yckO_IFmURsiA_uixe9XO2MHk9j-v8p8stLAijk481QmRj56ejNiT0kTqp5FxPzwKRO4o4TSTy0JAvf6PnzOj_DD6uDlcIJDSbDiL3ttQPZwwUDmsiL6yDtliQNhR410VoCCMDMxOAZptkRZIASA6SvuHwfYZP5KgO8nBrEkjfLoC1JZKvqmq7OtCnfJTA6qThzJVqNAGJCCqbFmeIo3pbJ8FB9QAN1L2tt_WjKQ5zubod_ECJgDgJbpDG7IFW_8KFdIbohHho_GKjrLKcNP0lbN0R_ka3X_tpypMMz-069ksScqfjQ5xGKnf4yljfb0gKCT6ctpjuW0rxZZWUCFSiC3M0aMxpxZ9re4dKoBR2AKi2rvFXuZ7ea7Qi5B6M9Q1GjR6Q5WxmiAOL8gWLdrKQ4WoRg1dbzRSGpreCoIqWtcggWskhTAwOgXzKeNHhC9EoTVwkLZ-sXhFBNXdt28g51fVdVjlYU6u4DpIce7HeRjjq811kEV55SckCnFSkLQiVQx-EuSkzEI_yKMreo19HAV-kPhJEMd4nta4yJKcVHERFFGVeJEPDaFsbuLcXMj1lTXrOghwlIVXjBTAlC15xnhwa-zFN1fy2pZwFt1aeZHPqNLqqEJTzWyd9HghxDejQtXV4F2Uf79C56qT7Pqvl5QOlmyv8b8DAAD__5HGBH0">