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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]OneShotBufferizePass crashes: Assertion `memref::CastOp::areCastCompatible(resultBuffer->getType(), *resultMemRefType) && "CallOp::bufferize: cast incompatible"' failed.
        </td>
    </tr>

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

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

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

<pre>
    Test commit: https://github.com/llvm/llvm-project/commit/da0730b908a43e490430717beda8486598667ab8

Steps to reproduce:
```
mlir-opt test.mlir -one-shot-bufferize=allow-unknown-ops
```
Test case:
```
func.func @main(%arg0: tensor<*xi32>) {
  %0 = tensor.cast %arg0 : tensor<*xi32> to tensor<*xi32>
  return 
}
```
Crash trace:
```
mlir-opt: /home/ty/llvm-project/mlir/lib/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.cpp:101: mlir::LogicalResult mlir::tensor::{anonymous}::CastOpInterface::bufferize(mlir::Operation*, mlir::RewriterBase&, const mlir::bufferization::BufferizationOptions&) const: Assertion `memref::CastOp::areCastCompatible(resultBuffer->getType(), *resultMemRefType) && "CallOp::bufferize: cast incompatible"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/ty/llvm-project/build/bin/mlir-opt test.mlir -one-shot-bufferize=allow-unknown-ops
 #0 0x000055fd675f9f2a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0xd63f2a)
 #1 0x000055fd675f709c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f2d809a7980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007f2d7f658e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007f2d7f65a7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007f2d7f64a3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007f2d7f64a472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000055fd68972646 mlir::bufferization::detail::BufferizableOpInterfaceInterfaceTraits::FallbackModel<mlir::tensor::(anonymous namespace)::CastOpInterface>::bufferize(mlir::bufferization::detail::BufferizableOpInterfaceInterfaceTraits::Concept const*, mlir::Operation*, mlir::RewriterBase&, mlir::bufferization::BufferizationOptions const&) BufferizableOpInterfaceImpl.cpp:0:0
 #8 0x000055fd6796a862 mlir::bufferization::bufferizeOp(mlir::Operation*, mlir::bufferization::BufferizationOptions const&, bool, mlir::bufferization::OpFilter const*, mlir::bufferization::BufferizationStatistics*) (/home/ty/llvm-project/build/bin/mlir-opt+0x10d4862)
 #9 0x000055fd679693a4 (anonymous namespace)::OneShotBufferizePass::runOnOperation() Bufferize.cpp:0:0
#10 0x000055fd694a43ce mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0e3ce)
#11 0x000055fd694a5223 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.510) Pass.cpp:0:0
#12 0x000055fd694a58ad mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0f8ad)
#13 0x000055fd694977b0 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#14 0x000055fd69497f55 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#15 0x000055fd69498111 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#16 0x000055fd69578290 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x2ce2290)
#17 0x000055fd694936f9 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x2bfd6f9)
#18 0x000055fd6949843a mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0243a)
#19 0x000055fd675bc9cd main (/home/ty/llvm-project/build/bin/mlir-opt+0xd269cd)
#20 0x00007f2d7f63bc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#21 0x000055fd675cf66a _start (/home/ty/llvm-project/build/bin/mlir-opt+0xd3966a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWUlv4zj2_zTMhbBBk1oPOShOjH_9UUGCJJhDX4wnibI5RZEakuok8-kHpOREcmXtFHq6B0hsictbfm8lDdaKneL8FMVnKD4_gd7ttTk94yB_493-0ZyUun48vePW4Uq3rXCIFXjvXGcRKxDdILrZCbfvy2WlW0Q3Uv5--Fp0Rv-TVw7RzbiVbmogKSNlTjKIGI9yEjGSrtKS15BFWRLnWZKkUGaInCNSDJ-3jncWO40N74yu-4p71sOChIx_4bWVwix057Dj1i39G15oxRd2r92i7JuGG_Fvjtg5SKnvF736ofS9WujOvkhu0Brsq_yaXlVL_4FRRFoQCtEM0RjMjniYHFdWG8TWiBYPglHELhDNMUrPhu0YIxoTjNj5uHRZgXV4pIBfIeGReInySNJw1xuFR3nT8xcFXxuwe-wMvI-llwLRzV63HNGNe_zZuH6lHxUloptzAXIYvhtkpJs7A8o22rQW0c3ZaAUoJb_qvinHTQMV_9Z2cll1HWLFiqw8z0CVFYgV3_VOVCBvuO2lm4wfQPDPKD0DpdVjq3vrlQ6Da7BuwmMYfHYDmj3Tuuq4ASe0QrRAdD3hcsPvjXDcnHk_oImfrLSyU0EOJAcCYehsOnTV-U8bdufDbq9hYS03fgajhLS8NbyZyj08g-H-da3bDpwopRfbBCQGFgvELnbc3T12PDhf7gVEtBjWXPL2hjfDZI6DAAlGlK5BygOHSVwUODigUNWEHUU0xQ0Iyevl4BrX3y-K2wts-7IVDgMu-52PTW2c981PJwdhbc-9b2BQtWcu-5pjt-e4Cm5aQvUjuOrykA-g-oHrvu2efJcsEcmvjd4ZaDGYXd9y5ez7rlv2Qtb-24fu5qvpAyPKCCYPhBASx02dpHGTNxRw0DuAbR_t8HBthHJBk7sQhTR7XmTgfqutMxza0eOEcoMBsz-iD6Jn5KFOWEPBO8iTrKsjWVOSV_hW7BTI_wNVS24QzUbWw7AdY5SE_ydCdCSUNrTOSA5pnhG83RpunTZ8a9wo-ZAiHrJkm0QLKVT_sNipfpjo3N5wqJdWL0kQeEXzjMzkZRM2aZPEGc9SbEBYjie676Qoq8X6H_9__1v59EqXNEV0Y4MWiG6WS__2aGveec_rlXgYBn4P0qjevwbSywqxIl7NFY6OJIG0WWEoddD0Y5K4ekAj7ApMsiMm8ZxJBKwBvN1CSBtbH5HbEj6u-7Dv6WFgmc9ZJscso5R-wHaVt1oSrMZIlNKZ1dKpl2V5SpMoeTt51tyBkEeJ9KheHB7uDAg3xtQGpPTJ4lLXXCK2fqVU0OypVGAFLbddCMD8laJx8Vbd-IXSr7WqeOfG-nBchj5VoD5dmg5MQ4F6v0QfhX82yyN5AllC35bhCcyr7oNl-POKrHGptXyXylW3EdJx8wru7_G9deCEdaKyYevXcvSK1FGWzMMnPwI3ZxDhd3z4SvHbvXYHQfk12NHJTK-u1ATlbGpw_rN5fZWYlbQ8gohVfILQ1N-vujt91Xl2RQ2dO4Sc6dXMzEGej3t4oUA-WmEvQcHOF6Vn0_YqnF_qX1EhaUU4G1B80n11pHtMKfu07tei41Ko447TL31SKfnlYEw3eVbflHUmNEa-Ky_eWjBx9oPs12C4ct9UoyeBEvBehvfO6G4Zr3zBxp7Yy65Ej-HMoD6S4qDXi44zh-XL5m4yqGfmZnP58jQtCe648aeXohq7-Dc7NevqsdPbg-H1tnP-mPa841b3puKXO-NPctNk9azk5fdvN2utHH_4OR1dSmGuOncJQq21asRulrknsy_jHx3r18Qx7oyuuLVDFvioer0S_-r5T-pd8labxwOpyfqaN9BLt6255I6_vseX24uP6zxdNx49b_hOWGcex_lnPnehwbwOwVJ8CK74CK5stVq9ejB9ZtT0KvjKNpzo1q9tQDT78-B83aj5U4tTjf3TtlEzsSc4_QXd42WzfzBkDi1hKqEta0C-U_7rWIVmUqvdnwvsGyK9HzDJLGDiNKM5mZjCdlK4QtXXRxnnv6Hd3zBI31zx3AYM318tjpzSnMyKY3qUDVnS5C_H2f9alvgalGVTJ00-gzI7LiwRg1ehHLu5ag9D31bMHeHWGaF2N7x5X-EvN0w0YjBTZH46icsqr2rcglBfu6uiSV7NOjNK5jcTrKyyFG-3UpTV1jowbjty_dBdSGX7wyXQ8BgmA51wL8KiaJbY6NFVWdUkCeCB8dc0ZXmSTCA93MGf1KeszlkOJ_x0lWQ0ygjNo5P9KZA8zpuGp2UdJwmQhFVJVq-ahvCaRLw5EaeUUEYimhDGslW0ZLSGtKaEZQziKF-hiPAWhFx6KZfa7E7CBexpQlmSn0goubTh5yBKFb_HYRJRiuLzE3MaNCv7nUURkcI6-0zFCSfD70i-f0Xx-UuH0OFGl9u_6fX3SW_k6R-_3w4I_ycAAP__rXyH-Q">