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

    <tr>
        <th>Summary</th>
        <td>
            Crash clang++
        </td>
    </tr>

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

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

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

<pre>
    ```c++
Stack dump:
0.      Program arguments: clang++ -std=c++20 -fstandalone-debug -fvisibility=hidden -g -O2 -c main.cpp
1.      main.cpp:58:27: current parser token ';'
2.      main.cpp:58:23: instantiating class definition 'b<n>'
 #0 0x00005599b0f77438 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/llvm19/bin/clang-19+0x695d438)
 #1 0x00005599b0f748ce llvm::sys::RunSignalHandlers() (/opt/llvm19/bin/clang-19+0x695a8ce)
 #2 0x00005599b0ed1547 CrashRecoverySignalHandler(int) (.llvm.11302594287015708483) CrashRecoveryContext.cpp:0:0
 #3 0x00007fa3840ed520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00005599b124ae40 clang::CodeGen::CGDebugInfo::CollectRecordFields(clang::RecordDecl const*, llvm::DIFile*, llvm::SmallVectorImpl<llvm::Metadata*>&, llvm::DICompositeType*) (/opt/llvm19/bin/clang-19+0x6c30e40)
 #5 0x00005599b124f8e9 clang::CodeGen::CGDebugInfo::CreateTypeDefinition(clang::RecordType const*) (/opt/llvm19/bin/clang-19+0x6c358e9)
 #6 0x00005599b124f53e clang::CodeGen::CGDebugInfo::completeClass(clang::RecordDecl const*) (/opt/llvm19/bin/clang-19+0x6c3553e)
 #7 0x00005599b183b0bf (anonymous namespace)::CodeGeneratorImpl::HandleTagDeclRequiredDefinition(clang::TagDecl const*) (.llvm.14912255421585949504) ModuleBuilder.cpp:0:0
 #8 0x00005599b4a0ed78 clang::Sema::RequireCompleteType(clang::SourceLocation, clang::QualType, clang::Sema::CompleteTypeKind, clang::Sema::TypeDiagnoser&) (/opt/llvm19/bin/clang-19+0xa3f4d78)
 #9 0x00005599b4165c2e ComputeDefaultedSpecialMemberExceptionSpec(clang::Sema&, clang::SourceLocation, clang::CXXMethodDecl*, clang::CXXSpecialMemberKind, clang::Sema::InheritedConstructorInfo*) SemaDeclCXX.cpp:0:0
#10 0x00005599b41276c9 clang::Sema::EvaluateImplicitExceptionSpec(clang::SourceLocation, clang::FunctionDecl*) (/opt/llvm19/bin/clang-19+0x9b0d6c9)
#11 0x00005599b421f5df clang::Sema::ResolveExceptionSpec(clang::SourceLocation, clang::FunctionProtoType const*) (/opt/llvm19/bin/clang-19+0x9c055df)
#12 0x00005599b4221b26 clang::Sema::CheckExceptionSpecSubset(clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::PartialDiagnostic const&, clang::FunctionProtoType const*, bool, clang::SourceLocation, clang::FunctionProtoType const*, bool, clang::SourceLocation) (/opt/llvm19/bin/clang-19+0x9c07b26)
#13 0x00005599b4222abd clang::Sema::CheckOverridingFunctionExceptionSpec(clang::CXXMethodDecl const*, clang::CXXMethodDecl const*) (/opt/llvm19/bin/clang-19+0x9c08abd)
#14 0x00005599b4130180 clang::Sema::CheckDelayedMemberExceptionSpecs() (/opt/llvm19/bin/clang-19+0x9b16180)
#15 0x00005599b48fd335 clang::Sema::InstantiateClass(clang::SourceLocation, clang::CXXRecordDecl*, clang::CXXRecordDecl*, clang::MultiLevelTemplateArgumentList const&, clang::TemplateSpecializationKind, bool) (/opt/llvm19/bin/clang-19+0xa2e3335)
#16 0x00005599b48ff808 clang::Sema::InstantiateClassTemplateSpecialization(clang::SourceLocation, clang::ClassTemplateSpecializationDecl*, clang::TemplateSpecializationKind, bool) (/opt/llvm19/bin/clang-19+0xa2e5808)
#17 0x00005599b4771d58 clang::Sema::ActOnExplicitInstantiation(clang::Scope*, clang::SourceLocation, clang::SourceLocation, unsigned int, clang::SourceLocation, clang::CXXScopeSpec const&, clang::OpaquePtr<clang::TemplateName>, clang::SourceLocation, clang::SourceLocation, llvm::MutableArrayRef<clang::ParsedTemplateArgument>, clang::SourceLocation, clang::ParsedAttributesView const&) (/opt/llvm19/bin/clang-19+0xa157d58)
#18 0x00005599b3ca8892 clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) (/opt/llvm19/bin/clang-19+0x968e892)
#19 0x00005599b3c6e838 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/opt/llvm19/bin/clang-19+0x9654838)
#20 0x00005599b3cbc369 clang::Parser::ParseDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/opt/llvm19/bin/clang-19+0x96a2369)
#21 0x00005599b3cbac76 clang::Parser::ParseExplicitInstantiation(clang::DeclaratorContext, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/opt/llvm19/bin/clang-19+0x96a0c76)
#22 0x00005599b3c16629 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/llvm19/bin/clang-19+0x95fc629)
#23 0x00005599b3c149a1 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/llvm19/bin/clang-19+0x95fa9a1)
#24 0x00005599b3c0fc9e clang::ParseAST(clang::Sema&, bool, bool) (/opt/llvm19/bin/clang-19+0x95f5c9e)
#25 0x00005599b1d0ec34 clang::FrontendAction::Execute() (/opt/llvm19/bin/clang-19+0x76f4c34)
#26 0x00005599b1c47d60 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/llvm19/bin/clang-19+0x762dd60)
#27 0x00005599b1e11e7a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/llvm19/bin/clang-19+0x77f7e7a)
#28 0x00005599ae88f1cf cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/llvm19/bin/clang-19+0x42751cf)
#29 0x00005599ae88b1ff ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#30 0x00005599b1a99a19 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(long) Job.cpp:0:0
#31 0x00005599b0ed1108 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/llvm19/bin/clang-19+0x68b7108)
#32 0x00005599b1a99664 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/opt/llvm19/bin/clang-19+0x747f664)
#33 0x00005599b1a56f0b clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/llvm19/bin/clang-19+0x743cf0b)
#34 0x00005599b1a76eeb clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/llvm19/bin/clang-19+0x745ceeb)
#35 0x00005599ae88a62e clang_main(int, char**, llvm::ToolContext const&) (/opt/llvm19/bin/clang-19+0x427062e)
#36 0x00005599ae89d1ba main (/opt/llvm19/bin/clang-19+0x42831ba)
#37 0x00007fa3840d4d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#38 0x00007fa3840d4e40 call_init ./csu/../csu/libc-start.c:128:20
#39 0x00007fa3840d4e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#40 0x00005599ae87cea5 _start (/opt/llvm19/bin/clang-19+0x4262ea5)
```

