<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJzNV1FzmzgQ_jX4RRMPCAz2gx9skrSd6d1kLu1N--QRIGw1MmKQSJv79beSsEHYrpvmHs6TBCOtvv20-2m1yUTxsvRiv_vxbz1_5YVr9NfnP71whUSt0M0jumEVZxVFXpgiD8-ktStoqQefBSuQF_mlEB6ee3iBatpIURHO1AtiIYYl8-l0CjMeXqG2gnXIS9YWhFaqeQFX9g2hrEEsQCXhkno4RZxklGuf3wSrnAFZA35H2Py1A0D6FR-91bqhhYRvtxrV0um5uP4H3sz765yderOUcXriGd7rHTNm-sniCHmzNQo6W7MORm7NO0z4QxAz0QPl-9oAMf2l3SqDdkACdDfydoETaVY9iycaOGP0hxv8g81rInISjj7GCFlAKy4jGautw_Tho4TLCWy_s6roB3NOSdXWwZDscewVbE_IHnY8yBgpAjPb4cM7-s7UjlWoEvr0zNaDzAzFdSA0zUWlzjG1E79G9wJT3GXcDcgh7V2I0xNODVVnxIBPc4_flvszIfgtETg4l9SAz8T4VfwvxthRA36TGnTkT2nq0V8meinKYy04Qe8dobIR-6Oyu1hCsHPCOW2G5Ew5eGs1HNSZUTHQXLQIOpfJ7dD36BpSVKrfuIdcsQ2vs98tOf95fPwL4RjK422H0Hf1--vyPa-ZS5I55m_Ud5i_Kylpo-SxJThrCn2J3qmH73diD43CfVWLWjzDl4bWQsKT8-f9Td2IbzRX3Ss8WJXztqD9wCPsTDTaIiVSsWo73QEwns00vFSFphFCk0IyTjes3IDb1MgiQAbBTDO5kWxfg4V6qSlYfPXCOzv1THhLjeJSpCcrsqeDlTk43UDUFLRA6RdtBCdRKtQDwGSHejdaBzQOxjjWcoeU6AyhLyZvvXFqk_NAig9grpP-dWTxGZotGP6_7fen28CmT32Tj6sOQOAgA6tIJioE-mOSGFjAwvO_CTeB1_GP4YFNXsL004ud15Ok2bZ76MuQKKHE5GJfE8UguoY6xBVWeTiBjpdxWkytvB8-3q0e75Bssz3UF4Kydou0sBulz9JOqdqcD3wPPzAnp3oTU9Fs4R0ROHGdzpHaUZQ3RO5QRvIn1ZCcdi4eFQygot3Xx5Pmw9TioRHbhuyPtLUj8M94oX3pHvx-9E_BTUGBw42oOOz6thvUVdiPIyDWlQgPhz7yf_iHTxjEJJoF6KFhlTJkPml2j2wLBfs97EGXCzw3ZQ4yAYG0U3Ka15qyb36P2MEIO8kxRWMw8HQVCHdASVlCPc-yeTLz0Qb0JJVo6AYyYPJ6z1kWR_aZT6WYggLW_o8Ig3l_ZwBe6ODl_mwe5YBXq11DSbF5YpxvzFnSwSZWZT9xMC9hveMgGhOOSYy20uzxClewdKBmLhTBSREikokrm8Y52DlA8RgoLjO0qfiGC9hzIfaEVdBz8OIKLixzcJPRXoNwEf8UIszAwoGYO0LBQZAXJbIS-WCkW9y9hwoAoH1h-GA6g0NR0N3wcWpNJMvXXORPJ1Mph3uySEUBK0vR1Wjr476tcp3q8xJcjCgmJaRhyGYI4RBN4ZYFRtQ4Sy-uOfIZmqxWf1HZcjjwdiOZENy16F2ubNWbn9QFG3RL-Rh2fTyds48XSbyI5if8mgciZVeiW3dnH8k_L3p37xpS7-zQY5qebgJE_yKZ_INUZAtnPkyvQwzXuzaArst4fMXGzfo7AP1cF0RRG8_D5XwpWl0w-mgdOp1JsQyLRbggE9KqnWiWFXti-aRt-NK9AbZw6bcZnKd939eM2h8mZUt1WzQLsR9PdsugXCR4HiQkmC0SEuKI-hkusjj2gzCJomhiulm51G0exhX9jgyEvqxmt5O3M2BL7GPsB0EURFB0o-m8zHBAcr8McJIsQD2RT6FM8OPVNmmWBlLfdzDJmVT9vTcB4UDFo3Rp-9KJYorTZScrRGxPaRrYQUM7MaSWhtG_Sr1iYg>53206</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Inliner asserts with cleanuppad
        </td>
    </tr>

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

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

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

