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

    <tr>
        <th>Summary</th>
        <td>
            Clang crashes due to undeduced types when supplied with -g
        </td>
    </tr>

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

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

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

<pre>
    The following code triggers a crash only when clang is supplied with the `-g` flag. Some debugging shows that the root cause is `UnwrapTypeForDebugInfo`, where an assert fails with a message of "Undeduced types shouldn't reach here."
```cpp
struct foo {};

template <typename T> struct bar
{
    using type = T;

    template <foo> 
    inline static constexpr auto b = true;
};

template <typename T>
concept C = requires(T a)
{
    T::template b<foo{}>;
};

template <typename T> 
auto fn(T) 
{
    if constexpr (!C<T>)
        return foo{};
    else
        return T{};
}

int main() 
{
    auto a = decltype(fn(bar<int>{})){}; 
}
```
Logs:
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /usr/bin/clang-14 -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=5 -debugger-tuning=gdb -fcoverage-compilation-dir=/home/flowey/dev/cpp/comptime-config -resource-dir /usr/lib/clang/14.0.6 -internal-isystem /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0 -internal-isystem /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/x86_64-pc-linux-gnu -internal-isystem /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../include/c++/12.1.0/backward -internal-isystem /usr/lib/clang/14.0.6/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/12.1.0/../../../../x86_64-pc-linux-gnu/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++20 -fdeprecated-macro -fdebug-compilation-dir=/home/flowey/dev/cpp/comptime-config -ferror-limit 19 -stack-protector 2 -fgnuc-version=4.2.1 -fno-implicit-modules -fcxx-exceptions -fexceptions -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/test-5fc305.o -x c++ test.cpp
1.      <eof> parser at end of file
2.      test.cpp:26:5: LLVM IR generation of declaration 'main'
3.      test.cpp:26:5: Generating code for declaration 'main'
 #0 0x00007f6b8f2d553a (/usr/lib/libLLVM-14.so+0xcd553a)
 #1 0x00007f6b8f2d2bcf llvm::sys::RunSignalHandlers() (/usr/lib/libLLVM-14.so+0xcd2bcf)
 #2 0x00007f6b8f2d2d1d (/usr/lib/libLLVM-14.so+0xcd2d1d)
 #3 0x00007f6b8de3e8e0 (/usr/lib/libc.so.6+0x3e8e0)
 #4 0x00007f6b96da94e9 clang::CodeGen::CGDebugInfo::getOrCreateType(clang::QualType, llvm::DIFile*, clang::TypeLoc) (/usr/lib/libclang-cpp.so.14+0x15a94e9)
 #5 0x00007f6b96dadd7d clang::CodeGen::CGDebugInfo::CreateRecordStaticField(clang::VarDecl const*, llvm::DIType*, clang::RecordDecl const*) (/usr/lib/libclang-cpp.so.14+0x15add7d)
 #6 0x00007f6b96dae57a clang::CodeGen::CGDebugInfo::CollectRecordFields(clang::RecordDecl const*, llvm::DIFile*, llvm::SmallVectorImpl<llvm::Metadata*>&, llvm::DICompositeType*) (/usr/lib/libclang-cpp.so.14+0x15ae57a)
 #7 0x00007f6b96da8b3c clang::CodeGen::CGDebugInfo::CreateTypeDefinition(clang::RecordType const*) (/usr/lib/libclang-cpp.so.14+0x15a8b3c)
 #8 0x00007f6b96da9794 clang::CodeGen::CGDebugInfo::getOrCreateType(clang::QualType, llvm::DIFile*, clang::TypeLoc) (/usr/lib/libclang-cpp.so.14+0x15a9794)
 #9 0x00007f6b96dc1aad clang::CodeGen::CGDebugInfo::EmitDeclare(clang::VarDecl const*, llvm::Value*, llvm::Optional<unsigned int>, clang::CodeGen::CGBuilderTy&, bool) (/usr/lib/libclang-cpp.so.14+0x15c1aad)
