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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]Crashed on `-affine-loop-invariant-code-motion` pass
        </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 on commit: https://github.com/llvm/llvm-project/commit/22c0ce96912f55f48ba4535800bacc0c48fe9832
The same crash occurred in [llvm16](https://github.com/llvm/llvm-project/tree/release/16.x)
teps to reproduce:
```
mlir-opt test.mlir -affine-loop-invariant-code-motion
```
test case:
```
func.func @test_prefetch(%arg0 : index, %arg1 : index) {
  %0 = memref.alloc() : memref<100x100xf32>
  affine.for %i0 = 0 to 10 {
    affine.for %i1 = 0 to 10 {
      %1 = affine.load %0[%i0 + 3, %i1 + 7] : memref<100x100xf32>
      affine.prefetch %0[%i0 + 3, %i1 + 11], write, locality<0>, data : memref<100x100xf32>
      affine.prefetch %0[%i0, %i1 + 1], read, locality<3>, instr : memref<100x100xf32>
    }
  }
 return
}
```
crash trace:
```
mlir-opt: /home/verify/llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/llvm/include/llvm/Support/Casting.h:573: decltype(auto) llvm::cast(From&) [with To = mlir::AffineWriteOpInterface; From = mlir::Operation]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt test.mlir -affine-loop-invariant-code-motion
 #0 0x0000560ab572aaaa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x221aaa)
 #1 0x0000560ab5727fac SignalHandler(int) Signals.cpp:0:0
 #2 0x00007efc8c2b1980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007efc8b3a9e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007efc8b3ab7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007efc8b39b3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007efc8b39b472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x0000560ab57d0e4f isOpLoopInvariant(mlir::Operation&, mlir::Value, mlir::ValueRange, llvm::SmallPtrSetImpl<mlir::Operation*>&, llvm::SmallPtrSetImpl<mlir::Operation*>&) AffineLoopInvariantCodeMotion.cpp:0:0
 #8 0x0000560ab57d14dd (anonymous namespace)::LoopInvariantCodeMotion::runOnAffineForOp(mlir::AffineForOp) (.isra.140) AffineLoopInvariantCodeMotion.cpp:0:0
 #9 0x0000560ab57d1c44 _ZN4llvm12function_refIFvPN4mlir9OperationEEE11callback_fnIZNS1_6detail4walkILNS1_9WalkOrderE1ENS1_15ForwardIteratorEZN12_GLOBAL__N_123LoopInvariantCodeMotion14runOnOperationEvEUlNS1_11AffineForOpEE_SD_vEENSt9enable_ifIXaantsrSt11disjunctionIJSt7is_sameIT2_S3_ESH_ISI_PNS1_6RegionEESH_ISI_PNS1_5BlockEEEE5valuesrSH_IT3_vE5valueESR_E4typeES3_OT1_EUlS3_E_EEvlS3_ AffineLoopInvariantCodeMotion.cpp:0:0
#10 0x0000560ab57ce869 void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.146) AffineLoopInvariantCodeMotion.cpp:0:0
#11 0x0000560ab57d1985 (anonymous namespace)::LoopInvariantCodeMotion::runOnOperation() AffineLoopInvariantCodeMotion.cpp:0:0
#12 0x0000560ab6fd4e59 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acbe59)
#13 0x0000560ab6fd517a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acc17a)
#14 0x0000560ab6fd54f8 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#15 0x0000560ab6fd4635 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acb635)
#16 0x0000560ab6fd4dca mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acbdca)
#17 0x0000560ab6fd5cb3 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.495) Pass.cpp:0:0
#18 0x0000560ab6fd639d mlir::PassManager::run(mlir::Operation*) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acd39d)
#19 0x0000560ab6fc93a3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x0000560ab6fc9ad9 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
#21 0x0000560ab6fc9e01 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
#22 0x0000560ab708e9b0 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) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1b859b0)
#23 0x0000560ab6fc6ae3 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1abdae3)
#24 0x0000560ab6fca1e8 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1ac11e8)
#25 0x0000560ab56f6ec0 main (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1edec0)
#26 0x00007efc8b38cc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x0000560ab5709b5a _start (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x200b5a)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltT47iX_zTiRUXKlu8PPITg7GQKGqrDzGz1i-tYlhNNK5ZXkoF8-y3JSbDd0E33NLMzW_8qQmxdzv13dCQFtOabhrELFF2i6OoMOrOV6uKSgfjE2u1enZWy2l_cM22wbDCVux03KJjjrTGtRsEckSUiyw03266cUblDZCnEw_HrvFXyT0YNIsvDVLIkhHqUZXHmkzqK6jAtIYyCKPW8Eij1aJjWLEsDgrwr5M3vtwxr2DFMFegtlpR2SrEK8waj6NLy8GMUXSGSfrdERjGGyFIxwUDbJz-ePSGS9YwNazU2EivWKll1lFnSrgfF3uHPve4EV-eyNdgwbWb2DZ9DXfOGnQsp23PePIDi0JhzKit2vpOGy-ZFSpYAplaWV1jVXUNn9h9GoWdHF61iNTN0i0iKSARq42HrHd5U7AmRBe4b_WFjhlFy2dPDtt_OuMI7tlOsnoEQkjpimZvTN6Ng4Xvek_3UAUFBfpze6zmrpbKUeE_Ks2bzvSGbL0b6r490QvX9h0lCQuUktUHasyGXODjoZ2mRS5yg6OotIg-EORrvm7R934XYAj8qbph9EJKC4GaPgoVniZMFrsDAzxBgwvrAWTGoJoyDA2PeaKPexhklVyfPnx4VM506RuSxdRJ5PfqMgm_jwAqCyHIrdxZTD0zxej8B3_mbc8AJu7yhoqvYc8O6a1upLI4XoA1vNrMtCuZRElj-FaPC7FuGSAqdkTaa3bRgjoI5BW0QSZfK5obYRXp0-cjNFt_LHguCq37o3PnpD-v123bVGKZqZ4FLbGdPBt-2TIEDd3RlhZhrzZR9xyj2uAYULO6l81n6OwjH17KPMSLEyRQs7vd9v-0Etel2rDFY1pg3VO5aMLwUDPeK-YgQRBJcAxesmvU-uLvO5-sc667ccYMBl93GJjCpjEXad2dIrnXHNCJLDI1Nuc4F2GyP2bgE-tnFxIH92gD9jKtu156CxJv1EX-n5EbB7qSVlQP_aEyUHReV_eYNIsu_kIAxIoGHvSfP87wo9qCMEgIAMIgWvdf9w53ijXEa3jsYkPR5kILHQmqjGPQhZUFpeg-nP1dJRC69J0J8ADgtVVYLf6JFUgPFa75pQPwCTSWYQiQ9CNU36xltrZ889zkRIgdCCatpSknpZ6mHi0IxbaRihTLYxedS8BKR5VMaF3F4LnjTPZ1vmq7vaM3W5quZljPPCeyTLPVG8gZDNmUAGUsTrIBrhge6bwQv6fni918fP5WnVzIjCSJL7bRAZDmb2be9rlhrY7Vr-FPf8OCkaTr76kjPqE0R_ljhcCJJmdQ-hlI6Td8mial6a7hZjkk6YRKNmWRlUAMuCnAporAYLkp4u-79vNNDzzIbs4ynLMOEvMF31Hotdl4LvDAhI68l4yirPBbWmOvb9lrKdnXEGSLpS1mxB8Zzz-8gOvZC00doNv0ie8LXegdC3Bm1Zma1awUKFi8ymLvsGf-1uRnus_5IpYWs2I1LHC-jJp0Yxg8rW7Kk0Mhmv5Odxg3smG5d4sh65q8wOGSUrrltekGWUt22I5uO2l2SmXGtYOaH3g_Kn03lp2GIi08fQldhE1tz2smFYvVq-XD3IbTCZCfz5Xnu-xSEsCtCUTerTx_WfhFXzAAX4SOIz6tr25L9AeLzraqYyv3cNvjRUqpHUNXKWFJS5Z8--KT4r-vby_l1UXwofBK8oogfOhs9y_CQ_yYcTX9gnzwv1lfFQ55_WJuMNVAKVvB69d8AjdFqbXy_4vrPg3qrX9cm4bqwG47VPSnWQZGvfylW61Vx5xT6yDZO22FjdCkk_ZzneR492PDVyvbeB8XDoSFffyzy0K7a-Toobu_9Iv9NWNJFnj_Yh-91mE33k1WLsjTO8IPk1QBNvfn7Z-uDUehP7N7XHa8gY4SnYSygYOF4fmVqdqhSn_tPMXCMXSobbVol25kf_ggArT38aQBnafTXAThQJf1BwchQsLiuQhZlr_jotr2Xt-0daD2voHVOOUgysq8dcPDK6_4aJIsGxF5zfQMNbKzRF7iUUtjvrnG7_-p9qxUfaMmi7LSQWKsEE6tEfgLfbZU73jLBGzaJPjv0pGz80800nGRZrez2y9W0Un1BdTwAnsPrKPsdKNaYVVNL7GDQY-b9PEH9BEaeCKeeCOv0uz0xQMpc7xvqFlqS9gY8oA2RRMCurADZEiZ9Dxa37d2NNWW_jvdtsj0kOIfgv4Vx70lsib2cE6JpToiD6Cfb_B2xHAfRKILiqTYV_X4s_-szXEXHuEqmuKJl8J8MN8pwg4U_zGxMfQUy6cSccZBVEymOer0YUpOi5P0CoQqyahQI2VhymgUQ4JapWqrd3FVS-htnCdpUh7OILShWFa1RKFgMdjiyU5TdbGwRd7TxJCpurlcfF7Ix7Ml84cEbwdVta26ANwvZ1HwzoJHhQe-LniHeVD-oMtwqSZnWl11du5OHN6nXNfx_OvaFejdsJ9X-SGowvmI1dMIUFRPMsNfnBPkXNejXdB6Ou-IgGDW27tdG7b_YXN67g447B6P5m8zlT83FPH_A8FpuOAXxkelOmNer7tcmIJL-feZ83amu6D8ctp42hSOxB3b6B4bHy25_I2ReLHf-MV4hqZDN5u817FdE-jZgRhuoxEtZVnoDV-hWcDNvqrtJxvm_0O5fCNKvjnguEN65qizTKCu94bJJJjtEGgMLXkbg_7f88W61SVkBC0ZGnmz-KPgsfdXIh9qQbqGvAifnQmujeLP5yOq3mOLddym-z9KRqqM9VxTXMaMe3gFv3ksGVjE6DunJiXxKaZrgohC8pIU2oExxkOdNdwBUd8fLj_7RdTo67j4gCMNxIp0c3ntZGQHuGb_XPZXnldHztmheSmWYOy2kUjF3UcgGxfLxPvmsugiqLMjgjF34cZIGaRrF8dn2IiEZxDWhQU29oCRRBVkaRCkhVVKXFQvO-AXxSOAFXuZnHgnjWZjUUQmJF2fgxZGfotBjO-BiZrWdSbU5c3ecF7EfeOmZgJIJ7X4LQ0jDHrHrRISg6OpMXTgLld1Go9ATXBv9TMVwI9yPaGyhjaKrhQK9ZRXuL3_fcB0Ze7gFrc86JS5-_J7WqfG_AQAA__8W0fee">