<pre>
    ```
; RUN: opt -S -inline < %s
define void @foo() personality i32 (...)* undef {
entry:
  br i1 false, label %join, label %split

split:                                            ; preds = %entry
  br label %join

join:                                             ; preds = %split, %entry
  %phi = phi i64 [ 1, %split ], [ 0, %entry ]
  %cmp = icmp ugt i64 1, %phi
  br i1 %cmp, label %invoke1, label %exit

invoke1:                                          ; preds = %join
  invoke void undef()
          to label %exit unwind label %cleanup1

cleanup1:                                         ; preds = %invoke1
  %pad1 = cleanuppad within none []
  br label %cleanup1.cont

cleanup1.cont:                                    ; preds = %invoke2, %cleanup1
  br i1 undef, label %cleanupret, label %invoke2

invoke2:                                          ; preds = %cleanup1.cont
  invoke void undef()
          to label %cleanup1.cont unwind label %cleanup2

cleanup2:                                         ; preds = %invoke2
  %pad2 = cleanuppad within none []
  br label %cleanupret

cleanupret:                                       ; preds = %cleanup2, %cleanup1.cont
  cleanupret from %pad1 unwind to caller

exit:                                             ; preds = %invoke1, %join
  ret void
}

define void @test() personality i32 (...)* undef {
  invoke void @foo()
          to label %exit unwind label %cleanup

exit:                                             ; preds = %0
  ret void

cleanup:                                          ; preds = %0
  %pad = cleanuppad within none []
  cleanupret from %pad unwind to caller
}
```

Asserts:

