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

    <tr>
        <th>Summary</th>
        <td>
            `clang-query` crashes when `srcloc` output mode is enabled
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-query,
            c++,
            clang:tooling,
            crash-on-valid
      </td>
    </tr>

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

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

<pre>
    Given the following code:
```cpp
struct Sema {};
```
and the following clang-query commands:
```
enable output srcloc

# All public members of Sema
m decl(allOf(decl(unless(isPrivate())), decl(hasParent(namedDecl(hasName("Sema"))))))
```
`clang-query` crashes with the following backtrace:
```
 #0 0x00000000004c64d8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/clang-query+0x4c64d8)
 #1 0x00000000004c426c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f3ab3642520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x0000000000e52f30 clang::tooling::GetLocationsImpl(llvm::IntrusiveRefCntPtr<clang::tooling::LocationCall> const&, clang::Decl const*, std::set<std::pair<clang::SourceLocation, llvm::IntrusiveRefCntPtr<clang::tooling::LocationCall>>, clang::tooling::internal::RangeLessThan, std::allocator<std::pair<clang::SourceLocation, llvm::IntrusiveRefCntPtr<clang::tooling::LocationCall>>>>&, std::set<std::pair<clang::SourceRange, llvm::IntrusiveRefCntPtr<clang::tooling::LocationCall>>, clang::tooling::internal::RangeLessThan, std::allocator<std::pair<clang::SourceRange, llvm::IntrusiveRefCntPtr<clang::tooling::LocationCall>>>>&, std::vector<clang::TypeLoc, std::allocator<clang::TypeLoc>>&) (/clang-query+0xe52f30)
 #4 0x0000000000e597e6 clang::tooling::NodeIntrospection::GetLocations(clang::DynTypedNode const&) (/clang-query+0xe597e6)
 #5 0x0000000000ce3df4 clang::query::(anonymous namespace)::dumpLocations(llvm::raw_ostream&, clang::DynTypedNode, clang::ASTContext&, clang::DiagnosticsEngine const&, clang::SourceManager const&) Query.cpp:0:0
 #6 0x0000000000ce6418 clang::query::MatchQuery::run(llvm::raw_ostream&, clang::query::QuerySession&) const (/clang-query+0xce6418)
 #7 0x000000000044535e runCommandsInFile(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, clang::query::QuerySession&) (/clang-query+0x44535e)
 #8 0x000000000040ff04 main (/clang-query+0x40ff04)
 #9 0x00007f3ab3629d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#10 0x00007f3ab3629e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#11 0x0000000000439d5e _start (/clang-query+0x439d5e)
Program terminated with signal: SIGSEGV
```
https://gcc.godbolt.org/z/P69MjKeGs
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUV9tu4zYTfhr6hrBBUQdLF75wnDh_8O9us-ugtwZFjWXuUqRLUlmnT19Q9EleK9gWLYoGSqIh5_DNR3I4YtaKWgHMUHqH0vsRa91Wm9mDqoSUclTq6m32KF5BYbcFvNFS6u9C1ZjrClA8R-QekTnKSHj4bhdGrDMtd3gFDcNoeoem9yi-u1IOIlPVtWvJVD3-rQXzhrluGqYq-2OoIIJipQSsW7drHbaGS80PiuEvjfFcSrxrSyk4bqApwVisNx20oNPgCrhENGdS_rJBND-IrZJgLaK5sM9GvDIHiOaIFsdncbTbMvvMDCiHaK5YA9X9afwTa4IV7eJRemF_fG7l5bk804AygrlhdgsWfxdue0VYyfg3Zxi_sSBBxIjGBJM9Of0kPEuqHEv52nijeG7fbHh5NkK5lWP820vnkuZnJcO-r7V1BliDaOYZED7pAncpLi8R0zuyD0FOKXoU0RWKhGYcr0StmPwfU5UE4_kOTsOwnfhNFc9J93tyRA-OppuYlXGW0JSSAwwpSkSX-zxbZ8lYCtXux7VqwwSfWD3JAjpv0gMX98BBSjcxCbsxpO-0luIoPIL7oDlzQiv71Oxkj6gn5UxrxSt8gc1CuWdnULwY8nR0s2BSovgBc62sO_B7YeM31XFu7uesqw5rBw7Fi5O4Y-Iq3Eq3hsMxjrf9e6D6pw-ypy2UA6OYDNIXpmr4ANa-bJnq4WdSer_a_HtZHHLJ_gqvXWL_bVL_gRRuMvoKPCC6cPTytvOLOgj-hurZ91DpCYe3d7qTq9NdTCEbZPmTrsAzoO0OeLfdfjj0iOaXp_NNeXSVN7w4wcP4fPgevrSHj0NcbZJLfMG4e_V3ldLqrdGtxf7GsbuuVBdhumqb3SXM9wr4QApXU_PVy0IrB_tbdUmwWmnrBLcPqhYKhgpY2GofmWI1mB5Hn31qt-t8dsVKlkT5ACsfmePbz2fZtOrnk7_w07lYgbVdlekAdmAHljJg6i3ltH_LJWmcAjatWhy6mSe1FNJfrXzLzO2avl7z_T6KglAyK_jaOtPtz4W36in7gbUzTDh7nA5F5PaBOswPXzXvkzFw2XdZ9mjI-zSQzYYkuGFCDbnoNHouiv41T4uq-JPXfGdybrNoHJFrn5AQvF57s7V1zLj1BcafjgJJP8pVpxMXVQo4-B9Kv9M5OXk2ujaswQ5MIxRzUIXez3ZtEYrnePX0uHp4_PVmy7d1btd1dHSJ6LLmfFLrqtTSTbSpEV3-jujyOSs-fv0_PNpRNYurIi7YCGbRlORpnpAiGm1nHGhRkComecwqGqVQREWWRdMNKdKknMYjMaOEJoRSSrIkiqNJQtiGsWxD0rTMkiRGCYGGCTnx59DHHglrW5jlNC2ikWQlSNt9e1Da44MiuvBjiN51z1E-bNJjsT6N--54rNX4lUlR-eH0fmRmPui4bGuLEiKFdfYMwwknYfZOn70FhVFGDt8UGTl-ZDS-wguLw6dHNWqNnF2xLdy2LSdcN36f-PoT_o13Rn8F7hBddiRYRJcdD38EAAD__9OdDZc">