<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzVVVFvmzAQ_jXwYhURU0J44CFNVqmapk3btLVPlcEHeDM2s0079ut3NlHTVFP60KdJjrG54-777O8uteZz1Ts32ijbRvQaR9c0Sad5raVLtOnwzR_8sfeXin_4_utTlO6jdLvMrheW3HwmjWG2B0uidapHRy4-Ulz5gM98_ZtlLFuad8m1YQOQKNsTN4-4KK7IgxacRHRztEcUncsw714zi4yGx-qwwZD7ExCXaZcYsNMAxobEoxEPzAFptLKOKUei_Cojv88myvfe64wHqYVrmHXefHQLloCAT8MwE6fP0ylfIfx_ZclPLoJDI5mBw0dPcQ6xTxxboYCIzSFhu7hgoiz1glm8QDkzPwmOoDUXSoHpuQy33DApjzGkfBiSRhud1NAJhRGd_gmKKK0gCCc4qknKJzCEGHDPDQvE4p-kXkt0zPFohAOt5PyCNXPOiHpyvqYCUeTgqyOi1IebHJ5JMqKQRykcvkQ7zqj654p_UXBhbvWkOKlnj65nzk4KY4iGLdaYVxkvs5LFbHK9NpWBDnoTT0a-bBLC9VON3AbceJqHx8Vo9A9oENO1sHYCi4uclisa91XN0jK75HnRrgva0qJuS8pX7YoVJS3yZhNLVoO0FdYWElHwSEIITy_fx29HICqa0tWK4ibPi7xIMmAAbQvpBjjbbFI8ExiYkEm4N-x9salCyHrqrL9OYZ09Gpm1olMAATAidMJJqA5QhGrkxOGI7cs0jtp4WDusJqG6pEcudF3iHNqf8r0wOCPFbOtr7h5F51DXu1svmTtfSdm7xYyW-9A0T79Aid0tBedb1COeEbkN6jm6bdW8Qw3d8BvseFF2Re5eOHxjEk8dDW9AdS5l6KCe9dZaME5o5f84hGUhJIaiG4SwFPkaR1C955btvs6L3RuZ6bCNY8fWLcHT1sPInKglBNhRKIaIFqTFCwWexEEMVVDCX2i2A-8>52912</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            llvm/include/llvm/Support/Casting.h:269: typename llvm::cast_retty<X, Y*>::ret_type llvm::cast(Y*) [with X = llvm::AnyCoroIdInst; Y = llvm::Value; typename llvm::cast_retty<X, Y*>::ret_type = llvm::AnyCoroIdInst*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
        </td>
    </tr>

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

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

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

<pre>
    https://gcc.godbolt.org/z/aK4ndMWqP

this IR crashes `opt -O2`:

```
%g.Frame = type { void (%g.Frame*)*, void (%g.Frame*)*, i32, i1, i32 }

@g.resumers = private constant [3 x void (%g.Frame*)*] [void (%g.Frame*)* bitcast (void ()* @g.dummy to void (%g.Frame*)*), void (%g.Frame*)* bitcast (void ()* @g.dummy to void (%g.Frame*)*), void (%g.Frame*)* bitcast (void ()* @g.dummy to void (%g.Frame*)*)]

declare void @g.dummy()

define i8* @f() #0 {
entry:
  %innerhdl = call i8* @llvm.coro.begin(token none, i8* null)
  ret i8* null
}

declare i8* @llvm.coro.begin(token, i8* writeonly)

attributes #0 = { "coroutine.presplit"="1" }
```

found by @hatsunespica

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVVU2PmzAQ_TVwsRYRE0I4cMgmjbSqqlZt1e6eKgMTcGts6o_d0l_fsYk2m6jKHnqqBIb4DW--3ji1aqeqt3Y0UbaJ6B6vrmmSTrW1EjZRusOd33izt0vZvvv680OU7qJ0M6-254bcfSSNZqYHQ6JVqkZLbt5TfPOEL2z9znzNP2neJXvNBiBRtiN2GvGluCWPirckousTHlE0LsO6fQ3mGQ2PxfEHUu7OglimXaLBuAG0CY5HzR-ZBdIoaSyTlkT5bUZ-XXWU77zVFQtSc9swYz18MgtIiKB1wzARq66nU76S8P_lJT9rRAuNYBqOHz3zHLnPDA9cAuHro8PDbIKOstQLZrYCafX0LDiCaM6lBN23InS5YUKcOIR4HJJGaZXU0HGJjFb9AEmkkhCEEwylE-I5GEI02JfAHGLx16Rec3Ty8aS5BSXFdJE1s1bz2lk_UyFRzMFPR0Spp3MWa5KMKORRcIubiOOKqn-p-IuBC-tBOdmSevLR9cwaJ5GDN2xG47bK2jIrWWy5FVD5-HH2uWyEa7E0--PGJzeOSqPj_RaVwWWX9Fh8uipxDaMs_VwHY-xJtvH6-YYFtNij7b1P_8GrInszw4h8CwfA-RdYrodZPH7cnrjtyX2oxMlsI6ct1uOuvcPpjbJb8nBh8IUJBx74h6iuuQyngc96Ywxoy5X0hyA3LFAiFV1jCLNgV3iFDvrcsu3nacY9yHSHRxKePupAsNpqGJnltYAQdhQaG9GCHBgX0Cax0-Ly0MbquBq1Npy65B83o1bfofGt4sY4MPiS03JB476CMssymrOyWZVpsSyWdZ2nS7bCu2A0L2PBahCmwuKjfwlPJFD4WPJdzCua0sWCIlmeF3mRZMAADgdI19Cy9TpFhcGAASdhCvCfJNZBUDe164wfDm6sOYHMGN5JgOAO-ZmzvdKVhg56HQfPVYj8D5W47c8">