```
opt: /home/npopov/repos/llvm-project/llvm/include/llvm/Support/Casting.h:255: std::enable_if_t<(! llvm::is_simple_type<Y>::value), typename llvm::cast_retty<X, const Y>::ret_type> llvm::cast(const Y&) [with X = llvm::CleanupPadInst; Y = llvm::Use; std::enable_if_t<(! llvm::is_simple_type<Y>::value), typename llvm::cast_retty<X, const Y>::ret_type> = llvm::CleanupPadInst*; typename llvm::cast_retty<X, const Y>::ret_type = llvm::CleanupPadInst*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0.      Program arguments: build/bin/opt -S -inline -debug-only=inline test064.ll
 #0 0x000000000316a451 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x0000000003167c2e SignalHandler(int) Signals.cpp:0:0
 #2 0x00007ffabebb8750 __restore_rt (/lib64/libc.so.6+0x42750)
 #3 0x00007ffabec0584c __pthread_kill_implementation (/lib64/libc.so.6+0x8f84c)
 #4 0x00007ffabebb86a6 gsignal (/lib64/libc.so.6+0x426a6)
 #5 0x00007ffabeba27d3 abort (/lib64/libc.so.6+0x2c7d3)
 #6 0x00007ffabeba26fb _nl_load_domain.cold (/lib64/libc.so.6+0x2c6fb)
 #7 0x00007ffabebb1396 (/lib64/libc.so.6+0x3b396)
 #8 0x0000000003211cdf HandleInlinedEHPad(llvm::InvokeInst*, llvm::BasicBlock*, llvm::ClonedCodeInfo&) InlineFunction.cpp:0:0
 #9 0x0000000003217fd3 llvm::InlineFunction(llvm::CallBase&, llvm::InlineFunctionInfo&, llvm::AAResults*, bool, llvm::Function*) (build/bin/opt+0x3217fd3)
#10 0x0000000002976948 llvm::InlinerPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (build/bin/opt+0x2976948)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNV1FzmzgQ_jX4RRMPCAz2gx9skrSd6d1kLu1N--QRIGw1MmKQSJv79beSsEHYrpvmHs6TBCOtvv20-2m1yUTxsvRiv_vxbz1_5YVr9NfnP71whUSt0M0jumEVZxVFXpgiD8-ktStoqQefBSuQF_mlEB6ee3iBatpIURHO1AtiIYYl8-l0CjMeXqG2gnXIS9YWhFaqeQFX9g2hrEEsQCXhkno4RZxklGuf3wSrnAFZA35H2Py1A0D6FR-91bqhhYRvtxrV0um5uP4H3sz765yderOUcXriGd7rHTNm-sniCHmzNQo6W7MORm7NO0z4QxAz0QPl-9oAMf2l3SqDdkACdDfydoETaVY9iycaOGP0hxv8g81rInISjj7GCFlAKy4jGautw_Tho4TLCWy_s6roB3NOSdXWwZDscewVbE_IHnY8yBgpAjPb4cM7-s7UjlWoEvr0zNaDzAzFdSA0zUWlzjG1E79G9wJT3GXcDcgh7V2I0xNODVVnxIBPc4_flvszIfgtETg4l9SAz8T4VfwvxthRA36TGnTkT2nq0V8meinKYy04Qe8dobIR-6Oyu1hCsHPCOW2G5Ew5eGs1HNSZUTHQXLQIOpfJ7dD36BpSVKrfuIdcsQ2vs98tOf95fPwL4RjK422H0Hf1--vyPa-ZS5I55m_Ud5i_Kylpo-SxJThrCn2J3qmH73diD43CfVWLWjzDl4bWQsKT8-f9Td2IbzRX3Ss8WJXztqD9wCPsTDTaIiVSsWo73QEwns00vFSFphFCk0IyTjes3IDb1MgiQAbBTDO5kWxfg4V6qSlYfPXCOzv1THhLjeJSpCcrsqeDlTk43UDUFLRA6RdtBCdRKtQDwGSHejdaBzQOxjjWcoeU6AyhLyZvvXFqk_NAig9grpP-dWTxGZotGP6_7fen28CmT32Tj6sOQOAgA6tIJioE-mOSGFjAwvO_CTeB1_GP4YFNXsL004ud15Ok2bZ76MuQKKHE5GJfE8UguoY6xBVWeTiBjpdxWkytvB8-3q0e75Bssz3UF4Kydou0sBulz9JOqdqcD3wPPzAnp3oTU9Fs4R0ROHGdzpHaUZQ3RO5QRvIn1ZCcdi4eFQygot3Xx5Pmw9TioRHbhuyPtLUj8M94oX3pHvx-9E_BTUGBw42oOOz6thvUVdiPIyDWlQgPhz7yf_iHTxjEJJoF6KFhlTJkPml2j2wLBfs97EGXCzw3ZQ4yAYG0U3Ka15qyb36P2MEIO8kxRWMw8HQVCHdASVlCPc-yeTLz0Qb0JJVo6AYyYPJ6z1kWR_aZT6WYggLW_o8Ig3l_ZwBe6ODl_mwe5YBXq11DSbF5YpxvzFnSwSZWZT9xMC9hveMgGhOOSYy20uzxClewdKBmLhTBSREikokrm8Y52DlA8RgoLjO0qfiGC9hzIfaEVdBz8OIKLixzcJPRXoNwEf8UIszAwoGYO0LBQZAXJbIS-WCkW9y9hwoAoH1h-GA6g0NR0N3wcWpNJMvXXORPJ1Mph3uySEUBK0vR1Wjr476tcp3q8xJcjCgmJaRhyGYI4RBN4ZYFRtQ4Sy-uOfIZmqxWf1HZcjjwdiOZENy16F2ubNWbn9QFG3RL-Rh2fTyds48XSbyI5if8mgciZVeiW3dnH8k_L3p37xpS7-zQY5qebgJE_yKZ_INUZAtnPkyvQwzXuzaArst4fMXGzfo7AP1cF0RRG8_D5XwpWl0w-mgdOp1JsQyLRbggE8UUp8suRojYBsl0Y4PubNI2fOleDVuwaDM4aPu-4Rn1RUzKlup-aRZiP57slgWmSRkmge9HOC8iHIWLck4wCTNSJDTHE9PmyqXu_zCu6HdkIPQtNrudsCX2MfaDIAoiqKXRdF5mOCC5XwY4SRYgisincPr58caaNEtDSV9jMMmZVP11NoG9QiGjdGnbzQlp1U40y4o9sXxiHC8N8X8BQ3VOCg">