<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/139789>139789</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-tidy crashes on Overload pattern constructed with ()
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
HaroldVemeno
</td>
</tr>
</table>
<pre>
The following short c++ program
```c++
#include <variant>
#include <iostream>
template<typename ... Fns>
struct Overload : Fns... {
using Fns::operator()...;
};
template<typename ... Fns> Overload(Fns...) -> Overload<Fns...>;
int main() {
std::variant<int, char> var = 'x';
auto fun = Overload(
[](int a) { std::cout << "int " << a << '\n'; },
[](char c) { std::cout << "char " << c << '\n'; });
std::visit(fun, var);
}
```
makes clang-tidy crash with the following backtrace:
```PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: clang-tidy clang-tidy-bug.cpp -- -std=c++20
1. <eof> parser at end of file
2. While analyzing stack:
#0 Calling main()
3. /home/stepan/clang-tidy-bug.cpp:14:13: Error evaluating statement
4. /home/stepan/clang-tidy-bug.cpp:14:13: Error evaluating statement
#0 0x00007ed68a019920 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/libLLVM.so.19.1+0x819920)
#1 0x00007ed68a0168bd (/usr/lib/libLLVM.so.19.1+0x8168bd)
#2 0x00007ed68924def0 (/usr/lib/libc.so.6+0x3def0)
#3 0x00007ed6928afce6 (/usr/lib/libclang-cpp.so.19.1+0x8afce6)
#4 0x00007ed6928d8268 clang::CXXMethodDecl::getThisType(clang::FunctionProtoType const*, clang::CXXRecordDecl const*) (/usr/lib/libclang-cpp.so.19.1+0x8d8268)
#5 0x00007ed694640fbd clang::ento::SValBuilder::getCXXThis(clang::CXXMethodDecl const*, clang::StackFrameContext const*) (/usr/lib/libclang-cpp.so.19.1+0x2640fbd)
#6 0x00007ed694592105 clang::ento::ExprEngine::handleConstructor(clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/usr/lib/libclang-cpp.so.19.1+0x2592105)
#7 0x00007ed69459affa clang::ento::ExprEngine::Visit(clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/usr/lib/libclang-cpp.so.19.1+0x259affa)
#8 0x00007ed69459d3d0 clang::ento::ExprEngine::ProcessStmt(clang::Stmt const*, clang::ento::ExplodedNode*) (/usr/lib/libclang-cpp.so.19.1+0x259d3d0)
#9 0x00007ed69459e065 clang::ento::ExprEngine::processCFGElement(clang::CFGElement, clang::ento::ExplodedNode*, unsigned int, clang::ento::NodeBuilderContext*) (/usr/lib/libclang-cpp.so.19.1+0x259e065)
#10 0x00007ed6945326b8 clang::ento::CoreEngine::dispatchWorkItem(clang::ento::ExplodedNode*, clang::ProgramPoint, clang::ento::WorkListUnit const&) (/usr/lib/libclang-cpp.so.19.1+0x25326b8)
#11 0x00007ed694532c56 clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>) (/usr/lib/libclang-cpp.so.19.1+0x2532c56)
#12 0x00007ed69495fd13 (/usr/lib/libclang-cpp.so.19.1+0x295fd13)
#13 0x00007ed694963a47 (/usr/lib/libclang-cpp.so.19.1+0x2963a47)
#14 0x00007ed6942e1980 clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) (/usr/lib/libclang-cpp.so.19.1+0x22e1980)
#15 0x00007ed6925d9b86 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/libclang-cpp.so.19.1+0x5d9b86)
#16 0x00007ed6943021a1 clang::FrontendAction::Execute() (/usr/lib/libclang-cpp.so.19.1+0x23021a1)
#17 0x00007ed69429808f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/libclang-cpp.so.19.1+0x229808f)
#18 0x00007ed69446adfe clang::tooling::FrontendActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) (/usr/lib/libclang-cpp.so.19.1+0x246adfe)
#19 0x000061188e79539d (/usr/bin/clang-tidy+0x5a939d)
#20 0x00007ed694467f51 clang::tooling::ToolInvocation::runInvocation(char const*, clang::driver::Compilation*, std::shared_ptr<clang::CompilerInvocation>, std::shared_ptr<clang::PCHContainerOperations>) (/usr/lib/libclang-cpp.so.19.1+0x2467f51)
#21 0x00007ed694469f43 clang::tooling::ToolInvocation::run() (/usr/lib/libclang-cpp.so.19.1+0x2469f43)
#22 0x00007ed69446b845 clang::tooling::ClangTool::run(clang::tooling::ToolAction*) (/usr/lib/libclang-cpp.so.19.1+0x246b845)
#23 0x000061188e7a0978 clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef) (/usr/bin/clang-tidy+0x5b4978)
#24 0x000061188e2cbc77 clang::tidy::clangTidyMain(int, char const**) (/usr/bin/clang-tidy+0xdfc77)
#25 0x00007ed6892376b5 (/usr/lib/libc.so.6+0x276b5)
#26 0x00007ed689237769 __libc_start_main (/usr/lib/libc.so.6+0x27769)
#27 0x000061188e2c21a5 _start (/usr/bin/clang-tidy+0xd61a5)
```
The version is 19.1.7. I have also tried LLVM version 16.0.6, and it seems to crash at the same place.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMWV1v47oR_TXMCxFDoqyvBz94lbh3gaQ32KR79y0YUbTNrkQKJOVN-usLkrIlOU7WTluggRE7InnmnJkhOZ6A1nwjGFug-AuKb66gM1upFn-AknX1nTVMyKtSVq-Lpy3Da1nX8hcXG6y3UhlMEfmCyBfcKrlR0GAULO0rCfyrH7aPSMQFrbuKYRQVO1AchEHR7ZshLrVRDJp-LFga1rQ1GIaiwry2TEDD8Gw2wyuh_RxtVEcN_nPHVC2hwiha2kE7B6XWNu60ZewWLFG0lC1TYKRCJEMkn81mKHIU0xv_4WOLB0OIZN4MIjm-noxERT8S3fbYwZILgxvgwlvdU8MYa1N5XgevFFwYRApMt6As7g4URtENRiR9QSQ9QGLojMTrTrjREa8eef_jI4tIZjmAtW7ND4ap7Iz1PYoKjAixsxAheP8IhrEUxYXwFLD1FyneM2W52_TIPzTlZllb_SP6gal80D3xGtfcIJKtO2F9tgM1TE1vxtmIgmUDP5nGtAaxuTa8esVUgd7iX9xssZnkdwn0p1FAmbUyAnm4u10-3mLdlQ03GHDZbbBird0MRuKtMa3LMrJCZLXhZtuVMyobRFZ1vdu_XbdK_pNRg8iKa90xjcgKg6jwfh9YKp7ZgcYMBctHA_Qnrrqm9aSCGQryh37rgdp0DRPGmp8oPHy8LrvNjLYtvr7G185_N_0GJdY3oUVDUcHk2iZdC0ozhcFgJios13jNa4aCJbHT_trymmEQUL_-y50Glpk17AKUIxIFuIC6tmND0qNgGTkjZLWVDUNkpQ1rQSCyessSRctwbn9FFvdWKakw20HdgektGns4GRQs5_8LUOxEBC9BEAQpq5IMgjDPSYBdIF3q6df-RHlQXBgXnSeXMiQbJin49bw_00hiU9Tt7hw7n6w6rWxW8NL_vrv7fj_TchbmsxCRL8FL5ox651lK4RGlJCurs6Hs5AGKjKFyMq_YOjgNRS1O4kAiO2vAiEYYOclgTVnyDoYLBm3bKSe3YsCbT_GqjCSZT2HvzeLHj3tmtrK6YbT2jzbMPG25fnptreNHc1edoIZL8aCkkXYYUym0QWTpDtcJ6DdGpXKgo0nvxOgdJY7roCQeK5kn82BdVmOjTBjpPz1-h_pLx-uKqYOi4scPK2oqaCL-PTEuDVcKGlZIYdiL-awg4jkPipKJojgnYRCfVnT70qpbseGC-b-3IKra8vF3tbt6Rwvt9PfkTEBrWbHq77Ji5857ZMZtusuEe2mD8PRIOKzXcJ7w7_3lNIlPY_6_xFo5g9jsSGwVVcF5Yh-UpExrK_C_IvlSHZbpoCM_0sGC5Mxsbb2OYvW329rfBtNdOHp-fvQ64crsCvMP1tn5_UnQb95POcJK9Y6wF0YwdUREkjI7bb6Qio0dUXHdgqHbv6T6-dWwZuqHc5O1L1Ae5EfKrYk7rs0_BD-kyuWp7LQNysNj5TROzlN--8JoZ9ie1VT4naRg75W35-vbMA91wFdhVKf5jn1j60KYB6NQVJwk0zvs0RYjPXh0-wlf0DgZfEEmvsjjdRVGFwH6JQNgNAVMIpinlwG6JQPg5OqfExbm2eTgue9qw9uavdh7pGv2l-Uf7m55UiB07cJiU2gasOXj02E7XZxUnshAc3Kvk7jKy2ySVA-2bl4-Ph0dgayBvvwrpayH94vIeGsDl-mNHAUkhHDMZaWsbFEtXR00Se3919ALPOHxB-vTa5HkWZCtJ2WVbFpeM_VVaAOCTrdWT2lasE3pfiJWjsPAcHqXzROo1mzM0Ehpv6Kcsr4CW6e89jV8J76KXb_tEckOXz71FhSrntvjzTxIP6yyW3hy-K14ze5BwIap_vD4LexD8YdNZOCCqT9dF4NL3waZQt9w2AipDaeHvXL5PeLdNThzf6EmYZhlLM3jKJ9-8yj59EuXT1nIo7w6oJDgKCTpOg7fDcmTlPXYhadi4RsNp4uLSvHd_pzwIelXnefud6P4nwTq0iBYBw3uC4_cl6_n0aXu-8TW94YGGuSIRpnN43dpFPa55TJm8BHn_f7_RMpaIgPNaJqyEOTppPRxWbon5Wm6vM1OzjlMGF8mxfuyh4S7AQMlaDaqbMalwVIpeP3G1igqDpn1_ExfXsLQ_1GC5vRZG-XAC9cXHKehffBsFHCj98NHiQp1bdNAqtG4f_2-SBmGd-u-4eF6jfBqj7DHV21LQ480vdvGyI-OvBV5FNPTp0Y5z9OhkiPzSSAJLWmang4k3Qfp3redRq3U0SnxJrNOsqjWNB0KFBJP-yVRmpTxb_slxM4aMJJjjDTJ8fOzXfOsDSjz3AAXZ6CmST6gpkfuISHE2OOdoTIJYc9w1CpFwfJpy_COKc2lwFxju89m6Qx_xVvYMQy1ltgozip8d_f9_jAzTGbBzGW4a2karBlrNDayb2mCcf1NDQ3DbQ2Uza6qRVTlUQ5XbBGm8zRM7O1ytV3EtKIkqVKSJylNgjCKSEZZGUSUAItpeMUXJCBxEIeRfY-jWZnMwwBoFtOI0YDN0TxgDfB6ZjNxJtXmynVcF2GUp1l-VUPJau3-9UHI2C8ExTdXauG6tWW30Wge1FwbPeAYbmq2OG4lM42lGP4X0YIxTAmfeaqjhlW-2ezP4KtO1YvP94x7EbsF-XcAAAD__8KspqA">