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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Clang hangs when compiling valid code involving std::thread and lambda with `--std=c++23`
        </td>
    </tr>

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

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

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

<pre>
    Clang trunk hangs when compiling following program under C++23 mode. The same code compiles successfully and quickly with `--std=c++20`.
## Program
```cpp
#include <thread>

int main() {
    std::thread memory_thread([]() {
      const int alloc_size = 1024 * 1024;
      while (true) {
        char *buffer = new char[alloc_size];
        if (buffer == nullptr)
          break;
        delete[] buffer;
      }
    });
 return 0;
}
```
Here is the repro: https://godbolt.org/z/4v1c5Wreq
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx0k8GO4zYMhp-GvhATyFQcJwcfkpkGPfZQoL0tZImJ1ZElryQnmH36QnbQTKddIEBokd9PkfavUrJXz9xBc4LmrVJzHkLs_vRWhaoP5qN7dcpfMcfZv-Og_DXhfWCPOoyTddZf8RKcC_cSTTFcoxpx9oYjvgKdgE4kcQyGN_j7wJjUyKiD4QfPCdOsNad0mZ37QOUNfp-tfncfeLd5QNiJl5eUDcg3_dATsBMbEEcgCSTxt7VpOdiJ9aenac1br91sGEG-5iGyMiB_KRlxtD7jqKwH2gMdENoTiCMi4tLrCPK4AjjyGOLHtwdO-3VP_8EQdfApY9FVzgX9LdkfpfEb1oK2CHRcApBP4j5Yxwi0z3Hmr3KIelCxcP18uXBcpDzfl2NoTs8m5TryM2gvRfSJLeTs3JQj0OFTIWIfWb3_mzbsOPM6Jq4inwugfXvEJaLDIxc5z9GjWB_Xon_eB4jjrxwZbcI8MEaeYgB5xCHnKZVt0xnofA2mDy5vQrwCnX8Anbe3Wjd_RP5emU6agzyoiru6beRBti3V1dAJeWkb0_YHuhjSSnNr2rrXoq21USwule1IUCNaWYtt01C96Xdb3h6koGZX7_dawVbwqKzbOHcbS-_KpjRzVzf1tqkrp3p2aXEHkS5WAKJilNgV4KWfrwm2wtmU01Mi2-wWSy3mKYtcXfS__rkpZ81qCutvwd3K4dfPsBjDqbE36qe-kLAT1Rxd92WtNg9zv9FhBDqXGz7-XqYY_mKdgc7LxAno_Bj61tHfAQAA__9S7jgx">