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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] AffineDataCopyGeneration crashed with error message 'decltype(auto) llvm::cast(const From&) [with To = mlir::VectorType'
        </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)

steps to reproduce:
```
mlir-opt test.mlir -affine-data-copy-generate 
```
test case:
```
module {
 func.func @test_vectorize_trailing_index(%arg0: memref<1x2x4x8xindex>) {
 affine.for %arg1 = 0 to 1 {
      affine.for %arg2 = 0 to 2 {
 affine.for %arg3 = 0 to 4 {
          affine.for %arg4 = 0 to 8 {
 affine.store %arg4, %arg0[%arg1, %arg2, %arg3, %arg4] : memref<1x2x4x8xindex>
          }
        }
      }
    }
 return
  }
}
```
crash trace:
```
mlir-opt: /home/verify/llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/llvm/include/llvm/Support/Casting.h:567: decltype(auto) llvm::cast(const From&) [with To = mlir::VectorType; From = mlir::Type]: 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-data-copy-generate
 #0 0x000055cfaf459aaa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x221aaa)
 #1 0x000055cfaf456fac SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f717c093980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007f717b18be87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007f717b18d7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007f717b17d3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007f717b17d472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000055cfb0ca295e getMemRefEltSizeInBytes(mlir::MemRefType) Utils.cpp:0:0
 #8 0x000055cfb0ca8afa mlir::MemRefRegion::getRegionSize() (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1a70afa)
 #9 0x000055cfb0caf253 getMemoryFootprintBytes(mlir::Block&, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void>, false, false>, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void>, false, false>, int) (.isra.384) Utils.cpp:0:0
#10 0x000055cfb0caf6d4 mlir::getMemoryFootprintBytes(mlir::AffineForOp, int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1a776d4)
#11 0x000055cfaf4f602d (anonymous namespace)::AffineDataCopyGeneration::runOnBlock(mlir::Block*, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>&) AffineDataCopyGeneration.cpp:0:0
#12 0x000055cfaf4f69fa (anonymous namespace)::AffineDataCopyGeneration::runOnOperation() AffineDataCopyGeneration.cpp:0:0
#13 0x000055cfb0d03e59 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acbe59)
#14 0x000055cfb0d0417a 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)
#15 0x000055cfb0d044f8 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#16 0x000055cfb0d03635 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acb635)
#17 0x000055cfb0d03dca mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acbdca)
#18 0x000055cfb0d04cb3 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
#19 0x000055cfb0d0539d mlir::PassManager::run(mlir::Operation*) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acd39d)
#20 0x000055cfb0cf83a3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#21 0x000055cfb0cf8ad9 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
#22 0x000055cfb0cf8e01 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
#23 0x000055cfb0dbd9b0 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)
#24 0x000055cfb0cf5ae3 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)
#25 0x000055cfb0cf91e8 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1ac11e8)
#26 0x000055cfaf425ec0 main (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1edec0)
#27 0x00007f717b16ec87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#28 0x000055cfaf438b5a _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/eJzsWt1z2yoW_2vICxOPBPp8yINj17vdaSaZJtuH--JB6EhmK4MWUGvfv34HZMeS8nGTO3W3d2c7TSTgcD5_54AgzBhRS4ArFF-jeHnBOrtR-uoaWPMbtJu9vihUub9CwRIF8wcwFiuJudpuhUV0jjfWtgbROSIrRFa1sJuumHG1RWTVNN-Oj8tWq38Bt4isDlPJihAecMiTPCRVHFdRVrAopnEWBAXjPOBRVkGeUXKQvAFs2BYw18xssOK80xpKLCRG8bWTESYoXiKSvVsjqwEQWWlogBn3FiazHSJ5L7j_bSy0BluFNbRalR0HJ6EnSILDf9_cNkJfqtZiC8bOXAtfsqoSEi5LZtklV-3-sgYJmlnAz7JwMzF3urwkQ5VdAxil130bV53kM_cLoyhw09ffgFulxe-wtpqJRsh6LWQJO0QyRGKm68BFbwtbDRWii3BHdtEu2_U09AMi-YB9r_-sUhr3k0OM6BIHziHhgM7_e0JMTsTkNab0RBdNmT7LODpNyJ4yNlZpOFIissBHu-PrgxGnTnJ6pafXCMVL_LqbJiqidDnumnSMmqeGBttpeRx57D-9jMPfp4DV7I9R6LRHZLVRWwfsb6BFtZ9kwOWbE_ExgYTkTVfCqeO-a1ulXTItmLFC1rMNovM4SZ38Enhj9y0gkrHOKgctP43OEZ1zZiwiGVfSWLzSLk0TD774-ruwG_ygfJCdPf2ELx7YD44fvfYzJgR-KF46yXNjQFuhJEZJIAxDdPGgPLqzL6zxYpy0BCNCvCJ08bDvx90g03W3BWmxqrCQXG1bZkXRAO6tCREhiKS4YqKBctY7_u7Th_n9B2y6YissZrjoalczlLYOpu-uTcKYDgwiK8ykK3be79hujnWwYPyrB8JB_L1l_Csuu237iIxg1mPvTqtas-2jVU4P_GeBUHSiKd1TSERW76p5B5gjQgMc7IIgCOKYV6yK4pwxNoCG2Zv-5U4Lab1lDx7zJDsRafZ9rYzVwHrkLLCQto9s9mONQ-Q62BESMsYeFwdnRTixIqkYx_eilqz5O5NlAxqR7KBU321mvHXxCfzPIyNyYJRWaZjyIKd5FuD1WoOvZGttscflqhEFIqtdlqyT6LIRsttd1rLrB1q70cDKmVGzwCsckjwLRvrSoZgizArIUqyZMK5YPtpeN6Lgl4sv__j-W_HYJDOSIrIy3gpEVrOZa-1NCa3DaCfFru_45rWRnWt61jPu6kE4NjiaaFKmVYhZobylb9PElr03_CwvJJsIicdC0pJWDK_XzJeGtcvddcHebns_7_GlF5mPRSZTkVFK3hA77qKW-KjRIErJKGrpAGVFwBnJY8A12BvYfobqQ2Pvxe_wUV7vrSsX2akc9gS-KJIc_9OKl-CXTSRkrGJ4yucz1ELJvqcG2zed6EPJPE_WhSwNWDVOu3yibkVienCI0vuVUrZ1ZeOpQ64bxb8easWpjohGGLsW1pUopRFdTIdKsEw0fY9UJaxV61YWg-jixPu2dfOdh8gCW92Be1asMf7lmxKlX10Gff1L3_lraXOqozNhNJvRLHoFQa4QBtOQJGU0QNBbgjP3q8ZK6dv27LU8ZGmalNFpp09oOCnmVRKQ0olnUsn9VnUGS7YF0_plKB_qvGSWLVS7_1u_zD1mie7krTxg7ikK5-O4L0EauAf7UhifI79h7UdZqVenHGPtIuu3Vy_p_HxgydQrecV-gFcGWmbvV4qO0FYGFOJ8gLZhhty2D-q2vWPGzEvW-ow6KDGKiSM4OOxlVw6wKlmzN8LcMMlqt8ovcKFU456d9B_V5bkBzAuI8xGAo4lXojBl7_bKnWihERJG3ulJH41NfribhpOcqI_SWO23qko_4TomGCDrqPsd0yCtywzsPy48hzNGgocpG0UinkYiqrJ3R2KQJHOzl_zjtm0QyXoHHjINkbRh26JkyO1QsnOIuG3vbnyR8dWj71PtYXXyyftTBPeRxI7Z8zUhmdaEhMY_2OdnzOWExiMEpVNrSv7-XP7LV7iSj_Mqm-YVL-j_K9yows18u9WqnUW5w9QrKZNP3BnTvJxocbTrWUiN3XJGIJQ0L4dAIJPtZpVRRnELulJ6O-f9dvj1owJjy8NRw4ZpKNetHe-171WnOdzUGtEPRx9PUHHz6ePnhZIWdvZJBG8aoW9be8OEXChZiXrAI8eD0WcjQ8KpfazMcasVB2Ouu6ryBwtvMq-T4t8dPDGv340fWQ3oS6hY17ivjAYsvDznsKN8q81DuqVgDXD_AWms3j_5Hnvw5xh3Po3mb3IXmboLgnAg8JOqBWfNZzBdYweCqk56rKz7E96XJiCS_Tx3vhzU3BP1B6dNUzD-dV3JkdoDP_2C8Hg-7G9MmWe3O79MVEjWKFn_XMe-otIfJ8zkA6oo8yIYhMK0jbBzWd5NKs5_w7q_YJK-SnHaIJx5V1lkcV4Eo2UzmtTJmAF9PgP_1-rH2fYmRcmAjpwcT5ych5C96OTD3pBvWL8LnJzy3FstZP0Zqre44uxfKWEI2cjUZHw4RGLgAd4yIc-lA5TAx5BOxwfuCfAsxet1Iwq-NpZpuz7o86Yjfm66491G_-oHPR9_3E-jaFxIs7EHaFbEDPeCz3UNFQRFfPosmhdKW_AHlVxp8Pd_MNgsH--GL8orWuY0ZxdwFSZpRrM8TtKLzVUZkCQJSVhEEWFRVcZxlRcpFCwMUl6S7EJckYDQgAZ5mIc5SWdRxoqU0jwOqqxIggBFAWyZaGbO2pnS9YW_urxKQhoGFw0roDH-T0wIkfAd-0FECIqXF_rKe6joaoOioBHGmhMXK2zj_zbFbbRRvHzxkLC_EIUS-2tj0FppvAVjWA0YkfRsl9Akveh0c_Xnb3a9h_4TAAD___Mo0z4">