#10 0x00007f6b96dec519 clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(clang::VarDecl const&) (/usr/lib/libclang-cpp.so.14+0x15ec519)
#11 0x00007f6b96e07f2e clang::CodeGen::CodeGenFunction::EmitAutoVarDecl(clang::VarDecl const&) (/usr/lib/libclang-cpp.so.14+0x1607f2e)
#12 0x00007f6b96e08132 clang::CodeGen::CodeGenFunction::EmitDecl(clang::Decl const&) (/usr/lib/libclang-cpp.so.14+0x1608132)
#13 0x00007f6b96f25467 clang::CodeGen::CodeGenFunction::EmitDeclStmt(clang::DeclStmt const&) (/usr/lib/libclang-cpp.so.14+0x1725467)
#14 0x00007f6b96f58905 clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/usr/lib/libclang-cpp.so.14+0x1758905)
#15 0x00007f6b96f53992 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) (/usr/lib/libclang-cpp.so.14+0x1753992)
#16 0x00007f6b96f549e1 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/usr/lib/libclang-cpp.so.14+0x17549e1)
#17 0x00007f6b96f82b8a clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/usr/lib/libclang-cpp.so.14+0x1782b8a)est-6a6088.sh.txt
#18 0x00007f6b96f99e8e clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/usr/lib/libclang-cpp.so.14+0x1799e8e)
#19 0x00007f6b96fcd97f clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/libclang-cpp.so.14+0x17cd97f)
#20 0x00007f6b96fcaf84 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/usr/lib/libclang-cpp.so.14+0x17caf84)
#21 0x00007f6b96fd54ff (/usr/lib/libclang-cpp.so.14+0x17d54ff)
#22 0x00007f6b97026df9 (/usr/lib/libclang-cpp.so.14+0x1826df9)
#23 0x00007f6b96f62188 (/usr/lib/libclang-cpp.so.14+0x1762188)
#24 0x00007f6b95fd9e23 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/libclang-cpp.so.14+0x7d9e23)
#25 0x00007f6b975b3929 clang::FrontendAction::Execute() (/usr/lib/libclang-cpp.so.14+0x1db3929)
#26 0x00007f6b97552df7 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/libclang-cpp.so.14+0x1d52df7)
#27 0x00007f6b9760a78a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/libclang-cpp.so.14+0x1e0a78a)
#28 0x0000563d22d836f1 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/bin/clang-14+0x176f1)
#29 0x0000563d22d85337 (/usr/bin/clang-14+0x19337)
#30 0x0000563d22d79216 main (/usr/bin/clang-14+0xd216)
#31 0x00007f6b8de29290 (/usr/lib/libc.so.6+0x29290)
#32 0x00007f6b8de2934a __libc_start_main (/usr/lib/libc.so.6+0x2934a)
#33 0x0000563d22d7b655 _start (/usr/bin/clang-14+0xf655)
clang-14: error: unable to execute command: Segmentation fault (core dumped)
clang-14: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 14.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
clang-14: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-14: note: diagnostic msg: /tmp/test-236daf.cpp
clang-14: note: diagnostic msg: /tmp/test-236daf.sh
clang-14: note: diagnostic msg: 

