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

    <tr>
        <th>Summary</th>
        <td>
            Crash when 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    If you try to use placeholder type as a specialisation of return type for template, clang doesn't explicitly complain:

```
template<typename R>
R func() {
    return 0;
}

template<>
auto func() {
 std::cout << "Auto deduced" << std::endl;
    return 1;
}
```
However it fails to compile, emitting the following stack dump:
```
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-14.0.0/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-11.2.0 -fcolor-diagnostics -fno-crash-diagnostics <source>
1.      <source>:14:1: current parser token 'int'
2.      <source>:9:6: LLVM IR generation of declaration 'func'
3.      <source>:9:6: Generating code for declaration 'func'
 #0 0x000055f73bd7de8f PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055f73bd7bd60 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x357bd60)
 #2 0x000055f73bcb6b78 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f30ef345420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x000055f73c0ada88 UnwrapTypeForDebugInfo(clang::QualType, clang::ASTContext const&) CGDebugInfo.cpp:0:0
 #5 0x000055f73c0cccbb clang::CodeGen::CGDebugInfo::getOrCreateType(clang::QualType, llvm::DIFile*, clang::TypeLoc) (.constprop.4585) CGDebugInfo.cpp:0:0
 #6 0x000055f73c0cf66b clang::CodeGen::CGDebugInfo::CollectTemplateParams(llvm::Optional<clang::CodeGen::CGDebugInfo::TemplateArgs>, llvm::DIFile*) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x38cf66b)
 #7 0x000055f73c0d054e clang::CodeGen::CGDebugInfo::collectFunctionDeclProps(clang::GlobalDecl, llvm::DIFile*, llvm::StringRef&, llvm::StringRef&, llvm::DIScope*&, llvm::MDTupleTypedArrayWrapper<llvm::DINode>&, llvm::DINode::DIFlags&) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x38d054e)
 #8 0x000055f73c0dded7 clang::CodeGen::CGDebugInfo::emitFunctionStart(clang::GlobalDecl, clang::SourceLocation, clang::SourceLocation, clang::QualType, llvm::Function*, bool) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x38dded7)
 #9 0x000055f73c16b2e6 clang::CodeGen::CodeGenFunction::StartFunction(clang::GlobalDecl, clang::QualType, llvm::Function*, clang::CodeGen::CGFunctionInfo const&, clang::CodeGen::FunctionArgList const&, clang::SourceLocation, clang::SourceLocation) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x396b2e6)
#10 0x000055f73c16fde8 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x396fde8)
#11 0x000055f73c1b6918 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x39b6918)
#12 0x000055f73c1b3a55 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x39b3a55)
#13 0x000055f73c1b4193 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x39b4193)
#14 0x000055f73c1ba531 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.5348) CodeGenModule.cpp:0:0
#15 0x000055f73cd07ab1 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) ModuleBuilder.cpp:0:0
#16 0x000055f73ccfc802 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x44fc802)
#17 0x000055f73db9a854 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x539a854)
#18 0x000055f73cd05b02 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x4505b02)
#19 0x000055f73c701161 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x3f01161)
#20 0x000055f73c69c2f2 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x3e9c2f2)
#21 0x000055f73c7cc853 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x3fcc853)
#22 0x000055f73999b1d4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x119b1d4)
#23 0x000055f73999718d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#24 0x000055f73c5375f5 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#25 0x000055f73bcb7163 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x34b7163)
#26 0x000055f73c5396c8 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x3d396c8)
#27 0x000055f73c50cb1a clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x3d0cb1a)
#28 0x000055f73c50d65f clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x3d0d65f)
#29 0x000055f73c516005 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x3d16005)
#30 0x000055f7398a80b2 main (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x10a80b2)
#31 0x00007f30eedf3083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#32 0x000055f739996d0a _start (/opt/compiler-explorer/clang-14.0.0/bin/clang+++0x1196d0a)
clang-14: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Compiler returned: 139
```
GCC just rejects such specialisation with the following error:
```
<source>:9:6: error: template-id 'func<>' for 'auto func()' does not match any template declaration
    9 | auto func() {
      |      ^~~~
<source>:4:3: note: candidate is: 'template<class R> R func()'
    4 | R func() {
 |   ^~~~
```
[Compiler explorer reference](https://godbolt.org/z/1noqqxv9b)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl2T4ybW_jX0DSWXhL4v-sJtjyedmryZt7s3uXQhQLYyCBRAPfZe5LdvgWRbeOxOT-Ld2qqdmvFYfBye5zkHOAhjrZuNYOwepA8gXd7h3mylun_ZsqViuNW_NoLeVZLu7x9ruJc9NGoPjYS9ZrDjmLCt5JQpaPYdg1hDDHXHSIN5o7FppICyhoqZXomhSS0VNKztODYMoAUkHIsNpJJpAVBuINt1vCGN4XtIpG3WCBDPQbgE4eEzC8e_7vFoLF7YAQRuGXwC8Yeh9gnWvSAAFQCVEOQPQymE8AAqBPFYCPLldJiJ3aM13Bt52aA21MKM50T2Bro-CwgQmtselNGeMAoQOtQcmzNB-RHBBFZ0AZbP-wf5lb0yBRsDa9xwbZ1iFWu405W1jTGN2ECztaJzLr_aJ20w-QJp33YnVX27z9-2CGcgLD8ruVG4hVht-pYJo0E8hwCtZGcAWo0jq8D6TyqmbJl1bRAls3AWArSqGnEoBOgBoAcYbOhXrOoggcEGBtJaw11nbfam681Mw6Dl_LWFQbArsgDrNtB7YfAOxMtGGMZh8AyDYENIYKTkZOuCZfkmKNs4imZoFsKgJpJLFdAGb4TUpiEaBrWQAVFYb71iEC-07BVhx1CIrCZecTyPEvthdSG9UkwY2GGl7eSQX5iAAOWNMADlgwV0wUIJ4nlmDXz69MtP8PEJbphg6jiRKCMcj48A5UMkjubit8x9HM2IDSSSDrPwLWMQoDiE4S4MwzBN6zyuaE5ZUcPPqhHGhciLwoQ9NxuB-Q9YUG7VLV5lQwGa27kxVOkZ6Wwghe7f0XZ0ZruiWQitq4dZofd6-LLgDIu--1kM1gAqeuHWKwq5tHFUQjcV_0YUAvQQ7uLUQQCoPGFEHkZSZVVewIUNjSdG5CtT-3P2zrul32YhhWE7c1mGeBwir-OQ1XGSJiiE67Vi2kjF1sqM7HhTAbTaFdk6SwLeiH4XbEQ_VHRmqximMy0tv4dwFyUJ8pkkUyYkxBQXBfyH-Kpw97Lv2EqqJav6zaOoJUDFoI2T__97zG2L40I9FM-fX0ZakEihDUCZ4_3xaOYy3dTHQQipqqndhaTsIxPjw8naULBh5me1UAwbNmC6hvQUR8vHlVsO52cEbMtPkozhM3MkOiW7WZIW6buoZGdU6iz7DioLyTkj5mXcYj5jhVsNUHFC_nNn5yXmIF682-rB3FxttJ3_16S41ZwpHGsv0nJfFhqmCXu_LGSQZdULYtkvGeGfley07-qPXFaY28o3nH0qfjaqEZsnVrsofV_N8vGZyG6wdVb10_Kl77iLQDpXCu9_VbjrmALxYtr__yR1a_C3loeaETDHGz3Onhv5xEnu-aQ48wllNH-_T2wecXDIs8HKvOWMScWz24Y-SeI2mO-pvDyVDxhG_1ZS8luqZkXxVCs91aKsQiy7rtrwcMQ4hhdW5gT7Xaq9i_t13x0aWvdNlubrXQ4d5mrzqdHmWp_vcuatnFI6zY9OsVlDeOaUmrLi-5wyJkLMVr5vWfm74t9ODsvWkyPy5aiyMvpTOX6StOfjAvShbcxA-7Tk1o1o_ixgT-IM5b9g3t92aykdF48sOiMb4zT9a2T_e0haDh7J-IxkEpXxXyN5ndrt4Ft0HvzkDD5O4-h74b_I7hN7ZSPYKYmh5OCAWYeVmaVx4k7inrFvUzYLzs8-aZjjKrKGsJBi38peQ4FbpjtM3P45xWiXDKke244PxUPK_zbSj0r2nUsuSjjAeugbTpm6jM5PKElNihBNpXvA5AsTdCGF7lubbvwVHDdxfJI4cJ7jvbyPViUu0mSK_rM9B8-fX3x4z6zF42Yz7Oc33tfT2AHxkBZnUZBWvs6jx-eTPePDjpHesPlhI7-dkqkb3sPn5x15GEWZN4VWyp68BL0A8JbQ4tqNPIWG_N03Kwmqz6QbBnsU2mBB2GX1rnO55W7JHDoPvr9b5oQUqbe2jkBPLF6PKU3xFstbbgm1Q-XB9va9siyriCaQkGjdYmtjcmZ0xxE70-MF2WJ1yEHm41nQL0MLOHlZcxP0UeTAeejjM_R5VFB4UHoRvbjpPuHw3GLOf2HkuNxeoOLChKrm9cpaivxtKI3ztE4d28mmXo8Zz1o5wVztMIGGV2f2OIo5rzD5sq6Ffwwfxh7DYREtZNtiQc_n4kXHXDzhXzqSxh_g6Lfju-L1mux2UTQ8VFg3ZK1d-1Elr7EtWBuFG6MP1WfmMOc2wKU61Q9DTg5YLjgG8V0fgHKO24pigPKTWqg4vIz7UVaXXZKevUzLoyyeeOPSK7Oh5qkXz7hmfO8p-rb3bjYdE4fTC-jsLLbKjHg59_9ibNxIberE9NT23yelIakifFVtNzD-Zls8uMBbxc862gbXDr9vNJ2Pi9FNVXAkPRWKMxVoltbfq8KPstLXJfhRVt-c_99alI-B0uHGxoh78_1-1Q7R9G8Qz2rjiecnVGmUhWF6Dehy8t1LBy7kAddE_8-KdyPZnCpT2fzbn7LARVghaFOOG-UKobPoDRlNb0MYreOwiOF6zZvKLmZYmfVk_LeuRMhMy1nmxkFJWHgLeHyeT2U0xHCwf7M0yNo8DnroBOI5ZErZNXU-XnvXYwIMyejkGjecUfi1MVvIdo0Zbuui2Dm61wwGr9BIqBmDzSQ_HUc6pKbjJTKzYWY7X7zn_bhYwN96baBivzFiNNQ92Z5f3jsg_g3ygcJFo9fuH4-8D7fqgduwh0vH4YId5e5WEqD87Jbd1lDJNBTSwBYbsoVY7I-WpveYp2v0EoJ8Aa_f17s_tsnwJf3wxx9_XKRg3RZb5EIa5jyHBW2oHbgZr8DzyU8FCMdau98fwCefw2ngxA185ZcJAyYP0JnE6cPRz4fQhIrVTDF7GkmXABVbYzp3g4pWAK02klaSm5lUG4BW_wRoFQn5---717ICqLyj9zEt4xLfsfsoy8oyK4qivNvesxjVGGVFUoQhoyWjeWinTISrGiVxXd419yhEKEIhCosoScoZS5MqyQtWh3URR3kNkpC1uOEzuxra4e8arXt2n5aozO44rhjXh9-dqHvbKKj6jQZJyBtt9KmbaQxn9y5JhF-3TMC7XvH7M5aN2fbVjMjWLgJ2-R3-CzolbYADtHKja4BWDsC_AgAA__8sknCu">