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

    <tr>
        <th>Summary</th>
        <td>
            Clang crash instantiating lambda with __attribute__((stdcall))
        </td>
    </tr>

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

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

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

<pre>
    ```
Stack dump:
0.      Program arguments: D:\\dev\\toolchain\\llvm-mingw\\llvm-mingw-20220906-ucrt-x86_64\\bin\\clang-15 --start-no-unused-arguments --driver-mode=g++ -target x86_64-w64-mingw32 -rtlib=compiler-rt -unwindlib=libunwind -stdlib=libc++ -fuse-ld=lld --end-no-unused-arguments -DCPPWINRT_VERSION_STRING=\"2.3.4.5\" -DNEEDS_UUIDOF_ICONTEXTCALLBACK_HACK -D_WIN32_WINNT=0x0602 -ID:/dev/mingw-winrt/cppwinrt/test -ID:/dev/mingw-winrt/cppwinrt/mingw-support -ID:/dev/mingw-winrt/cppwinrt/cppwinrt -ID:/dev/mingw-winrt/cppwinrt/build/x64/test/cppwinrt -g -std=gnu++20 -Winvalid-pch -Xclang -include-pch -Xclang D:/dev/mingw-winrt/cppwinrt/build/x64/test/CMakeFiles/cppwinrt-test.dir/cmake_pch.hxx.pch -Xclang -include -Xclang D:/dev/mingw-winrt/cppwinrt/build/x64/test/CMakeFiles/cppwinrt-test.dir/cmake_pch.hxx -MD -MT test/CMakeFiles/cppwinrt-test.dir/test/disconnected.cpp.obj -MF test\\CMakeFiles\\cppwinrt-test.dir\\test\\disconnected.cpp.obj.d -o test/CMakeFiles/cppwinrt-test.dir/test/disconnected.cpp.obj -c D:/dev/mingw-winrt/cppwinrt/test/test/disconnected.cpp
1.      <eof> parser at end of file
2.      D:/dev/mingw-winrt/cppwinrt/test/test/disconnected.cpp:192:10: instantiating function definition '(anonymous namespace)::InvokeInContext<(lambda at D:/dev/mingw-winrt/cppwinrt/test/test/disconnected.cpp:207:40)>'
Exception Code: 0xC0000005
 #0 0x00007ffa996e80ee llvm::DenseMap<std::__1::pair<clang::Decl*, unsigned int>, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<std::__1::pair<clang::Decl*, unsigned int>, void>, llvm::detail::DenseSetPair<std::__1::pair<clang::Decl*, unsigned int>>>::grow(unsigned int) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfc80ee)
 #1 0x00007ffa996de815 llvm::DenseMap<std::__1::pair<clang::Decl*, unsigned int>, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<std::__1::pair<clang::Decl*, unsigned int>, void>, llvm::detail::DenseSetPair<std::__1::pair<clang::Decl*, unsigned int>>>::grow(unsigned int) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfbe815)
 #2 0x00007ffa996d64a3 clang::Sema::SubstExprs(llvm::ArrayRef<clang::Expr*>, bool, clang::MultiLevelTemplateArgumentList const&, llvm::SmallVectorImpl<clang::Expr*>&) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfb64a3)
 #3 0x00007ffa996dc504 llvm::DenseMap<std::__1::pair<clang::Decl*, unsigned int>, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<std::__1::pair<clang::Decl*, unsigned int>, void>, llvm::detail::DenseSetPair<std::__1::pair<clang::Decl*, unsigned int>>>::grow(unsigned int) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfbc504)
 #4 0x00007ffa996d64a3 clang::Sema::SubstExprs(llvm::ArrayRef<clang::Expr*>, bool, clang::MultiLevelTemplateArgumentList const&, llvm::SmallVectorImpl<clang::Expr*>&) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfb64a3)
 #5 0x00007ffa996dc504 llvm::DenseMap<std::__1::pair<clang::Decl*, unsigned int>, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<std::__1::pair<clang::Decl*, unsigned int>, void>, llvm::detail::DenseSetPair<std::__1::pair<clang::Decl*, unsigned int>>>::grow(unsigned int) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfbc504)
 #6 0x00007ffa996d47c5 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfb47c5)
 #7 0x00007ffa996ed12d clang::PackExpansionExpr::PackExpansionExpr(clang::QualType, clang::Expr*, clang::SourceLocation, llvm::Optional<unsigned int>) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfcd12d)
 #8 0x00007ffa996d4762 clang::Sema::SubstStmt(clang::Stmt*, clang::MultiLevelTemplateArgumentList const&) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xfb4762)
 #9 0x00007ffa99716e62 clang::Sema::InstantiateFunctionDefinition(clang::SourceLocation, clang::FunctionDecl*, bool, bool, bool) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xff6e62)
#10 0x00007ffa9971910b clang::Sema::PerformPendingInstantiations(bool) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0xff910b)
#11 0x00007ffa98ff660b clang::Sema::ActOnEndOfTranslationUnitFragment(clang::Sema::TUFragmentKind) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x8d660b) 
#12 0x00007ffa98ff74a3 clang::Sema::ActOnEndOfTranslationUnit() (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x8d74a3)
#13 0x00007ffa9895fcb6 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x23fcb6)
#14 0x00007ffa9887f08e clang::ParseAST(clang::Sema&, bool, bool) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x15f08e)
#15 0x00007ffa9a4a3794 clang::FrontendAction::Execute() (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x1d83794)
#16 0x00007ffa9a42e014 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x1d0e014)
#17 0x00007ffa9a51de80 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x1dfde80)
#18 0x00007ff6f4d36a71 (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\clang-15.exe+0x6a71)
#19 0x00007ff6f4d34b25 (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\clang-15.exe+0x4b25)
#20 0x00007ffa9a0c5ac6 llvm::SmallVectorTemplateBase<llvm::SmallString<128u>, false>::grow(unsigned long long) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x19a5ac6)
#21 0x00007ffaaaa97be3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libLLVM-15.dll+0x97be3)
#22 0x00007ffa9a0c56a9 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x19a56a9)
#23 0x00007ffa9a08f646 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x196f646)
#24 0x00007ffa9a08f8ad clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x196f8ad)
#25 0x00007ffa9a0a8bcb clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\libclang-cpp.dll+0x1988bcb)
#26 0x00007ff6f4d3441e (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\clang-15.exe+0x441e)
#27 0x00007ff6f4d313d6 (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\clang-15.exe+0x13d6)
#28 0x00007ff6f4d31426 (D:\dev\toolchain\llvm-mingw\llvm-mingw-20220906-ucrt-x86_64\bin\clang-15.exe+0x1426)
#29 0x00007ffb2eb47034 (C:\WINDOWS\System32\KERNEL32.DLL+0x17034)
#30 0x00007ffb2f602651 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x52651)
clang-15: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 4ba6a9c9f65bbc8bd06e3652cb20fd4dfc846137)
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: D:/dev/toolchain/llvm-mingw/llvm-mingw-20220906-ucrt-x86_64/bin
clang-15: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-15: note: diagnostic msg: C:/Users/Alvin/AppData/Local/Temp/disconnected-40302b.cpp
clang-15: note: diagnostic msg: C:/Users/Alvin/AppData/Local/Temp/disconnected-40302b.sh
clang-15: note: diagnostic msg:

********************
```
Original code: [disconnected-40302b.zip](https://github.com/llvm/llvm-project/files/9788258/disconnected-40302b.zip)
Toolchain: https://github.com/mstorsjo/llvm-mingw/releases/tag/20220906

Reduced reproducer: https://godbolt.org/z/hM47hEbq8

```c++
using func_t = int (__attribute__((stdcall)) *)(void *);

void call(void *, func_t);

template<typename T>
void a(T &&lambda) {
    void *d = &lambda;
    call(d, [](void *x) __attribute__((stdcall)) -> int {
        auto &lambda = *reinterpret_cast<T*>(x);
        lambda();
        return 0;
    });
}

extern "C" int puts(const char *);

void b() {
    a([]() {
        puts("xxx");
    });
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztGl1z4jjy15AXlSl_YcxDHggfs9ySkA3MzN4TJVsyeMfYXllOyP7665ZtYhGYzdzmmKq5oQixrVZ_d6tbVpCx5-uOZ9Zfc9wxh0tJwy-Elbu84wyrR2aXqM-9yDaC7ggVm3LHU1kABBkjWG8EX8YfqwuZZUm4pXFa3SbJ487Yxenm6fjesE3bNgemZ5ShkMbe99aeWwEFzewwoenGsHrEMApJASrNjDItC86MAx8wxkT8yIWxyxjvOONNx76BLzFgxoZLUmE2nuBPEXZsYgiZxAHAhtkujxOYKyQBzE9xyqoB-K1uCVB-eRY2uCNgwkgYPk0AxuApO83ceHR__3l297Baf5o8LGeLu_Vy9TC7-wAzUUbbtrtO1-32qhuAv5tMxsv1x4-z8WK6no0Wd6vJ76vRcD6_GY5-Xf8CPwC0BpSOjb93K8Bk7k3PhMkzZRB7itawp5WaQQgh4S7M8-ZS8kK-GbgaKMo8z8TbZzWXb54QlDGo057uwQkqDjUsG2UHtG5aVjawTWJ8jtNHmsTMyMMtMX5X7kKMOA2TknHt4T9gYnRLv_ApeEnRAjZwsMtigc92ALAGat3tft89xcrl2SDG7Rj-VuSts2s4FhdhlqY8lJx1Aa6bBX8AnmmFRwVlC1UVpK-wVYngMOEUzi4ETfY-zIVv1GqN5AyuKttZdbbrOCOeRR1nQnIqCi4IlQRCnGQRiYDPCtiugd-FvDO0Bjb-mphY4xTyXSpjKgEdico0lHGWEsajOI3VZcfud2yfpln6vMvKgqR0x4uchrxjD5AfZzhLH7MvfJaOslTyvQSRYEJCdwGjKM47cW2bffh1TUV2glwp3Uz2Ic8VoyOVlYfE3I9M9elVECCBY8JTfNSPIjoYeNw3OSe4RFQSjHla8FsKZEYq-PHZem1VFzkF13CqJaIBD5OODUKNSJkW8SblDBQpFVujFlrGJY2TFokll5NdLp91sIb6LI2yd-HgMYvZm5i5rxD_Q4r1F6E2InsC42sQ9gAs4NcreLV8t9dubeH--1W7WrJxhVRLNgYnS4CzG3MfhWhW9I-D3S3d7oz7sMb_tPsPZvcAzarZ3T6yu-dSh7SkWvIdra_KoJCTfS4KTFoHrQ2FoM8PPNKVgXCojErHAUiD_1sAt2Ui4zl_5MmK7_KESj6sK7R5DKUQ5DRMb55uoeWOJsknyHWZmMGk8yS9S-oUVabp1DnSadgz3Z-x9MPFEppVs7v7M5bePZZ6P2Pp_zKWvCO7u_2w95VYWsod8Ou3AdST4X8bKpcTHSXTRO8fleDMsllbhnsafoEApWCqLFWReuaxpo_fSpqsnnN-pJAm0vWny6wUIZ9nIcWGQXfHhWoiKGaMVx58uQIWlaJpzX_lMJ79ozqMZ2uiDzTR-5bHz4k-OzSxfFp3sONDA3ukjlcu0Bp8mXzILc26pP-_mFYiFPqgFWxozCOtDCwzOK2Vey6iTOzuecqA_IuOQEBcny8tCTKqSaL1Zj6I6p2TZBjKRTpJ2SJaCUgEiZLhI5h3KugGnfbIxoeJq48NxK9xyi4nrc9QGEXvIK59JG7_bBl1Vlxg_pIy9NtVC4qgdQD-oBeFgaencNzCal2vslwlmSqg2jZa5PTPkt_LE6v6B5GVuSoXJ3V5d1JLtxkrEw5FXiYg7UHoXzRf2Q4Kr2lHq5N9vx-ZPn-lneFydcJZKzG_T46xesioJolWnVLwgv7A1fKkwJ2-lA1VtmxWXB6WaIQLuqjFfGRN493Tebe5aWm8j-oXMVU-DLnGfS2QZqAjYS_pZBYzkX1NPq2Moj2Lcd_UKx8lyYuYj4e1zv-aGnC5u5xcEbKtydUqdLzIZY5H-9b7s9O85-vyPVesIBmNj8ERH25g9y7AB5Jp82Fr6zw1wx4NvdN9blPB3dACvHl0BLOUIkajjyxog-omLKIJgp7pkZIs3aifCzoEeDLIpymgXR7AZ9APuNNSwEjQYvvAw-yRi-fDmwcceSjTJY148qxtQjSvNtZCbURgS0qqZPU_LPHn80-3aOVGTiWEJqV9bGaPDtrhXL1xrkUeWRC2O5qy45R7cq_lZG_T8g7lGPU6W_nF6747oEUcrovGh0Af4jQgjqyloDG-r6_gzuEEp8SUlIkWIMK26m2Vi1QTckEHBM1rpnF00_iR53pnTaPSKX21HDb20nLv0UQE0Haz3gY61KqGS6vLQ21o6nKP1eVT9q3q-lcWFOd1BaPftPN3dhtJ7QK9Xc-1f35XbYMyNW3rJZpJ_SAMzgk0bl1r5cGJuuCclb6Hti-3-vioPk2_3nEZ4Fr8EmUAkNH46B_xYTnMuwAfSEbj47g8s1z7Iny4ts5HqzwLbB64fdNxkY9Rxcfn2d148XkJV8vnQvKdY8Plr5OHu8ncsbvj-bzCirPaaNvnAwI78kzb61mn0f57uZrcKrSpBAc6OFEPpxxwNoLAdMKFwLVuWEUAiep-Ajy-8vyIQiHOCCs5kRnBIowmSLssODEe1TPOSdwq5NtECEQSbo0S0JrZNXHiVsocT8117Cl8N7HclkEXqMGNCuDqn5GL7A8I4C4AEDegsPyFg8jrBUHoB8z0uOP17DCwzYi5LAp917Oc_oH2Sh15Q6lap97wGFv2VBh4dKqC2goOqwCel8OdfpJnRbyvhlTjkYDg41gpRzsl8uJINa-VI7VvTjuSPUVHemWCNJPqaAiL6SbNChmHZFeoZFR7wD_4VhjU7_18MlxOyHC1Go5-IatfJmS6mM8X4D0fyHQ2nyzJaqEe33z8QB4m94uH1YGHe8HBICEvCvCFQu1SgikLzILoJLQoshA3OBkRZUqKUMS5PAAITlRNBaNUHlC-SQNkVCn-Y8Hxtd10mDwqtQ_zfEwlhSvcLAUfn2KfcXQ0x3BNx7SDl2NNlyNZbL_dzO9lbP0s60LEmxhjNqwPIHV6N6c4_ivOO73xN8cn3Eb1ibVB3_ftnn9GI4j_EJ6HAAJ-vkJvV8ACXvyRHceZ4AmHdhKJSgqN4LSJtrYmHzgrQ3RI9Fy8FCeoZSzIEtnNBGL5C_62t25_Own-9DWjNCqtz71WT8uiOZS2hlrLGeMLGUxw6zWV0JIEUMis16qJ86H6AJfB0qyqG4bqyq_bPHXn3LQpqpFqSgtqVFN7DS_rLhsKGvmcczwFR1ZYqbxgA8_1V0SVLl51_E3x0q_x4Am-hhJT4rzAOS2YmimG3IArVT7TTNwjyr-V38ADhUpZbeL4oSWsJwe6NRdDwQGYi1xwuQ5pgUf4Vs2Lcn_fVkaDp5HPPzUIaEqRElMb6PTHmlbhtqVe6N65wMOGtjqdjLznpVTNgKq0sVH8iiGDZt-xLa9ir1Hgq1H81CSA4n4PYtrHwpzluXHXK35teV6v7_Vc371i1w4bOAN6JWOZ8OuRWp9D3Kg4OmdZa_8JQvFvjXlViuT6m1NGXBSlCt-e73je1fa6Dy1EZOPm7oDbPDRNGg6CiFk0chyHOvZVQgOeFNeVwq7ia4x4y7Rcy3N80-0GnFrM4jzggMQMWMc1-Q4qly4SxvC-EteKh6DcFDCYQKdWvAzC-oW7S7zBD364zcQ1xdS_zcJtmV4plq8Vv_8B0zCRrw">