<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/152868>152868</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] clang-tidy modernize-use-constraints causes a segfault when used against boost::futures::wait_for_all
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          tfinnegan937
      </td>
    </tr>
</table>

<pre>
    LLVM Version: 20.1.8
Source: Fedora 42 system repositories (dnf install clang-tidy)

Stack Trace:
```
[build] 1.      <eof> parser at end of file
[build] 2.      ASTMatcher: Processing 'modernize-use-constraints' against:
[build]         FunctionTemplateDecl boost::wait_for_all : </home/tfinnegan/Projects/worldstate-engine/external/boost/libs/thread/include/boost/thread/futures/wait_for_all.hpp:62:5, line:69:5>
[build] --- Bound Nodes Begin ---
[build]     function - { FunctionDecl boost::wait_for_all : </home/tfinnegan/Projects/worldstate-engine/external/boost/libs/thread/include/boost/thread/futures/wait_for_all.hpp:63:5, line:69:5> }
[build]     functionTemplate - { FunctionTemplateDecl boost::wait_for_all : </home/tfinnegan/Projects/worldstate-engine/external/boost/libs/thread/include/boost/thread/futures/wait_for_all.hpp:62:5, line:69:5> }
[build]     return - { DependentNameTypeLoc : </home/tfinnegan/Projects/worldstate-engine/external/boost/libs/thread/include/boost/thread/futures/wait_for_all.hpp:63:5, col:57> }
[build] --- Bound Nodes End ---
[build]  #0 0x00007fdb5542914a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib64/libLLVM.so.20.1+0x22914a)
[build]  #1 0x00007fdb554260d4 llvm::sys::RunSignalHandlers() (/lib64/libLLVM.so.20.1+0x2260d4)
[build]  #2 0x00007fdb554298bb (/lib64/libLLVM.so.20.1+0x2298bb)
[build]  #3 0x00007fdb54c28bb0 __restore_rt (/lib64/libc.so.6+0x19bb0)
[build]  #4 0x00007fdb5dff2c6c clang::CastExpr::getSubExprAsWritten() (/lib64/libclang-cpp.so.20.1+0x5f2c6c)
[build]  #5 0x000055d63ef3018e (/usr/bin/clang-tidy+0x3ad18e)
[build]  #6 0x000055d63ef2feca (/usr/bin/clang-tidy+0x3aceca)
[build]  #7 0x000055d63ef2e78a clang::tidy::modernize::UseConstraintsCheck::check(clang::ast_matchers::MatchFinder::MatchResult const&) (/usr/bin/clang-tidy+0x3ab78a)
[build]  #8 0x00007fdb5e756db9 (/lib64/libclang-cpp.so.20.1+0xd56db9)
[build]  #9 0x00007fdb5e79587b clang::ast_matchers::internal::BoundNodesTreeBuilder::visitMatches(clang::ast_matchers::internal::BoundNodesTreeBuilder::Visitor*) (/lib64/libclang-cpp.so.20.1+0xd9587b)
[build] #10 0x00007fdb5e7565b3 (/lib64/libclang-cpp.so.20.1+0xd565b3)
[build] #11 0x00007fdb5e758393 (/lib64/libclang-cpp.so.20.1+0xd58393)
[build] #12 0x00007fdb5e75ab0b (/lib64/libclang-cpp.so.20.1+0xd5ab0b)
[build] #13 0x00007fdb5e7587cf (/lib64/libclang-cpp.so.20.1+0xd587cf)
[build] #14 0x00007fdb5e758b2b (/lib64/libclang-cpp.so.20.1+0xd58b2b)
[build] #15 0x00007fdb5e7583bf (/lib64/libclang-cpp.so.20.1+0xd583bf)
[build] #16 0x00007fdb5e71f7f9 clang::ast_matchers::MatchFinder::matchAST(clang::ASTContext&) (/lib64/libclang-cpp.so.20.1+0xd1f7f9)
[build] #17 0x00007fdb6035e1ac clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) (/lib64/libclang-cpp.so.20.1+0x295e1ac)
[build] #18 0x00007fdb5dc12d39 clang::ParseAST(clang::Sema&, bool, bool) (/lib64/libclang-cpp.so.20.1+0x212d39)
[build] #19 0x00007fdb6031907f clang::FrontendAction::Execute() (/lib64/libclang-cpp.so.20.1+0x291907f)
[build] #20 0x00007fdb6027b8f4 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/lib64/libclang-cpp.so.20.1+0x287b8f4)
[build] #21 0x00007fdb60581105 clang::tooling::FrontendActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) (/lib64/libclang-cpp.so.20.1+0x2b81105)
[build] #22 0x000055d63f2b101c (/usr/bin/clang-tidy+0x72e01c)
[build] #23 0x00007fdb60580d7a clang::tooling::ToolInvocation::runInvocation(char const*, clang::driver::Compilation*, std::shared_ptr<clang::CompilerInvocation>, std::shared_ptr<clang::PCHContainerOperations>) (/lib64/libclang-cpp.so.20.1+0x2b80d7a)
[build] #24 0x00007fdb6057f625 clang::tooling::ToolInvocation::run() (/lib64/libclang-cpp.so.20.1+0x2b7f625)
[build] #25 0x00007fdb60583271 clang::tooling::ClangTool::run(clang::tooling::ToolAction*) (/lib64/libclang-cpp.so.20.1+0x2b83271)
[build] #26 0x000055d63f2aa3aa 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+0x7273aa)
[build] #27 0x000055d63eb91530 clang::tidy::clangTidyMain(int, char const**) (/usr/bin/clang-tidy+0xe530)
[build] #28 0x00007fdb54c12575 __libc_start_call_main (/lib64/libc.so.6+0x3575)
[build] #29 0x00007fdb54c12628 __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x3628)
[build] #30 0x000055d63eb8e475 _start (/usr/bin/clang-tidy+0xb475)
[build] Segmentation fault
```