After creduce
```c++
#include <utility>
class a;
template <class> class b;
class c {
public:
  using d = a;
};
template <class> class f {
 using g = int;

public:
  static constexpr bool h = std::is_same<g, c>::value;
};
template <class> class j;
template <class e> class l {
 using k = e::k;
  k m();
};
class n;
class F {
  using i = j<n>;
  i q();
};
template <class o> class j : std::conditional_t<f<o>::h, typename o::g, o> {
public:
  using e = n;
  using p = e;
  using d = b<e>;
  d *r;
};
class s;
class G {
public:
  using k = s;
};
class t {
 ~t();
  l<G> y;
};
t::~t() = default;
class n {
public:
  using k = F;
  using g = c;
};
class I {
  l<n> u;
};
class a {
public:
 virtual ~a();
};
template <class e> class b : e::g::d {
  using v = j<e>::p;
  int w;
};
class s : I {};
extern template class b<n>;
```

`clang++ -std=c++20 -fstandalone-debug -fvisibility=hidden -g -O2 -c main.cpp`
clang version 20.1
https://godbolt.org/z/e1xPW9veb
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWk1z4zbS_jX0hWUXCPDz4INGtub1uzM7s-Op7NxUINCUEUMkA4KKnUN--xZAUvwQJZvJpnarNuUkItloPP2g0d34oFUldjnArRN8cIK7K1rrp0Ld_iR0ob7RfVFdpQV_vXVC1PwxB38wf2j1qCl7dnm9Lx2yctAK3bj2n6-q2Cm6d6na1XvIdeWQlcskzXdNU_e60twhd60mjNzrrNI051QWOVxzSOude50dRCVSIYV-dcjdk-Accvd6515_we41c_dU5DesLB208tp-j6_IKogdssKR7bhWCnLtllRVoFxdPEPuOubbB_NftMLnmhPTXOQGmhZUi3xnrKgql0MmcqFFYRWlDlnnDrlvtLkOJshFLwghFARJkqIsinwSu1Ie9oYnsqpeq-bHVyVybVn8rigDB8e9kKK_botKK6B7B4cOXrsi1w5OXAfHDt4UpXbwxoh7iYM3qcgdvLEcX5sXH9BLmATcJ7GDkxaVN0HlxwzmUH2r80exy6n8P5pzCaqyPS7qmMbGmq5jPOoYuBf4kbtWtHr6Bqw4gHod9efguDf1xvR043kE4SDxcRwhL4hQ7MfECIyUrItcw4tuhxDZfxsApAUQZZTEPgIeYNSaI0Xq4M1LHG5D_1qKvH653uV184HdVMVNaG3ycYBRb5E_tMjDPgUftR5uKVwXHD5C3j58vDMe_ZBnRfdVSmDa4FZ8I0ByQ_GgefPlDph0WZFX2sEr4wD9WN09bISEk9ePeyrlT8B0oR72pXTIuv_2GTTlVFPTyPhqONW4LvZlUQkN31_LRvWCIWcEgT8gKJgQlMWQLCBIAW1w3B1n2hxDRmLA0CK8QQxJjzec4g0IvB8vK_alBA1rEx3eMZTLgAZkMJeiEdCYpCjNjDaaF_nrvqgrN6d7qEraTMAheFD06BjmdTPdvtOdQfcNfqmFAn6O8FZsakQ7Pf3EwzgIfOwFcZD4SYB8I_C54LWED7WQHNTMvIyHxvgUAY_iIeuPsKcdjRbeuiW6cdEhvseiVgw-FYw22NdDPf-oqWyarOfVD_X-TeT8rKD1SUF3eVGZQBUuGUtKMp9Hg4CcjMz3woBhcA2UWhvHp7XUwB9LYILKz7BPQd2_MCiNgebthACDsZnV76Vl_ePHZ9BPhXXPNpiMP486v0jMQ_4ESmjga-MgqrYxyEyQxlWMoOll_ePHxA9MYkJjInAUsmS-m_sDlTXVYLxYMKEvEXLJ9E2dM_P6aPn7hzFJEQ9ZGzsM-lFe9bGXBTw758VVIQ_wZ0F_VYUu_nDsSxgKAp71-PEYP_ZSHJ6ZJk_AnkfoH-u0Aj224StVWlDZThMtWAdz6pz_QcFLVK7dtCjkkon0p7UtGr0otXGnHT0yGT1MU35h9L4cQCnBRb7rQF_wxlGAGNn0DqFFNsU05b1N_jgeEOTF6IJNdyDpK_CZELm0dE1SL_Ri1CMZ1TF-nHFCgnMBsFsnzJUBb8XhvkyYJfjS58-11OITHEB-h30pqYZVu-76JCp9bgJ0sm2EF79ZYF2Ib1x2QWrDQAgJet7CCW9ZjM5k9ilv88CWsHleyzyB_3YqghjFPRWjis2PIo8HZ6hYMf0lv39pMlvPy6n5rCjh1I6LrJx-rHO77ufNunJR1WABGLrOedeXkv5Sw1etHLKeYfrvdA92EfJn8A-WNrWmqYSVUvT1G2TjPr-aZT-fTo2FvTdKVlorkdYaqp8E_DqwfYF3eEHEg4F3jEpgwmgcJ_ikZzX4bd3bumom7Fp5IKyL55bo4hnyuXrtkpFmdjQ5YCatjkEc-WxKvKn8ijEYgZxNgkOtXd_tGv4N-heSnoQxxAnuSU_GpIcQk_iivQYeVbRLK9aqSYT_S9n746y1kp-ohp5FkxhO40dXU5sCxiwij1qXMB34MendG6Mx0ykjYfJepleZBtVRdUo2tcvZt01_D-VGRuTNQnj18PAl_RnYTFibTp_ZkZ766eWxXcItxSTs1x3Ym3BLWRReJOEdqeUtYhfG6P8i7hCL-qoZ4zF3Xhjiy355_6JB5VQO_PNk1fMG_vdJtG7YhJJlZXSQsRAPHIRMjPQT6l008ntR2kKyqZPitxO6Efyoirq0afd-ZsYci5tmL-hhXxZKP2o7o5cF8SCjCfV66_yxdShjCZxYt3r8fnabpEtJSyu8JMgClkCPZLzZyREw4o-Wh8rMpZyv7Hqr3ch4AVbbsLak6yjMfEb8vuvxviXzIx5ONqL3pZCgminPYNR5i2fEzwTrsjGKQsx52C-f8Hi3EjwPIjqE1wLpUR6O8SG-ZMWyiRFFWQQR7WENiy4KcZx5LHMZ87Z7aloPTmGGNeUTVf3ytq0fR-_w2j0Ugi9E5-Mo8Fi_H4OTCbrUyzK3Y2rtfbfuGl_a9T-FOtntNzraAD8qY7kSh5OdWgeT8YmWR5OEeok1dqA0azcUtsryZb82_m0gWBFGpUwpe95m-TiQNB23o7321sV-T3M-nSqz42LPEs27wi776fjY41Erke_a8NQM2rHBdsteXjyveUhpJdi2suIthSNh82KrFRW66j5P1FEpjfcWavDdiAw2gaxjNITbJg72t8gKxbLId-br_xfpDP_e9AjNQ8MTxblzsHbLsc4faQbydUTf5aFacj4Rp5E3WO2Oz_qMo4ThKBb-zw30-6OUH2Vh2Md2QsZUBmGG0rNU2ghJT_JLx-8onE4aGoFzC_kLoqtRGl1uLWEZSntrx0eqNAoBzlp7N_g9SiEzueMcS9OQeBpFj-NdUmGG-nSf5CI7rVMsS6B-wAAGrASTXEBD3BY5Xa7qUFk3Xp0cCZ-L9AuyEwpxX-yMTkopxAn3UmqvTixQGRMv7dPx8UyzPZ7nPk-Qu91KkZp5SpXemrxhDXZvjLaqdvDmxvysXisOZeXgTV5q2R7bTxvdPHVXOryw7TKedmkP8E0DkQs97aX5aVRfW9U3zOjC9pJIF6GTOY0jI-bwz2omUWIAN4p9NCY8YkADt1G5gPIQA-32Z7ubPOY3WtlltssU8JrB8HN_0cfBRORM1hxch6xr3V7KuXfQqrkQQx1i5HS7yHab5F5VDrlvr8ykjUTzwFwnMk9lnUphLHbQynVrs_ZxueuQu06hE929qTlrlbXtd7a9mRWNhmkvlabHcyF4KZWNX-6TbXWc8aLaVnaPcr2zk-tYwByorOH92H4-I-FCLyPH-J8tkrZQf27au-6zu-_y86jvRkU-fNh0-lqFwir8ubuk1CoU7i-zCk-hFgNzXIesBpmyyLloUvFWO2RtknRxpOrJMKfbvSS3vSlh6bQaz3sAWMB5h7R5WXa0fDjxldQhaxiYZkqZlZolqho-fLyAoRmFalaJ7gj-XQ8pdF2TND4a216npDbGd_JWN28O-EfD-Cagzdj-xtfZLMqHoxvIdujdelaQzvV6EErXVLq_03d6ycChU-sl0A14kyknTnk4OiUcHaY8-mau3V_nx8-qbkzrvoDdmXGPkI7xZuDvk5Bngpv8i64j2j6sdvcAqhJF7mJ04zlo9aR1aa_Y4Y2DN7uCp4XUN4XaOXjzm4M34L18_WdygPSK3xKekIRewa0XBWHkEw9FV0-3YYR9lCKOCKNJQpAPLMYRCSlA6lEfXYlbjHCAEuR5oef50U3CME44zxAPOGJp5PgI9lTI5t5OoXZXoqpquPWCkAT4StIUZGVvgmLcUoSd4O5K3ZoG12m9qxwfSVHpqlehhZZwa9cgw2ueV7WStxOjhX6q0xtW7NuE1f7vulRFs-W6sXhMQm8hHW7xvwIAAP__DCbBDg">