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

    <tr>
        <th>Summary</th>
        <td>
            clang-tidy crashing with ACCESS VIOLATION on 17.0.0-rc2
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    System:
`Windows 10 Pro 21H2`

clang++:
```
PS C:\Users\nyako> clang++ --version
clang version 17.0.0
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
```

clang-tidy:
```
PS C:\Users\nyako> clang-tidy --version
LLVM (http://llvm.org/):
  LLVM version 17.0.0-rc2
  Optimized build.
```

code to reproduce the crash:
```cpp
template <class T = void>
struct S
{
    auto foo(auto);
};

template <>
auto S<>::foo(auto)
{
    return 1;
}
```

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 <source>
1.      <source>:9:1: current parser token '{'
 #0 0x000000000438c068 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/clang-tidy+0x438c068)
 #1 0x0000000004389c2c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fda4a7b7420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x0000000003e41d2c clang::Lexer::getRawToken(clang::SourceLocation, clang::Token&, clang::SourceManager const&, clang::LangOptions const&, bool) (/clang-tidy+0x3e41d2c)
 #4 0x0000000003e42dbf clang::Lexer::getLocForEndOfToken(clang::SourceLocation, unsigned int, clang::SourceManager const&, clang::LangOptions const&) (/clang-tidy+0x3e42dbf)
 #5 0x00000000016c0364 (anonymous namespace)::ClangTidyDiagnosticRenderer::emitDiagnosticMessage(clang::FullSourceLoc, clang::PresumedLoc, clang::DiagnosticsEngine::Level, llvm::StringRef, llvm::ArrayRef<clang::CharSourceRange>, llvm::PointerUnion<clang::Diagnostic const*, clang::StoredDiagnostic const*>) ClangTidyDiagnosticConsumer.cpp:0:0
 #6 0x0000000001f56795 clang::DiagnosticRenderer::emitDiagnostic(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::StringRef, llvm::ArrayRef<clang::CharSourceRange>, llvm::ArrayRef<clang::FixItHint>, llvm::PointerUnion<clang::Diagnostic const*, clang::StoredDiagnostic const*>) (/clang-tidy+0x1f56795)
 #7 0x00000000016c1e63 clang::tidy::ClangTidyDiagnosticConsumer::HandleDiagnostic(clang::DiagnosticsEngine::Level, clang::Diagnostic const&) (/clang-tidy+0x16c1e63)
 #8 0x0000000003f18f2c clang::DiagnosticIDs::ProcessDiag(clang::DiagnosticsEngine&) const (/clang-tidy+0x3f18f2c)
 #9 0x0000000003f0f59b clang::DiagnosticsEngine::EmitCurrentDiagnostic(bool) (/clang-tidy+0x3f0f59b)