********************
```
[preprocessed source](https://github.com/llvm/llvm-project/files/9155853/test-6a6088.cpp.txt)
[run script](https://github.com/llvm/llvm-project/files/9155854/test-6a6088.sh.txt)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVWltz4joS_jXkRWUK29jAQx4IhJlUZXZmA2fOY0rWBXxWWKwsZ8i_327ZgOWQTMhM7Z6lKINlqfv7WuqLLWeaP1-vNoJIrZT-kRdrwjQXxJp8vRamJJQwQ8sN0YV6Jj82oiBMUeiVl6SsdjuVC05-5HZDLAjppYNgDQciFV33yVJvBeEiq9ZrFFxu9I8S-lHrOhutLWG0KgUKg1F_FD8M3a2ed2KhzRyH3RVSw4VeNEPVRhBaEFqWwlgiaa7KWjMlW1GWdC2IlqQXRX8UXPCKATALskrUWyle9KKRJUZQtiEoqw89e4N5bzBFDe7Ldru6pbSmYqBDa9Ib3fRG81580_R1Ryu2O0UtEI5nqKOgQHTVi29JMzKjpuk_agYS-FQlmgEHwMA5DvCkYpe2ZFCPIk8X80LlhQAd1OYM5qkordjvDKGV1SRzMkG9OIl9P_D6MohkYmfJzMky4t9VbkTZi8YrQnvR5AwlGDuF71Fu1uBurHb7ESwNY8dKFqgddJMzynPZMgL060XhDIQ5Pge0pPkYYStTkBa2liChSnG2-6o7_fC_RSEvLNnSvHC6z0J0JKgzJxdMIU_o7FjhGolnIALh1moANHwPKklX52Gd1qf3el2i9c9d-3Z_O13CaqyybW5BP_gSUNppcBzAs7F254ZGC_iuwYeqrM_0Fk6Uejr8BDuj_xLMwmlelhWugwU4IIdlyFSFMQKcuA4OGWX_soYygZ66A0VGM3BJ8MBSV6ZuxpHgu5rlMOecmKogJTP5zvZryEsLQgivtrsjqQFcmnwzem3ollCzrraisAgcJntRlQaOGRp_4UJSEA5JwFhIAgheOyXIfpw-psNgxwJwm2ofrIuKBAIMEujsLxJsjVB0H1ClSHA4gaNm4F2wqkjA85JmSgTSCAGSlaAmoKUNMiG1EQGSFkDq2M8Z7UmYXObCuGZGDQ-eqKpEgKsbZOJqCWSu6gZw99L2IezUaBrVwRYisCI78PEADoEST3Aa1Sd5CT8AZyvBKCLYaVhAAhbS3PGQW2o3gTCm0HAidwH4B04MrLG5LqCp0IHRVcEhEAXYFwQ5F8KopYGeymmJOGVVQDLggUVmYPI5qLcwBcIGbFehaYMUzG2rQriGtSiAOADeohVwCgS1ARhA1SbM94IjLtRRBj-oKTAUBi45BDmE-eBfoA70tNDAZego0aQlmAUuJs0IyEyoGkRA45pngJdp6AY5ABhvd7mqDclztAwskA1kIviRkOLEM_zh4gmXDcR7OMIAm29xZCFzAAUhz61aHH5aaSrPDisNfsNhf9BPSeCsX1AF8_IMgWjbXZn9fj00HaKnMQbHM8sSBUb9sD84jOgcGo9D_b3oxn2bAf97BOfl_S1woYfCCuJvgTk3rSe5b44Ed1Xv6_o7GZ8f8hKE2OMf1gbzrk414mPX0jqvrI0bwXqTHMK7YBjEIYIwo10TuvGve56sI4TKMWuFE9QOU4iJyAoXESAKSSDMWjFh2Adr1ZEth4IiZxDfIYBWyoUxtt8DSSxq6pguvRPKOYgBxfPHx0-z2ePn6ffbx_mf04dF9Dhb3D1Ol19AA0jXaBm7RdAYsoNEsniQ9IH7njS2OcbyOneFmLsgvwstsaTZUQNlK4HSF1MG1KmYA-qeEfY8Do6nUQqHBLPc_f33L-TuoQ6uzq44EusI2pxCTVvXH6NaVvyqrE-NjEOBDynsTUnQEA_IYD-Az0im2VhGPEliWtdZnvPAEZFC_u2XGiwx2DPX9VSDgaywIyvKmCSu2nAFJKy_-s9DVSzzNazNz1AwKJjlQ231LrUo1VMbddXykL9XFnT1ZMVtWVzEYiwG52UxkIJhBOS4Xp6YYUvMJOV0MhST-qaqtsAMpgdmqzn5dLoRcg2Qgb-aGWZXsaqLydbQf1ZU1a2zlm3ndwtcbNEUm1u9see9Zq9at66qYCEhm3Do6ISJw-sRSjqEOB_x9xOquTwIpg1fujubRS4U94l9p3BDyFRd7jdM2gRr0l2CtdDOwMvIIhePbNohK5IRvYAs3GVDJKuBOZ6lT_Qs5Fcn89S83EL9990FyTuIghB4Tte-CEs5tRQH4Z1R2pU4gzisy_ywoi42EtrAM9KoY6RxFrNLVwRimQuZFznGp3NWwh4fnliE5GEed91yNBn-X7kl4PUITXxCLKT0Are8hRQ8d_lBXOKK3_Fm50XrV5dxKS7LqoCEWwi8i3Q3vj73DqabKldcmNVzs2gzrdWFdnG0T88uIBENfLsIloRvxN_6ZFEVzC3Do22mcGMPppgqLAPftFB6IWIHyEMceogF_Ebiw4gR2u_Emzo4Ht6og3ccQh6-GO9LoL-EEkF4KGMPpYySYTr6GMql3dqXSLH1g2hHDoyH1q8aZDKeDJLL0S6xRBYv8baxdnx3agx9fhBQxc5aA6bWmtMA97ztEn4Ovscv6fCLJ5MPrJm_ATME7jFLO8yGExFezszl6KrgyOfP3G50ZZdMdzNNu1dr7R0i5-uxdrpeu9C9VNpeyhgJeYz99C_HUTZ-o0Z6jfGh5Ubz5zfn9CK0DgyMwbu4lEJYGPfLTd_u7Qm-XwnIyQRK-MvgNzdbAi_60D8pnVFVh7b2WjyOf1EOdFLioSNm6o9GF8fImzG_VpCMT0byZ5S_uJvs03zV1A74XivdXjNA3X4qHy4i5PC2CUWDDiEqx29Uc28R-u8SQZweET_3S54MpbxEohvgSfSy82gQpVxegnHsBngSO5k0jcLx-BKMboAn0ct2ieQTAUpaxv-Gj1Omy1UnLogt7cS7iyvGkdPlgfFS0yjJ4knkFYwLowsrCj5tB7C9YJUVbz28OGsL7qR76lNffRJx2alT8LGbMHcQC2jBhAegweSZqYP30vDBHQIPohfwR-mAjvyA34A5IX1qtjpeZi-PyaX-I5xmD9ohmCdpzKOIj-NUQvZl4WOzb3e-HNjQTg0AIdlrg4YnnfMzCP0dqcMKl16GjCYdVEkM98w_kzKBTm0px-dzjZTRJIJiA3n9TBSHjp6k0H-0FcEa_PmjLdfLExN1xcRDSh4fcdgjTKmxjy_QnRcM4zzBcYdpliYJqUX-jKuErkdZxyvxlLhnzfinKnCPCjdGRb1OYZq3W4rbUVOyFGvcdawfkkpaKaeQaSPcXqXgb8uuX5aQjccdBLu3F-AemFdObekeeKJcfBkieHJtQsAt8slP2kpI8_SbNNsV7srK7c6hznM7BHWXjRGUE7e9iB3xoc--vuRcTgGmee5wexZ9Qa_QFsMM4TldF7rEtxG25dqNa6bsF76t_fVmG3u6Wk1nn8nq8y1ZfL2___rn3T8-kcXd_e2SrL665ps_PpGH229fH9z7CPXYc9vQ4xLd9dWt6GMHmF23GwtXqT2KfKcJvJ2CKE45lad9gV-QUW4-MBO_az789wt6yc25bf5kDha8-O0C3ArBlwsmYZJAJDywbqpzDPFYnh_DQXLTmrDfoXHY0djcD0STK34d80k8oVc2t0pcz5zzuVceRHlw3qrztpF7R8p_NSpYX1VGXX_8tYskTZPoanM9DIdDKeRAQAiUw5GMR2kWh5JmPB2EPJRXimZClddgo14UFeIHcSLwTadkfpVfR4MoGoyiMIzDQTLsszAREmSGYkzDCY16wwFUULnqI46-Nusrc-0gZdW6hIsqL215ugguhI_yhFMH8mkFt6XmeuG2-lYb4f6YYTS4ciiuHYv_AGUrhjE">