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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]Crashed on `linalg-fold-unit-extent-dims` due to assertion `N+M <= size() && "Invalid specifier"'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </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/3245bcdd17dcf17388d13762ee175a47795b1692
steps to reproduce:
```
mlir-opt test.mlir -linalg-fold-unit-extent-dims
```
test case:

```
module {
 func.func @main(%arg0: memref<1x2x2x4xf32>) -> tensor<1x2x2x4xf32>{
 %0 = llvm.mlir.constant(0 : index) : i64
    %1 = bufferization.to_tensor %arg0 : memref<1x2x2x4xf32>
    %2 = builtin.unrealized_conversion_cast %0 : i64 to index
    %extracted_slice = tensor.extract_slice %1[0, 0, 0, 0] [1, 1, 2, 4] [1, 1, 1, 1] : tensor<1x2x2x4xf32> to tensor<1x2x4xf32>
 %inserted_slice = tensor.insert_slice %extracted_slice into %1[%2, 1, %2, 0] [1, 1, 2, 4] [1, 1, 1, 1] : tensor<1x2x4xf32> into tensor<1x2x2x4xf32>
 return %inserted_slice : tensor<1x2x2x4xf32>
  }
}
```
crash trace:
```
mlir-opt: /home/ty/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:194: llvm::ArrayRef<T> llvm::ArrayRef<T>::slice(size_t, size_t) const [with T = long int; size_t = long unsigned int]: Assertion `N+M <= size() && "Invalid specifier"' 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 -linalg-fold-unit-extent-dims
 #0 0x0000556e8fc8b2fa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2282fa)
 #1 0x0000556e8fc8858c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007fac38451980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007fac37102e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007fac371047f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007fac370f43fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007fac370f4472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x0000556e90b8f775 mlir::tensor::CollapseShapeOp::inferCollapsedType(mlir::RankedTensorType, llvm::ArrayRef<mlir::AffineMap>) (/home/ty/llvm-project/build/bin/mlir-opt+0x112c775)
 #8 0x0000556e90ba93f2 mlir::tensor::CollapseShapeOp::build(mlir::OpBuilder&, mlir::OperationState&, mlir::Value, llvm::ArrayRef<llvm::SmallVector<long, 2u>>, llvm::ArrayRef<mlir::NamedAttribute>) (/home/ty/llvm-project/build/bin/mlir-opt+0x11463f2)
 #9 0x0000556e902b0736 mlir::tensor::CollapseShapeOp mlir::OpBuilder::create<mlir::tensor::CollapseShapeOp, mlir::detail::TypedValue<mlir::TensorType>, llvm::SmallVector<llvm::SmallVector<long, 2u>, 1u>&>(mlir::Location, mlir::detail::TypedValue<mlir::TensorType>&&, llvm::SmallVector<llvm::SmallVector<long, 2u>, 1u>&) (/home/ty/llvm-project/build/bin/mlir-opt+0x84d736)
#10 0x0000556e902b14f5 (anonymous namespace)::RankReducedInsertSliceOp<mlir::tensor::InsertSliceOp>::matchAndRewrite(mlir::tensor::InsertSliceOp, mlir::PatternRewriter&) const DropUnitDims.cpp:0:0
#11 0x0000556e901a72c7 mlir::detail::OpOrInterfaceRewritePatternBase<mlir::tensor::InsertSliceOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/home/ty/llvm-project/build/bin/mlir-opt+0x7442c7)
#12 0x0000556e91939ec9 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) (/home/ty/llvm-project/build/bin/mlir-opt+0x1ed6ec9)
#13 0x0000556e9161422d (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#14 0x0000556e9161740a mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) (/home/ty/llvm-project/build/bin/mlir-opt+0x1bb440a)
#15 0x0000556e902a8997 (anonymous namespace)::LinalgFoldUnitExtentDimsPass::runOnOperation() DropUnitDims.cpp:0:0
#16 0x0000556e9158408e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b2108e)
#17 0x0000556e91584ee3 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
#18 0x0000556e9158556d mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b2256d)
#19 0x0000556e915794e3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x0000556e91579bb1 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 0x0000556e91579da1 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 0x0000556e916466f0 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+0x1be36f0)
#23 0x0000556e91574ec3 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+0x1b11ec3)
#24 0x0000556e915776ee mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x1b146ee)
#25 0x0000556e8fc572f0 main (/home/ty/llvm-project/build/bin/mlir-opt+0x1f42f0)
#26 0x00007fac370e5c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#27 0x0000556e8fc6a14a _start (/home/ty/llvm-project/build/bin/mlir-opt+0x20714a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWltz27oR_jXwC8YaErw_-IG-qE0nPvbY7unMedGAxFJCQwEsACZSfn0HICWTtBTrRJ427UxCkbjs7vftBQBpqjVfCoArFF2j6PaCtmYl1dU10PoPaFZbdVFItr16AW2wFLiU6zU3KMjxyphGoyBHZI7IfMnNqi1mpVwjMq_rr7ufy0bJf0JpEJn3U8k8IGFUlIz5CSsrPwnSlPlBEhMAP4lomCRZVPhxRpB3i7xcG2g0NhIraJRkbQlWqetCsdf_c4_rmqtL2RhsQJuZfcKXNRe0Xl5WsmaXreDmEjYGhLlkfK0PCrFzcUn1QMtBXZK1NWCUXHfPuGpFObMXjEJvTblAJEUkomrpWbbWsFZQoeDG35AN2YSbKiAouEMkw5couMMGhJbqbf9ePiKRh1Fwiy2rDtyslEIbKgwiqe3KMRcMNlake4jDfirGdrbvZhdtVYHi36nhUsyMXHSKcW8q_pGtQ2mkl8Zrw8WsFQpozb8DW5RSfAWluRSLkmqzs9vZY73Y2TgUBRujaGmALXTNS3CCO6tmfdeug0Q-iq49RG7w8BLdYhRd-_bBXYi9hG-a-4ttDvJjhFsTR10T9IhEXGhQB83tel6tnSLjwsgdCsvh3qrdw0dg2SNx2o7FVYdGgWmVOAjqKEM736Hkts-M_c04RUpF9QpbBt7NWKsOkflKrgGRudm-LR59SeGirFsGrw357Yu9KkW3T1DNVijI_Sy08tyAIEdBvutFwc2LJeZoT9foGEAk1fw7LIwleneXYZdy1hXfuFnhly4hpVhaslFw3Y98bW6Fq67M9Ue31q5cW6a5FBjF3m-IXN9jFNzYGXayqxoZRiRGJMaIkE_iK605w7qBklccFCIEkQRXlNfAZh2Pj5_v8uc7rNtizQ2muGiXtlxKZWw8_-lKzbVuQSMyx1RY0x3n2KwAdz4taPnF-bVX_2xo-QWzdt3sHe3NkJc9KrlUdI2pWrZrEEa_72dbUZj9tQV0_nMVHSMSeNjbeJ7nRVEMaVWmBanowPF6q7ubR8WFcfa_uEAl6esgRb8tpDYK6Nr548Z50Xkn_RkUiFx7G0JSUlFEsldb_YmtaZSW-JkvBa3_SgWrrc_TXnXXrGdlY7n23P-9INILSipaBmkY-Vnq4cVCgTZSwUKZ3vKaF4jMN2m8iEPLZ7u5XIq262jMSgFlMy1nnjPYJ1nqjewNhmoS3yOQJlhRrm3R22Nf1rwoL29-_9u3P4r9I5mRBJG5digQmc9m9mmrGTQ23lrBN13DV2eNaO2jEz0rUZBH_hhwOLEkTCof00I6pKdZYljHhpvllKQTJdFIiVeFQUXxYkFdHi9sHi4Kejr2bt7-plOZjVXGU5VhQk7wXWm9FjuvBV6YkJHXkkGUZV6RVkkSYRuaXbDvqr29v5F1TRsNzyvawEPTNXJRgdr1sJdtY5Pldf4TFV-AvTgpXefN4UL7OiWvKi7gnjb9RuictPJ9UiZJNEKcjhHTLKjIn0HcqxuAfGiubZtNSFcPhj2g3J7q2VADb7p_p3V7nJLXxuc1revfoTRu4bVLiNsEtG5xujuB09_oGlhujOJFa-BDiA3joBqHUjYilhReEsSnEYsPcekeSwWWuCGWHzloxC4DQ3nd3dvYYx3dQ1mDwJzyOOH8JF_Y3Vd3E7vrIEY-y9IFwrkmxn0QfZyhZ0ZCGrIkiPeBYBcubxIIflhFVgcVUmzXstVY0DXoxq2s2WuheAJ7jmOf3Kbz2e63bM4dcf1kVL9LW1NTrnLBnuCb4mZci47PHvnkkRoDSvQSVE9Rt8W7VbL5u-Dmlq8PLLYWuz_C7tOElMkRhz80D-qTMKAqWkKvrld-7U6aH4Z8X4YQyU8He05UJGFIymQUFWTIjJ8FGZTZW0vypql5Sc0O7MfBGuaMPZHbiYvuRFtIWeOR6F5Ax0THypsKMRHyVXJ2tpBhwVjyktZPoNvanCb3zJIOLIYyG_ksGPks9kNC2HuZ_BcFwLZjD9wq_nVX0hslS9D6H1J9qbm13x1tjs86nGfhxLIk9OggAGjT1DtpOhdsLmvmVPB6O96gwNIF0GRlniv5HcQ4KZ_BDCgfju6M70ffSFHx5dneKIow9OjIG9G4rtI0y5L3vPHZnYssfFu37tyhyFavR6r7s45qxYMYpJJzx_uFLh45IEpDL4Wjhe5FPjRWY85os09t1YpJWGv9JpOP53guaL3VXN9TQZc2x2-wzWP7Ozpfn-0I4nspjByRTLEDBH8a-yNvoOZiWtLs0D2kY9vJnydjXCW1_iS0Ue4YLtWBMjoc0GnuOnrbH6kCYT6JSu4yI-_57l5DNko2s8i3B0VshR0OpXRCZxTFbGLFDtfBwBnTcra7SRSzkbuzsX1JFkKAG1CVVOvcVW_9zhsCbVj_hmFFFbBFYyZ7NdmqEu6XCgV3R2rM_edPTzdSGNiYN366r7l6aMw95aKrPsOlAQ96D_JPvCm-ovBxX6av3ZvhU-G1gv-rhTfw7mEt1XYnajCeQUXb2iwY1OC2-Ufm7M85p2EejrvltIbS2Dqvjdq-2Qq8uBcbjy5Z8pPo8qd0MerjYwv3z6z0_zk6jzs1228sS1rXBS2_LCoxMnvA0y8YHofdfmLKdEMQSWq6LhhFJPmVvELS3WHulzDp_YQZ7_zjMI4rb-AK3dTc5II9TirOfwPd_2CS_nDE6zag-z13cYQgrrzh4kiCSTUMoQwO59n_W5U4k0rfhzIYURlOqExigKNU9ru5ckW7fVs-eStkFBfLJ6hOAfwxseGHMYz2ySQaf8KIEmITn3JxnqYqJJMgnLwZh6hME7xY1LwoF9pQZRa91pPexZe63X2E6G5dp5Pj3ssHYTgucMkYZ0z9kOJO8XlfhbzEDwdnwN1n0gt2FbAsyOgFXPlxkqUB8ePkYnWVemEQVUkZJEmU-UEWBn4RsqhiNIIi8dILfkU8EngBiX3ikTCehRWFOC0q6mXEhzhBoQdryuuZ-4MCqZYX7rPfVewnXnZR0wJqvfujEHXloBTtUqPQs4d5_TrNcFO7Px-xG1cU3d4oqlfAcPeF84ef62IPsxawkZh-yFfRi1bVVz__udNB_3cAAAD__-KiuAM">