I'm using boost version 1.87.0, built from source. My code does not call wait_for_all anywhere, so I think it's choking while parsing the boost/threads or boost/asio headers.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1v8yoS_jX0BjXCOP66yEWaNnsqvT2nettz9jLCeJywL4EIcD_216_ASWq7Tpto92J3q0qxMX7m4ZlhBjCzVqwVwAwlNyi5vWKN22gzc7VQCtZMFXF2Verqffbjx18P-C8wVmiF4jmmZBJNckTmT7oxHHzTEiptGJ5SbN-tgy02sNNWOG0EWIxoXqkaC2UdkxJzydT62onqHdECkblHcoz_ws-GBTjflpL9P5mj5KZshKxQcoujCSIFihegaxTf4R0zFgxmDoOqsK5xLSQMXqH-lfnT8wNzfAPG0300moO1Qq0xotlWV2CU-CdcNxauuVbWGSaUs4hmmK2Z571n1YFFpFg2ijuh1TNsd5I5uAUucal12z2evzLhVrU2Kz9qbxfFC0SXG70FRJdHoRFdPhr9D-De4vJVG1lZxxxcg1oL5bvCmwOjmER02cLTpRSl7-02BliF6FIoLpsKOj2Oj-rGNQYCdofQZLPboXieUhTPE0QXWHpb8TwtQkN8Nxjv9fU1vtGNqvDvugKLb2AtlG8d9PN_9V4YfI1RdoMPOv1P6hOf0gej7PaLsR-CYqDB_2esnNDCgGvMIQpuYQeqAuV-Z1t4ft_BD83_a0d69DrX0l9m44McToo7VY1NCURjgskbIYRkdVUmyZQW0ZRhKV-2rfvtu20vHo1QLqTDNhvS_KOTYa8rbZ0BtkU09eyEcogWPsG2g0-n7a9P2ROrJz5VI3pD3mgwuM-3A2rRgFpKqukYtZ-NehJrxeRvTFUSjA1mz7PuMcet06EweVmeN6C8LMch4y7klNO8LAlerQxYpw2sjPuMzz14GpCjoizJOPC0C1zVNeUpb8tZq9CCWXf3tjPt3RrcU1P6-7n9uxHOgTqlWFsS-W7XG2MSDIxTSfZUkqRKY6hjEuWwx22s8QEv_BTq1tob8hazKsphHDHtI9IaODsHkQM_EVjZABGynHXlCiDh6liC29s_LSw-yvBiA_xX-4CHS5p3QJh1q21b2vdxGgr9UqgKTKfhJ9hGOhzKe5g9xTmDK7P8xODybixAlqRVebZjq9B7HLfo4xZJnpX4y_EKtc-D4S6ko5CNng3AjYc-6PAirHDtMsh-J-LZoH-JsM5DdH5BZFdhWJ8F8NmIDIVNyvgCYZMyHseNBrh5XFyA63uP49IBLivJSAI7het7j-PGQ74Zry_gm_F6HHc6xC3pBXx973Hc5JO-5SV84_IE37SPG9VZXXw9IT4lgPB4_vTcD_r50_NCKwdv_XzwPdlAYZxs1iGbkjiBiPUqxEMjndhJePP5rdkeCLYV9dkwZSXzy8Q_lXD_Gba0CCTG6faSWMUjWsU9bR_9_uqTcE-wZfsFSKm1_Pg9n1SwNM6p6EsYFSSru5yWxsugqnlYT7dtd2_AGweXlVdaBOxRFpT0WNCszOtpr9Tr7U5IMPd-U6s49HjsqfVEG9C-zId5sD_ONOoxTfIoIkmvymotxTiLJeNOm30NNo26Vy-asz1366r9AnDDDFSrnTMoXoxKcHwrvgtr5s6ohYQHptga2gqxwN_CPi5-84HOhALzxw5MQLafoW8FWyttneDHuXRRDaJlkGpcVNpdutS0jEjEv18vZBRIND7VaDxwE6kydtJNz1rLrqxj_uEbZg7LmflAm8qIl0Nuad20f-s8F5z07L_jvEsc48UZl3HalzGrU3o62k_IeGGaKIORcTrJwKsxzaKTdBa-3XPqMvmK-yFXXBjWnsQ43bQf1ozF7MSK3DSqpRtiOx_tc-zQLUyL08P_CMRb5ljJLHSW44vOlnNuDHv_CTWKF8eIW63421sUtTcls4KvrDMBfOGnQi88fcPKbx-cPTweBDCT0oeFNp3n7X-Pyb1yprHiBX5CvVDuMcT7x-OXer_k-OMFjGTvPt09hRPQPVK_PnaRnwJ5P8hzdiIZzWJ2Ykr0t1llESUxGXcqPzjsgXkjeTg-WOBBJpmfxQiSeGSX7Pnk_e13RJMswauVj9iVdcy4FWdSrrZMqC834nGSnZh1xdBCSvO-BQ-OpuRvP-5vFis6oZPka1NpSAmfTR3Pbfbi5jD1gwlGvteonI6N4AnWW1AuTARcs0a64YE3md8jmm1xE46ow9EVfmkP4HE0ybMJCTHVCOlwbfQW23ASP8EP75jrCnClwWKlHfZK497ZIlPvrxswEGaDxvfYbYT6hf1yM7OYb_Qvb_N1IySE43V_5zaA-wdoFmtzbGJWaLwBVoGxk6tqFldFXLArmEVZMs2SPEmiq82M5qQugEM2ndZlkdMsKWuI05KQKquAp1diRglNSE6KKE2SJJrEacSzKCYlj7NpTmM0JbBlQk78LJpos74S1jYwixKap_mVZCVIGz5nUNr1BEXJ7ZWZ-beuy2Zt0ZRIYZ39wHHCyfAhpPNactv5UoFPfiTAnDUWLGbYwjp4E79uQOHGQnX4etA96D2cO3469b1qjJxtnNuFZ3SJ6HIt3KYpJ1xvfcT61NH-XO_ak1FEl0EBi-hyL8LLjP4rAAD__7JAzhs">