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

    <tr>
        <th>Summary</th>
        <td>
            coroutines: crash in codegenerator
        </td>
    </tr>

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

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

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

<pre>
    I'm trying to reproduce https://github.com/llvm/llvm-project/issues/57833 using bugpoint. During that I found the following crash (which weirdly only happens in bugpoint, but not during normal compilation.
I tested on llvm-13 through 15, it crashes on every version.

main.cpp:
```cpp
#include <coroutine>
#include <exception>

struct task {
    struct promise_type {
        auto initial_suspend() {
            return std::suspend_always{};
        }

        auto final_suspend() noexcept {
            return std::suspend_never{};
        }

        void return_void() {
        }

        task get_return_object() {
            std::terminate();
        }

        void unhandled_exception() {
            std::terminate();
        }
    };
};

task coro() {
    co_return;
}

int main() {
    coro();
}
```

```shell
$ /usr/bin/clang++-15 \
    -emit-llvm -O1 -Xclang -disable-llvm-passes \
    -std=c++20 \
    -stdlib=libc++ \
    -c main.cpp \
    -o main.bc

$ bugpoint-15 -run-llc main.bc
Read input file      : 'main.bc'
*** All input ok
Initializing execution environment: Found llc: /usr/lib/llvm-15/bin/llc
Running the code generator to test for a crash: <llc>
Error running tool:
  /usr/lib/llvm-15/bin/llc -o bugpoint-test-program-fc198ad.bc-7087ea5.llc.s bugpoint-test-program-fc198ad.bc
free(): invalid pointer
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /usr/lib/llvm-15/bin/llc -o bugpoint-test-program-fc198ad.bc-7087ea5.llc.s bugpoint-test-program-fc198ad.bc
1.      Running pass 'Function Pass Manager' on module 'bugpoint-test-program-fc198ad.bc'.
2.      Running pass 'X86 DAG->DAG Instruction Selection' on function '@_Z4corov'
 #0 0x00007f283e8fc2d1 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xf042d1)
 #1 0x00007f283e8fa00e llvm::sys::RunSignalHandlers() (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xf0200e)
 #2 0x00007f283e8fc7f6 (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0xf047f6)
 #3 0x00007f283d4dd520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f283d531a7c pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x96a7c)
 #5 0x00007f283d4dd476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007f283d4c37f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007f283d5246f6 (/lib/x86_64-linux-gnu/libc.so.6+0x896f6)
 #8 0x00007f283d53bd7c (/lib/x86_64-linux-gnu/libc.so.6+0xa0d7c)
 #9 0x00007f283d53dac4 (/lib/x86_64-linux-gnu/libc.so.6+0xa2ac4)
#10 0x00007f283d5404d3 __libc_free (/lib/x86_64-linux-gnu/libc.so.6+0xa54d3)
#11 0x00007f283f013df8 (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x161bdf8)
#12 0x00007f283f013a5f (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x161ba5f)
#13 0x00007f283f01390f (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x161b90f)
#14 0x00007f283f0137a3 (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x161b7a3)
#15 0x00007f283f03fb0f (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x1647b0f)
#16 0x00007f283f03f432 (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x1647432)
#17 0x00007f283f04193b (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x164993b)
#18 0x00007f283f014ea9 (/usr/lib/llvm-15/bin/../lib/libLLVM-15.so.1+0x161cea9)
#19 0x00007ffd3993d600 
...
```

