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

    <tr>
        <th>Summary</th>
        <td>
            clang crash when mangle lambda expression in lambda expression
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend,
            crash-on-valid
      </td>
    </tr>

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

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

<pre>
    https://godbolt.org/z/6M53v9njb
```c++
auto ICE = [](auto a) { return [=]<decltype(a) b>() { return 1; }; };
```

```
./build/bin/clang a.cpp -std=c++20
```

```
Assertion failed: (parmDepth < FunctionTypeDepth.getDepth()), function mangleFunctionParam, file ItaniumMangle.cpp, line 5693.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.

1.      ID/a.cpp:1:53: current parser token '{'
2.      ID/a.cpp:1:12: lambda expression parsing
3.      ID/a.cpp:1:23: in compound statement ('{}')
4. ID/a.cpp:1:32: lambda expression parsing
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  clang-18 0x00000001034397f0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 88
1  clang-18                 0x0000000103439dd4 PrintStackTraceSignalHandler(void*) + 28
2  clang-18 0x0000000103437abc llvm::sys::RunSignalHandlers() + 152
3  clang-18 0x000000010343aec0 SignalHandler(int) + 276
4 libsystem_platform.dylib 0x000000018b991a24 _sigtramp + 56
5 libsystem_pthread.dylib  0x000000018b961cc0 pthread_kill + 288
6 libsystem_c.dylib        0x000000018b86da40 abort + 180
7 libsystem_c.dylib        0x000000018b86cd30 err + 0
8  clang-18 0x0000000109dc5c7c (anonymous namespace)::CXXNameMangler::mangleFunctionParam(clang::ParmVarDecl const*) + 140
9  clang-18                 0x0000000109dc4ec8 (anonymous namespace)::CXXNameMangler::mangleExpression(clang::Expr const*, unsigned int, bool)::$_2::operator()(clang::NamedDecl const*) const + 216
10 clang-18                 0x0000000109dc1b8c (anonymous namespace)::CXXNameMangler::mangleExpression(clang::Expr const*, unsigned int, bool) + 9664
11 clang-18                 0x0000000109dbc5a8 (anonymous namespace)::CXXNameMangler::mangleType(clang::DecltypeType const*) + 212
12 clang-18                 0x0000000109db08bc (anonymous namespace)::CXXNameMangler::mangleType(clang::QualType) + 1020
13 clang-18 0x0000000109dc7784 (anonymous namespace)::CXXNameMangler::mangleTemplateParamDecl(clang::NamedDecl const*) + 552
14 clang-18                 0x0000000109dccaf4 (anonymous namespace)::CXXNameMangler::mangleLambdaSig(clang::CXXRecordDecl const*) + 144
15 clang-18                 0x0000000109dac560 (anonymous namespace)::ItaniumMangleContextImpl::mangleLambdaSig(clang::CXXRecordDecl const*, llvm::raw_ostream&) + 88
16 clang-18 0x0000000109da73f0 (anonymous namespace)::ItaniumNumberingContext::getManglingNumber(clang::CXXMethodDecl const*) + 168
17 clang-18                 0x00000001088cd68c clang::Sema::handleLambdaNumbering(clang::CXXRecordDecl*, clang::CXXMethodDecl*, std::__1::optional<clang::CXXRecordDecl::LambdaNumbering>) + 568
18 clang-18                 0x00000001088d1e18 clang::Sema::ActOnStartOfLambdaDefinition(clang::LambdaIntroducer&, clang::Declarator&, clang::DeclSpec const&) + 1276
19 clang-18 0x0000000107932138 clang::Parser::ParseLambdaExpressionAfterIntroducer(clang::LambdaIntroducer&) + 4204
20 clang-18                 0x000000010792ff94 clang::Parser::ParseLambdaExpression() + 164
21 clang-18 0x000000010791d970 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) + 19408
22 clang-18 0x0000000107915acc clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) + 92
23 clang-18 0x00000001079143c0 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 292
24 clang-18                 0x0000000107914268 clang::Parser::ParseExpression(clang::Parser::TypeCastState) + 36
25 clang-18                 0x00000001079a7e84 clang::Parser::ParseReturnStatement() + 720
26 clang-18 0x00000001079a2374 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) + 2076
27 clang-18 0x00000001079a19e8 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) + 232
28 clang-18                 0x00000001079a980c clang::Parser::ParseCompoundStatementBody(bool) + 1028
29 clang-18 0x00000001079321d0 clang::Parser::ParseLambdaExpressionAfterIntroducer(clang::LambdaIntroducer&) + 4356
30 clang-18                 0x000000010792ff94 clang::Parser::ParseLambdaExpression() + 164
31 clang-18 0x000000010791d970 clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, bool&, clang::Parser::TypeCastState, bool, bool*) + 19408
32 clang-18 0x0000000107915acc clang::Parser::ParseCastExpression(clang::Parser::CastParseKind, bool, clang::Parser::TypeCastState, bool, bool*) + 92
33 clang-18 0x00000001079143c0 clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 292
34 clang-18                 0x00000001078bdb68 clang::Parser::ParseInitializer() + 56
35 clang-18 0x00000001078bd08c clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) + 1992
36 clang-18                 0x00000001078bb0b8 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 1976
37 clang-18 0x00000001079c94c0 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) + 1612
38 clang-18                 0x00000001079c89f4 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) + 244
39 clang-18                 0x00000001079c82c8 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) + 3468
40 clang-18 0x00000001079c62e8 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) + 2032
41 clang-18 0x00000001079c5a54 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) + 64
42 clang-18 0x00000001078a120c clang::ParseAST(clang::Sema&, bool, bool) + 476
43 clang-18                 0x0000000104b46fe0 clang::ASTFrontendAction::ExecuteAction() + 300
44 clang-18 0x000000010442df68 clang::CodeGenAction::ExecuteAction() + 100
45 clang-18                 0x0000000104b467a8 clang::FrontendAction::Execute() + 124
46 clang-18                 0x0000000104a661f8 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 824
47 clang-18                 0x0000000104c63e8c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1056
48 clang-18                 0x00000001007b87d4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1268
49 clang-18 0x00000001007a6ff8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) + 400
50 clang-18 0x00000001007a5d24 clang_main(int, char**, llvm::ToolContext const&) + 648
51 clang-18                 0x00000001007e1efc main + 108
52 dyld 0x000000018b5e10e0 start + 2360
clang: error: unable to execute command: Abort trap: 6
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 18.0.0git (https://github.com/llvm/llvm-project.git f6617091a982c0802e9b980f2ce7e11a1355c38b)
Target: arm64-apple-darwin23.2.0
Thread model: posix
clang: note: diagnostic msg: 
********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWltz4zay_jX0C8oqEOD1wQ-yZCWu48nMGblSc86LCwSbEjIkwAVBzzi_fgsgKVNXc-JNNrsulUXh0vi60eivAYI1jdhIgBsvvPXC5RVrzVbpm59B6wUTOMXxVabyl5utMXXj0blHVh5ZbVSeqdLMlN54ZPW7R1bRh5A-p_K3zMNLD8-9CHcf7pFb-3GlrDUK3S_ukEeXqBvQI4krZR5JkRffIg2m1dLV0qVtQBc58NK81GDb2maZR-88khz08D16i7x4-fp1AKX_eapw5pFV1ooyt99CemTFSyY3iM14XaPrxuQeXfaqEDxd7rxpQBuhJCqYKCH36Bx5JKmZrpZQmy3y6AKtWsltm8eXGlzpbAPGPXRKus8CFX0zVDG5KWHo9YlpVrl6UQK6N0yKtvrgmljwtqYUElAYpXTWofr0cDdf36GmzSphEENZu0EaaqUNMgodzLQw2zabcVV5ZFWWz8PXda3Vb8CNR1aiaVpoPLJCTOZISF62OSCzBcQ1a7YoY_yr0YyDxVJrqLXi0DSQo0a1uiu2PVnTKC6YgRzpVqKGa1Gb2di6_gy5v_ulR1Zubjw69z06D6m1LG-1BmlQzXQDGhn1FSTySOzFt_a_E0HOifCJFVGyKssZgu-1hqax1rbChNx0vem53sQBEBJxVdWqlTlqDDNQWThuFh2IeGkfSNoJC2bHcugUFGvD-FeUt1WNvgmzVa1BzUuVqRJJVkFjBwTZtBrQi2rRlj0DclPWNRK_g7ZIX1Sr0af5489IadSAcTMG8lloJR3uZ6aRF-GHh18_PK3_78Ptx4f7_7_7_GS7eBG2rlIrIZ3PCGO1ov00YYTc8rn2E4S_4-7PxzSgaVxgh8W2pfPmpekePmkhjVPrsXOU5LWRZt-eVGM0WDePrLMIadzaJ7coSXrPGA15-HcAIc8DdDDeWmwkK39mMi9BeyR5ViL3yHwYhPSDkLN6xSzjp_T63Mo92c0Qtsgt8kPSO9VZsQw4RofgRtqTOOpdCZUia14aA9VTXTJTKF3N8pdSZCOJSZamPiMBemrExmhW1U5I2MsIxzLMVgPLexH7MiKfc4z6Fk9fRVn2RuqtFI3k8EHC4UwkWRLlLMCIZTbsOHskfdCMpwrgOcUItHbd-87JaWOmOQ95zO3SYFLJl0q1TbdaaudvaTdfiy9ffmEVdOFTd2Unw23iBumdl-nqV6aXwEvElWzMyHX8oMeVTnPQNOcB8OSP47zbxYx9kLZ8hG6BWumIP-9W0wJlSpU7-R4Jnkj3qGrQzCg9cNFYqMWQH-ntnjuf8Hvf8vFU7f0seccsvVd7hzqNoqCH7U-EnfGQvWPSHrvkZgR42ac8tubIqYjfRw6fTMWHk-wdZj3G978tK7vS3s_xkBb59NwCjOMkeAcGqGxkA7cArXmmuKKLb0Oc9YOpTshZ8Q6kD46912Kzj3Dx5ctn4EqfRukHg8-FE1EyHkb4LZR7-eBCSQPfzX1Vl-_Au0DnufmAlKMzrsBiWkyF_ktbZaCF3PTou8oNGKeTkJuuwRH2D2C26oytowFgPMnWScLzKOFoNMAaKtY9bR0xdzbcYb1gyd6G58D21W7HYSufnvwhDlv6YaVHF2dFu6JDKHav1K-End7JRL1zH4a2h3rPufko14Zp87HohlxCIaQwR8G3q72XRqu85XaqogMLWPCsZ5lTdesa-DCLOy_zd9mPn570szilxKd78D-5ncHoucP2ShvzwoAeQ31TkQ5MQHC_fsk0qotTUhRp8EPgxsnjQFHEP6O7n6cxvih-wRpzjjDHjW079_t_hMxfyXL4PpywcVdLEbb72m6Gjru-rsg0wEOSTc4pFDLO_1yF3qlF2hMNOU2BceoHlF-ek7k7jrHbrymKHADrs4MdjGl8Z2GR6PIy-cNgaL9EyTRWi1MWQ3J5VXx2xz3rYXs9WhTxkIOQ08QTp4zQ-LL0ndyPeohKQ1iYG6NF1hpo9van64qV5a_AbfTai81rUw2MSUnr4vClteKec9tpYLr9tmt3WPKgOOtC7CGNdP3HIE-Odtiidxo8BFMSn7Odn8JlLzltu7-LsXpF6bA6pnFgnLI0wW_Enf7MZ6f_rcpfPJKMNxU-3p0iXGCr_HJ0-JexFR02_fSvZSv638ZW9D-frejfg63oRLZKsjx7g63ubRbK3EHnyAl3Lh-e1jfJcpxcnrJDRnjNW-dyL64ebuXPJbfHIW3Y5t7LQo1S3rO9Vkp_ZnLjdN5z0Z1do6l2zXB22a5Wk5-0auvjORZyMyTql9L708H6beaaxH1vWWRgOHqO4XgavOHwVpOPejgLXEJxLw1ouys79vofp-KjFhetOuccmsbWiUJYTx9i7XA6RKcyHE_S4nJsHzn-nvon93t_ivaHM35GezIco9B0svKEv5X8dnO8n9P8BQr3KXQwbNsDfM5xI_JGavao6gd4hvL44Oxjzf7RwidzkI_t1vpnKE5mY68nAR9U3pZwX9VKD7F9lFcO-VZwjvp5yMLL3rcSujH_Lg2G1CU4w_QJ88mJ_HC-ftxH6UbrMOwTcp-S7V7l0EmOG2RBVMBetJqvH1faBliZz90C7YrvvgNvDfRFr3xIcb9bCoKTmgUByYt9pl2oHH4COUW6v5M-bedn9YnZ3mgXlBkPRIYJmkZ0AYsivzhQq6pFaTPpxjDJ4bRm55GNTj53YKadLAY8orCfdPTDvmJ63rFecgnziOnwkOoE0xgAx1kS5wHi3H-qmNjfsc21Zi9uCS34lo3eotgltUD7ZWSBDt6d-mQXvU7ve3DMoqJI0KD3wn90y-L0prE7uz6BJNo_mLYy-mTj6OAwGFwzPB1PcczCfDg8GQzSvyeyAzvt5tPHi4LeAuG010k4Bh8KjuzI_YQOAgjKX8p87zVoCD4GjBrD-veohA63TwZ3QaC13W_PUStZVgIyCkFnbsRVVTHpLqbM3atYo1ltf0XnZLgSVPRLYBDQX3BBeevEN-6lNfJI0jaArp9dGQASI3dORyOgZ9DuooOfzPAMb4S7NvFjV1FmtlcRRX6MU5-lCeE4wQTSLE1wQTjE4PvMp2HIaZLthn9kegPGKsZ0FQXXrK5LuM6Z_iYkoTMy64356N53o0rlUNrWtWrE9wMbSWVs8EC5YBupGiM4qhpX099iIe_47N8vuspvaJ7SlF3BjR_jMAyDJMZX2xtKkzgCn3McAvhZkhR-nsUZJFFAOBB2JW4IJgH2_QSHfkDxLEkzYCQDYAmOYuJ7AYaKiXJmjTtTenPlbvjcxEkYkKuSZVA27roYIYPmgzd4hHhkYSs0a7bXSl4_s1K44nB5pW_cdGXtpvECXIrGNK9jGGFKuOmcobs39G0Lw2WnEzdihDwuvGp1eXhT7QfuLzkF_xkAAP__vut6cw">