#10 0x00000000024d31cf clang::Sema::EmitCurrentDiagnostic(unsigned int) (/clang-tidy+0x24d31cf)
#11 0x00000000024d3bf1 clang::Sema::ImmediateDiagBuilder::~ImmediateDiagBuilder() (/clang-tidy+0x24d3bf1)
#12 0x00000000024d436f clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder() (/clang-tidy+0x24d436f)
#13 0x0000000002dc474e clang::Sema::MatchTemplateParametersToScopeSpecifier(clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec const&, clang::TemplateIdAnnotation*, llvm::ArrayRef<clang::TemplateParameterList*>, bool, bool&, bool&, bool) (/clang-tidy+0x2dc474e)
#14 0x00000000026e95ac clang::Sema::ActOnFunctionDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::TypeSourceInfo*, clang::LookupResult&, llvm::MutableArrayRef<clang::TemplateParameterList*>, bool&) (/clang-tidy+0x26e95ac)
#15 0x00000000026efb60 clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) (/clang-tidy+0x26efb60)
#16 0x00000000026f0518 clang::Sema::ActOnStartOfFunctionDef(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>, clang::Sema::SkipBodyInfo*, clang::Sema::FnBodyKind) (/clang-tidy+0x26f0518)
#17 0x0000000002212180 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/clang-tidy+0x2212180)
#18 0x00000000023110a7 clang::Parser::ParseSingleDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/clang-tidy+0x23110a7)
#19 0x0000000002318c61 clang::Parser::ParseTemplateDeclarationOrSpecialization(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/clang-tidy+0x2318c61)
#20 0x0000000002318f23 clang::Parser::ParseDeclarationStartingWithTemplate(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/clang-tidy+0x2318f23)
#21 0x00000000022459b0 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/clang-tidy+0x22459b0)
#22 0x0000000002214829 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/clang-tidy+0x2214829)
#23 0x00000000022165d5 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/clang-tidy+0x22165d5)
#24 0x0000000002205fca clang::ParseAST(clang::Sema&, bool, bool) (/clang-tidy+0x2205fca)
#25 0x0000000001f5b8b1 clang::FrontendAction::Execute() (/clang-tidy+0x1f5b8b1)
#26 0x0000000001ed8c9b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/clang-tidy+0x1ed8c9b)
#27 0x00000000016fa726 clang::tooling::FrontendActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) (/clang-tidy+0x16fa726)
#28 0x000000000169f82c 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)::ActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) ClangTidy.cpp:0:0
#29 0x00000000016f3edc clang::tooling::ToolInvocation::runInvocation(char const*, clang::driver::Compilation*, std::shared_ptr<clang::CompilerInvocation>, std::shared_ptr<clang::PCHContainerOperations>) (/clang-tidy+0x16f3edc)
#30 0x00000000016f70cd clang::tooling::ToolInvocation::run() (/clang-tidy+0x16f70cd)
#31 0x00000000016f8e15 clang::tooling::ClangTool::run(clang::tooling::ToolAction*) (/clang-tidy+0x16f8e15)
#32 0x00000000016a1bd9 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) (/clang-tidy+0x16a1bd9)
#33 0x0000000000a4ca0c clang::tidy::clangTidyMain(int, char const**) (/clang-tidy+0xa4ca0c)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1vqzoW_TX0xWoFhhDy0Ic0beZE006rpvfjrTK2STwFm7FNm9yH-e0j8xEwAdq59-gcaTRXuacE23uvtba9vXFASrEdp_Tamd04s9sLVOi9kNf8eERvb-IiFuR4vT0qTTPHXzrureMundD9jXEiPhTwXPAkBYDeN-iEbt1c_otTxHcOvDGfzsD6U3592oKVaZutflFUKme24kf0Jhz_DnRGg8vLdyoVE7xjGNS3gDe_cq9qey9I7qh2_CU4ROFrGFzm-PKjAnqZqXdc99pLigjIBKGp6ZsLxQ5V04YrjdKUklsmTVON7kmKnUQZWLOUGpT3978-OLNVzPggrQ7MS83I8c_SLwf32RvfwIHRXuvcDIZrB67T9D27EnJXfluc_AFQ9ralupQYNs2PuWYZ-4MSEBcsJVdTdAShQAsgaS4FKTAFek8Blkjtz_nhPK_uaJrlKdIUOP4Kp0gp8AIc_xa8C0Yc_67qpLQssAbb2sj8poEHACq0AIkQDozMZUnupul3216fOTsZLy1s6zv-0vGXtrlzn5LqQnLgWZ7GhYkRftMSYdrKMBjs-7vl9g6oIs6YBgjExc5oKaQ2qppoqlM4d0zvi_gKi6yObf3nMpfinxRrB66ZUgVVDlwDxAlgHKcF6YQEnFDVMd1qhN8AKbL8BNO9ctxFM7WR3BUZ5dqAAA5cdyag46-UKKQhWGvqmZHWbX9pZp1nBuNCSso1yJFUVAIt3igHDpwbjeG8ltmBvgvcg9v8F_gRdsMIlGTLKKmjqi6eJOO6hP9SqgyjtpNEH69CaUlR5sDQgSvAuHbgwiwQi4QDb9xD7eQUdYPC66FYYIjBlu04Sr8hTlIqHRjVRqvb6srMbn_plv-fDMHa0DwhKEDzeB5AF7y-Sqq0kPRV6hpTymIHruv8lDJeHC53vKgacl2mpislrtwSsRcE0LXw-l28Pg08AnGdLEtF7umByupyR_Uz-ngx-jsw6vTZlmG7Fxhpk1bgqmug7h_2bldjHhBHOyoBFlzp8073iO9MShFcWV1iIdLRqNQkLJZBjyUkcTLO8l7gtZB3nDwmX2Jb8HLHI9Vk-V40x-kZ9Ba9WZeeF2LXDwMzGnHBj5koFOAooyovp_uicroyZl8YOd4ytONCaYafKSdUNkLQjOm27YEqhXbUlmJdpOlJjh6pJ0lVkVFy3tIaVXd8xzhtYvBOU9O1XY5bLRnfPdPEvr2UEh3N3XIPaMyu9khWYJ4R35VZxBr1JBjXVP7CTdSskS2gRv5lP4xmzZGhfsbLAgyIuRLc8JfDqzu0IpbMwvliNqzRVFC-Ho2fpPnwqDU7bPQ3s1h-ZIwGV1MtvbWa5r3V5NHQ7zpqSrDBNdSEvepQpfyxgH0WlEn64xmihmxxiqwEmHhRYqf51v7m9rRPCkyVMi2fwa7AlMBGklbl0YK0sCG5yWwRf2HK3mVMr6qSwNJ1ek-ozLf1GfQ9q16AAfE9bO0JW5qhaZd23h9xXVu2XHt913HiDbveZBklDOlyDt2YmrqZWv8ebDIIJoDEiWcBgT0ggR-OaGCuWvI2kuG2aSjGkwXFKkQgwcE8oMNQHpDG-5e6Nn9CEmVUU6lexBaLnG5zilnCSgBfrVEmG1e__34yPLaDN2g2ZMm50LWZ5VeS4RmRe9ZmrabUaf6Gg5djKlciWipbhRAM6WKG8LDKS6wf-brg2HC5pThFEmnRV9UIc56Ku937Upm2leCaHgZy-Msxp1UwNjwR5-33QrwV-TNVRdpEodX3odAoTulfkHk8p9ZSWVrOelomcegOa1lvA39RxO_BdJyeQW_RC216iTvzoompstVI6seknTHJz2O5Gslhbyy_EeQ4PLfafmtuev2dcTIhWKmHJZhVN0DoQS-y5sNT-QDbue5oxTirckbUG8D4bmo1ndkkp1TEEzGWrrqj7isRFSVLrU8qjvKuaFm8rdrC7G4umk9i3DK-a5cDE3yZaCob4L1i40T-lDS-kwC1ss_LzeYxrk5Bhh9S231hUMdSNxYXmqrzHktsaqjOnjSmayWbpeuip2uEQ2-SesO8o-yjLH2jlP2BzifYZ-L-UP6GXpc_dPv8E-hP8u_wLrMR47vfmN7_uYn1Y7kn0Le42xUiDGaLeDqXdLj_aJ6f9-j7mMovJVVLC9jLq0FkHjYmtLg7aCo5Skc1-R6cOinEhPiTpGkwW6T8HqlwRmbTi1vk5YOhcWizeczRvwr6pGXviZni9G9SmHIpKXfFs6i0FbUgRUo3WS6k3upyqUyUQhVYi41dVkJ3lmB0xma5femVBAZAt5D9rKCtDFueZ72DlDiKrSS5lmbWc7Isd9r6ee5AcVHmg6lzAWPJcmWf2VASYfuBdSWynKVUlj_6cEwtZ7V_-8DGxjb1SF95s-D0jikSNIehdUwhRMqGXa0R1kLWhxiy4Bv-flqbkdKkalB7JCl5zfsTq-V5GnVWdK1Z2px61pXWp2afVt9MhkKMU_mY02rdqnPTA2ctE2uvFsZSLrKVWySRfRjSHvDIgp_OeOzYDRwCnfJrf6FZkajUK8ndIo1ipKhVpQw-L57Ee33Fh4PnVV9ipBh-VeWBndFyj6SltLnxqiViWjXNlZqnHihNTQiF7LRXHwvJhmtZKPZOn2my4rpKNW3ze1IfGT2-U5miowl-8wvvwEPsyGnj4vQw8T87Q09T5fxQ2MzLRW9F-5Tg0Xn0IkTa5TcklAnp2HEpkey92WA6c_KrWoxK_FdUHF_DRoruGrZ_7fPCZO5i8t9qNbkBVCYtn17PZ0S92fg6L2NtJnzH3RTAZheYzGXGpYUJ2piQF5PF_3PZT89lYwEs42MF0CoEXRRg5I5sRrgJzgNivPkVeQV6i3x8-lS2W-fN-wQX5NonC3-BLui1Fy7KD4QX--twHs_IIvG8uU-CYEaTOMHRgpAIohlOIL1g19CFvht5rhdBF8KreE5g4IYkSDB2Axo6gUszxNKr5oWSi_I9g-swCF14kaKYpqp8TwhCTj9A2ehA6MxuL-R1-YZCXOyUE7gpU1q1VjTTKb1u-VUvKTC-Ax9M78FytbrbbsGvm8f75cvm8R_AelnlopDp9Z9_QaLE_p8AAAD__3VSKi0">