<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/121328>121328</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Mlir] --test-linalg-elementwise-fusion-patterns="collapse-dimensions-control=2,3" crashes in ElementwiseOpFusion.cpp:1168: bool mlir::linalg::isDimSequencePreserved
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Emilyaxe
</td>
</tr>
</table>
<pre>
git version: 6230f1ba945a1b
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt a.mlir --test-linalg-elementwise-fusion-patterns="collapse-dimensions-control=2,3"`
a.mlir:
```
#map = affine_map<(d0) -> (0, d0, 0)>
#map1 = affine_map<(d0) -> (d0)>
module {
llvm.func @malloc(i64) -> !llvm.ptr
func.func private @func1(%arg0: index, %arg1: memref<1x6x1xi32, strided<[?, ?, ?], offset: ?>>) -> () {
%true = index.bool.constant true
%0 = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
%1 = llvm.mlir.constant(1 : index) : i64
%73 = llvm.call @malloc(%1) : (i64) -> !llvm.ptr
%78 = llvm.inttoptr %1 : i64 to !llvm.ptr
%79 = llvm.insertvalue %73, %0[0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
%80 = llvm.insertvalue %78, %79[1] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
%81 = llvm.insertvalue %1, %80[2] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
%82 = llvm.insertvalue %1, %81[3, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
%83 = llvm.insertvalue %1, %82[4, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>
%84 = builtin.unrealized_conversion_cast %83 : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)> to memref<6xi32>
llvm.cond_br %true, ^bb8, ^bb8
^bb8: // pred: ^bb7
linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel"]} ins(%arg1 : memref<1x6x1xi32, strided<[?, ?, ?], offset: ?>>) outs(%84 : memref<6xi32>) {
^bb0(%in: i32, %out: i32):
%343 = llvm.mlir.constant(-65536 : i32) : i32
linalg.yield %343 : i32
}
return
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/Dialect/Linalg/Transforms/ElementwiseOpFusion.cpp:1168: bool mlir::linalg::isDimSequencePreserved(AffineMap, ReassociationIndicesRef): Assertion `indexingMap.isProjectedPermutation() && "expected indexing map to be projected permutation"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt tosa.mlir --test-linalg-elementwise-fusion-patterns=collapse-dimensions-control=2,3
#0 0x000055acbd1ca508 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11ef508)
#1 0x000055acbd1c801e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11ed01e)
#2 0x000055acbd1cae9d SignalHandler(int) Signals.cpp:0:0
#3 0x00007f10ab689420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f10aacc600b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f10aaca5859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f10aaca5729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f10aaca5729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f10aacb6fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x000055acbe049fe6 mlir::linalg::isDimSequencePreserved(mlir::AffineMap, llvm::ArrayRef<long>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x206efe6)
#10 0x000055acbe0528a8 bool __gnu_cxx::__ops::_Iter_negate<mlir::linalg::areDimSequencesPreserved(llvm::ArrayRef<mlir::AffineMap>, llvm::ArrayRef<llvm::SmallVector<long, 2u>>)::$_0>::operator()<mlir::AffineMap const*>(mlir::AffineMap const*) ElementwiseOpFusion.cpp:0:0
#11 0x000055acbe04a11b mlir::linalg::areDimSequencesPreserved(llvm::ArrayRef<mlir::AffineMap>, llvm::ArrayRef<llvm::SmallVector<long, 2u>>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x206f11b)
#12 0x000055acbe05d8d9 (anonymous namespace)::CollapseLinalgDimensions<mlir::linalg::GenericOp>::matchAndRewrite(mlir::linalg::GenericOp, mlir::PatternRewriter&) const ElementwiseOpFusion.cpp:0:0
#13 0x000055acc3266791 void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::$_0>(long) PatternApplicator.cpp:0:0
#14 0x000055acc326340b mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x728840b)
#15 0x000055acc01a5811 (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#16 0x000055acc01a1eff mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c6eff)
#17 0x000055acc0312ced (anonymous namespace)::TestLinalgElementwiseFusion::runOnOperation() TestLinalgElementwiseFusion.cpp:0:0
#18 0x000055acc012bec6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4150ec6)
#19 0x000055acc012c7f0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41517f0)
#20 0x000055acc0131b5e auto void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)::operator()<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&>(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&) const Pass.cpp:0:0
#21 0x000055acc012de4b mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4152e4b)
#22 0x000055acc012c01f mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x415101f)
#23 0x000055acc012c7f0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41517f0)
#24 0x000055acc012edc2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4153dc2)
#25 0x000055acc012753a performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#26 0x000055acc012718d llvm::LogicalResult llvm::function_ref<llvm::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&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#27 0x000055acc01d2c65 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41f7c65)
#28 0x000055acc0121175 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4146175)
#29 0x000055acc012141f mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414641f)
#30 0x000055acc012174e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414674e)
#31 0x000055acbd1aaff7 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11cfff7)
#32 0x00007f10aaca7083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#33 0x000055acbd1aab6e _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11cfb6e)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW11v2zqT_jXMDRGDpD59kQvHid8t0KBB0t29FChp5HCPROklqdQ-v35BUrZkx2nSnro9e7ZAm0gUhzPzzHD4iGK41mItAa5QdI2imwvem6dWXd02ot7yDVzkbbm9WguDn0Fp0UoULHDMAlLRnM_DiNMckQUiC73VBhr7FMXkP_Nemh7TdEbCWYw_fn5EMfH9FHSqLfsC8Bdhnob-TS3UZdsZzGf2El9eGtDmshaS1-tLqKEBab4IDZdVb4247LgxoKRGwQ1irGjrmncaLkvRgLQd9GXRSqPaGgU3DLFlgBjbm-CVONVkYVvdP3fDgoZ3GAU3mFeVkJA1vEPBErG0JIjN8SUKbjFiKUFsiUv307aj4HYvTd8hXo5CTVv2NWCUXCOywHX93MyqXhYYhaThdd0WiKUiDifS1HXqjLIC2Hb2Ep0Sz9yAlbT3FLEUsYirNbGuClnCxtrr26hta6BRUKFgSTfxhm5EYKHC2ihRQmntjq5RsHJC46_oxl61VaXBOAyDlfUkuJ06aK8HlzC2Ko3qwQHj7JjlbVvPilZqw6XB9uHYlbh-zkkbp1kvS6iwUzX4ro3qC-OBtTiwJR5-OaSWmCvFt9YvvHFN1rjTrUMUBtX0SPXOQsRSiicozv1NHI6iSTDKFryuDwJoh95JvRFPP1g6DiakMW1n1M4-pxeb9hXJ-VRSgzLPvLbQWwuH8BMUXRMU3ZwTUzyalJLXTUoHk5I5iq7pT7SJvmoTHUxKLUzsJ5rE3jaJoug68EXn59kVvG0XQ9F1-LPtCp1deS9qI-Sslwp4Lf6EMitaOSxWWcG12TtxPqtMO9bS2NXRfVXxBaGVZZarXSF0sEW3eZ5Ormz34TKwl2yF2Ap3ylbihX-SuCXCLYqzNUhQorBV1hUlIdd2tdEOFFu43WLkA-SWpaFwCwOKm1ZlZtvBpDfruOJ1DbVdKaMblNhSrfdriK88P37BaHszKHHxXJzA8XApsTgQLyEcGRmMQCxqe7NvmKNgMYi4bAnC4PXafhlHURDjUXh_uRthAH0roC7H4fZ9UHIzdFVgeiV9mvrW4eeUZmjDiz-wUbwAb-Zxhx0f8jm7KrnhiK30n1vEVncfPzwgtrKOXCqogWvY3Xaq_R8oDGIrR3DYqhY5YqsbwWvf_NG5gdjqs-JSV61qNGKr25FffepWjmDNiq5DwYLS2GWjXa7xQJpQsPBo-Guhb0TzCP_uQRZwr0CDeoYSsXThGNCdz8EH4Fq3heBGtPKDLEUB-gEqHye80LasiFZaLrjL5jvezYS-9y5BeQ-q6Y2T3_ELFiMWY8QYbDrXB-9ksWVxpsU54G43AO6mIzDEElxxUUM5Q2Rx__F28XiLdZ83wmCO836NFXStMnaYJ2M6bd11c3ItzFOfz4q2GXB_Cb_QugcLLebSWlXUfQnYPAEuFNdPOOfFHy78Vvejy4aybzqfDGTmc-5etWvFG8zVurfx0d-dDbZGlva3kENuOLJtWv0dfPs9ZNtOCRYQTDaEEBJFvMhLWvCIpG4C-szRW-0v7pWQxqHw2U0Jlo6dFP-Stdoo4I2L9xILO2XnnmT-MCwQuyYbSqGKiM2twQF65EBKKJxy4KGXj2Itef0fXJY1KL3P0HPYWBIKo43sGGSYl_jAGks4PWa-WQ-Tm7j_fpRgGCWpKOF5nM5DRnCWKdCmVZApM_jiC8omjbM4tOnSby7XsvcPOvOkgJcz3c6ItzUMGRktDac6eFHEhORYcaEtl9j7vK5FXlx-LD4wstnfsllALYTOfsRWs5m92-oSOjvLeik2vuHZmSJ7e-uGnhUoWET2bYcOZkSHZvAojeaY563z8X1mmNLj4KSchtRqSAYN8bGGhM3xGkzmLc40rO38ynY86l1KhTTW87rlZaPXBfd6I2ILaDooTk4pzmSdWamsbBsu5F_TN09s1gThoDA9VJjHVRm_I1MKmyOxy5EgqMp4zJH5NJuBhPMK4m9deMbuB0vQOG8XlsY9OJJRt3K94xg_frIyEkMFg3u2npBD9yKW8tQvrlm2ln1WbDbexCxru6G4ZB8MqEzCmhtAwfI0GFzBBA09heOk36cw8hz3NEz7xkf7TvtfUJhW7eBjS8z6PaPz3RALM-La7F3bec7py-Jp9djxMcQWbphTQRx7sDl-nbPsyprFmx6lE6c0fyWd_j4InikTK0rzMRPZUSaWaekUc9nKbdP2GkvegO7cejwEdTms_J5F3uyX_1ez8l_-HeVTt8-EhpviaSHLB_iihIGDQJ-WZMtJwO49DRmklWMEc58X78yIYOJ3EbA4TuYUP7einISt6mVhWWLmX0Tc013qDn4UvK4ticsqeeD9YOCi62pRuJR_0-1PbnI4Urp429vl63a6OnIw9DDAbuLEgwdfG2Tn7F8aZHzwsV2LgtcPoPvavG_c4wrCUj9H5vgFuCfiGx7FNwhJ_hLS3_H5C_E5R31KWJqGZFKfomkcCeVRSulb9elfCqDcHkblRolnGDzqVFuA1v_dqj9qYX1yJP11qRPpFR-ZRaGqJhnBu67eDaXdwKLeHqD6AGuXSvFhKq1U-yfstA8DPIKZgD_t7U0eei9bWQm3htgEG5bHM4QopEUMVTWGKDnAIqCsgPKtEH0GbfzyMSnXvlgP73u9_CQnU86F6CtSJ2KUHsaI5VBMOWQJhot6N7c_t5-6e671ouTdvhyoXh5NBa1fzP7X68JC8nqrhb7jkq9BjaFZ4l66r23lGd9iQxoRKCakc36ER5FU5JvxuBcd1EIel0bbde9m_MMBOqy2Wn-Q2ii3GWLJ5ItyPO3gNfsHg-33XIE0H2TVHlDJ88SAJhXZx4CRwxgENI8A8960nnuMTux2YVetuuXFEwqWL94MZKsaXme7jdwD_vG-YE5m2EJvZfGh6WrEUh-D-T62dxaqAWZtSt_-vGOu51U60eg-ov0MTz0B92vnORRNKM04vE21ZSsNbMwA9e-A_4qA_0b9nzXN3MeBSVtS8yYvOWIJYunvYP_8YB_E4ys7QufwPPZV93fYf1nYh00aO_BLys7oEUUtIcx_cG04E81jEI5vrYwdU21Cq_9frx6U0PEVkQW_Xz1--atHeBQDKAt2ZPoOjJMZeIjluWwOyoKNNh_t_rAkCjjuQFWtahZuJ0u_8ZV4X_L0E1dQZp1Rh7vwba8KuFsrFNy-ssvykplPntVCferMHRfS779Mt8nw5OmJYhcfO0fT6e7z4Zbc9-zh7X3vpfh3Dy98v4OmVdvrvqr8BNj3L6HifW2yEmpwH5tekdnTt9cj8PZW-QSk98by7P6M1g1nZh5gLbRR25fJ8bUEePG6t_vK87eIzBvpebitR0tWxNHEcd3Vwixkee83U3e2_pKk-z84Jb7aY_rs0Sgh1-6M1CvNZyrFVVLE0ViKj3dTKU2i0_PgnzaLzwNvGNNkAu_x5iwNDxjjIbwDMSmeuKcgi29NmbewOZvP4YQVBuTY5ySEH-LzL3IuCWF07ujMGOdVleDh4M0ZToMVVVUlo3Z2dAIoIWmAs6wWeZFpw5XJvuUMUKH73WErf-keunHcaaAgZPbnoDs49jyPAXut5_I9j3fITw_QXpRXQTkP5vwCrmgSRFE4T2N28XQVBUVahoTMk5TSOU8BKgZVUVYhZSmL6YW4YoSFlAWEzCklbMbYPCwKks7pPGFxEqGQQMNFPXPniFu1vnBHPa8oowFLL2qeQ62v_IFqfwaXoejmQl05v_J-rVFIaqGNHkcwwtTuz69s4qPo5jx__eRPnoLGQn7lqMR3H_i96FV99f3nZAf8nq_Y_wYAAP__9LvLOQ">