Details (Dockerfile, logs, reduced bc files):
[repro.tar.gz](https://github.com/llvm/llvm-project/files/9610967/repro.tar.gz)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1WNuO2zYQ_Rr5hbBA3aUHPzjr3XaBBF10iyLoi0GRlMyuTBkktZd8fYeUZK8Up4kbVzBkiZw5Z2ZIzoxdtuxtde-F2R4Z9SZkjUyLFD-olnWUo50xB-1Fay-8g08tzK4rfdru4aVpnsevJYj_zamBV6F1xzU8JFkeRajTFrLs6kMrpPHRplOOY0cMukdV20kGLxyemqZ9sVNUEb1DXpi_7ATdoRcuFGveUCvhtiOHA5caCXmE9MIbeDZItgaxHly2ak8aBFYeREOMaKXv4Y2H1_fIcG04AzDkzA4iIFdtV-9QkFgkYXp-rq0Mf-bqDcFNnzD6-54I6dPDwUamH05x_7GD_UgYCUmbjnHkRTe0BRojJPei23Pz_JXygzX1NO_u2qiOGmSIfkJe9qEfRHANExD4vdB8a94OfCpgL9LBYgopjCDNVncagscgsl5YfC1rL8VNpyRgM-tYtB5UtqR5IW_aqmQbL5op2rF3Fk-4KyG_YpZt7-xlJki7GJdZ8NwKNuBt7fO3PP-Guot5zc12gGjLfot_O3xHow1Xe_Dc8F76IoM7uSOSNZxtT3viqpzjyygweXZ357ndseeIaTsEZALwThsOJbLn47zyCHpGezxC78GOg3Amm2Y8OTHkh7tOK7iXluiONkTWXvgBPssgQV5yc-Jc8r0wS3ve0fK3AC0_O2G0ZEKTsuHLPoERreHQTxVdbDe0xw3x17ONKEEA7oPMTIKiMU_MJtp-AtTeuwpujVnNOrFUnQTj6FT2d04YHOkDpLxKNHxY22iNbAofBMNsRBw-aN00g1L7NOTCPiuILzZj8ldOO7vTEJfPQrVyzyGzAuidS9BgRM8wxNy6PSR-mzaHNbBSvYmdlH2S57DgkN9qLrkiplW2ttgUDOleIdKnWocc3TiOIfXdKgXzaoRp2-aYZ9EPWGHjewykpbPlqVZkv6xoUOSEQYyWGc4zThIf5H39XfGevFL8eLrWEM9niB9DThFykxN5-Hi7frxFuith04GLAGyraauM9f2_V1MEOQGN9cIF1pXJktAnowjlQ3V6NDAAdXB_qkwYpoqH3iNEVN3ZtdU_tp7_WyQDa9S4T-zZs9v3rpPUbcIHO_CJSFJDWMPMluI9tCOw2-HtuwRhNgQjPEfyOU_RZv3LEjYbfKF72RdSS_vIG077fOs4q9Eee6BivP0rtunr-Xi8YDzCCL9iuLIqzCOeVzRkgesthur1pvuHB-hMjFudP-xywS46CSnysm3BDE5gB6SuDbF9TYHcXvvXNfL905QoP3788xPM-rr1A8hG-LXCMdhj9-vR4GBmMMGYnzMY4vYoaqjev7pqpPSYzn_ephAoJzaF8yBmVXoV5wFnQhS9J2IxY4nN6o6ox3nN020aLxshu9dlLbt-glrQ1IHGIahMMOMJZhIFJKPoAG0lJOrtk4DEexFBkYL-hCCZGx1nKaq1W5xLjQfVCXY6xaZRVkWIlDZdXYQc5qA4Qc6mYQnj9LimP4iZF-ls-fJZqEsGob4Ik2A2i24xw2SExhdihqByxLRHDE8xYxyzCG23Vm1ra8iF-AmoT_AnZ7jCQcSq_OfPS5AGJQBNmMI5E0mq6zAB0IQpmjMV-EpMADRhiudMGYmuwwRAE6ZkyhRV5XV8irNy5lM6Z4ohqV6FCYAmTNmUKQ6KqLwKUwFAE6Z8tk4xJ1coP7BOFIAmTKccULEI7GAphrLgpn1__N1_7tfJhhsiGttX5JuWPnFlW3JbwJu21vZbcfsvCkMldd267lvHASL54P5n8Q1Rfv3FSzYAc3GHOMDeFWmAizSDpwno6OaCr4I0jTKoiSFesFXEiqggCyNMw1fHPydcW9h3lkK63v3Yui861ax-6t-gJF3sVlkEXRou4wLHVZBWZZnmOWZpwuKwpBwXi4aUvNErCI4XhpK_IAcBzxCfhViFOAxxAXccQBvhcwa9AqZJEoYZhzwIbRqHX0GNb-3wW1Uv1MqZBF2jhslGaKNPk9ATQhnl3NEBPunMrlUrwpQgUuxLCIBcOANWzoF_AOOhfPc">