<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/122226>122226</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Mlir] --test-linalg-greedy-fusion crashes in BuiltinTypeInterfaces.h.inc:242: bool mlir::detail::ShapedTypeTrait<mlir::RankedTensorType>::isDynamicDim
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir:linalg,
crash
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Emilyaxe
</td>
</tr>
</table>
<pre>
git version: e4372c4454c9
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt a.mlir --test-linalg-greedy-fusion`
a.mlir:
```
#map = affine_map<(d0, d1, d2) -> (d0, d1, d2)>
#map1 = affine_map<(d0, d1) -> (d0, d1)>
module {
func.func private @func4(%arg0: index, %arg1: tensor<1x20x24xi32>, %arg2: tensor<1x20x24xi32>) -> tensor<1x20x24xf32> {
%cst = arith.constant 0.000000e+00 : f32
%true = index.bool.constant true
%c593_i32 = arith.constant 593 : i32
%0 = tensor.empty() : tensor<1x20x24xi32>
%1 = linalg.generic {indexing_maps = [#map], iterator_types = ["parallel", "parallel", "parallel"]} outs(%0 : tensor<1x20x24xi32>) {
^bb0(%out: i32):
linalg.yield %c593_i32 : i32
} -> tensor<1x20x24xi32>
%2 = bufferization.alloc_tensor() : tensor<20x24xf32>
%3 = tensor.empty() : tensor<1x20x24xf32>
%inserted_slice = tensor.insert_slice %2 into %3[0, 0, 0] [1, 20, 24] [1, 1, 1] : tensor<20x24xf32> into tensor<1x20x24xf32>
%4 = tensor.empty() : tensor<1x20x24xi1>
%5 = tensor.empty() : tensor<20x24xf32>
%6 = tensor.empty() : tensor<20x24xi1>
%7 = linalg.generic {indexing_maps = [#map1, #map1], iterator_types = ["parallel", "parallel"]} ins(%5 : tensor<20x24xf32>) outs(%6 : tensor<20x24xi1>) {
^bb0(%in: f32, %out: i1):
%12 = arith.cmpf oeq, %in, %cst : f32
linalg.yield %12 : i1
} -> tensor<20x24xi1>
%inserted_slice_0 = tensor.insert_slice %7 into %4[0, 0, 0] [1, 20, 24] [1, 1, 1] : tensor<20x24xi1> into tensor<1x20x24xi1>
%extracted = tensor.extract %inserted_slice_0[%arg0, %arg0, %arg0] : tensor<1x20x24xi1>
cf.cond_br %extracted, ^bb1, ^bb2
^bb1: // pred: ^bb0
%8 = bufferization.alloc_tensor() : tensor<1x20x24xf32>
%9 = bufferization.alloc_tensor() : tensor<1x20x24xf32>
cf.br ^bb2
^bb2: // 2 preds: ^bb0, ^bb1
%extracted_slice = tensor.extract_slice %1[0, 0, 0] [1, 20, 24] [1, 1, 1] : tensor<1x20x24xi32> to tensor<20x24xi32>
%10 = linalg.generic {indexing_maps = [#map1, #map1], iterator_types = ["parallel", "parallel"]} ins(%extracted_slice : tensor<20x24xi32>) outs(%5 : tensor<20x24xf32>) {
^bb0(%in: i32, %out: f32):
%12 = arith.sitofp %in : i32 to f32
linalg.yield %12 : f32
} -> tensor<20x24xf32>
%inserted_slice_1 = tensor.insert_slice %10 into %3[0, 0, 0] [1, 20, 24] [1, 1, 1] : tensor<20x24xf32> into tensor<1x20x24xf32>
%11 = arith.select %extracted, %inserted_slice, %inserted_slice_1 : tensor<1x20x24xf32>
return %11 : tensor<1x20x24xf32>
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/build/tools/mlir/include/mlir/IR/BuiltinTypeInterfaces.h.inc:242: bool mlir::detail::ShapedTypeTrait<mlir::RankedTensorType>::isDynamicDim(unsigned int) const [ConcreteType = mlir::RankedTensorType]: Assertion `idx < getRank() && "invalid index for shaped 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: /data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt a.before.mlir --test-linalg-greedy-fusion
#0 0x000055df36e95ce8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11f2ce8)
#1 0x000055df36e937fe llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11f07fe)
#2 0x000055df36e9667d SignalHandler(int) Signals.cpp:0:0
#3 0x00007f8991a4f420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f899108c00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f899106b859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f899106b729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f899106b729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f899107cfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x000055df3789381e (anonymous namespace)::InferStaticShapeOfOperands::matchAndRewrite(mlir::linalg::LinalgOp, mlir::PatternRewriter&) const LinalgOps.cpp:0:0
#10 0x000055df3cf0fd31 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
#11 0x000055df3cf0ca51 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+0x7269a51)
#12 0x000055df39e68feb (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#13 0x000055df39e659af mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c29af)
#14 0x000055df39fd26d1 (anonymous namespace)::TestLinalgGreedyFusion::runOnOperation() TestLinalgFusionTransforms.cpp:0:0
#15 0x000055df39df0496 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414d496)
#16 0x000055df39df0dc0 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+0x414ddc0)
#17 0x000055df39df631e 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
#18 0x000055df39df273b mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414f73b)
#19 0x000055df39df05ef mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414d5ef)
#20 0x000055df39df0dc0 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+0x414ddc0)
#21 0x000055df39df36c2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41506c2)
#22 0x000055df39debaea performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#23 0x000055df39deb73d 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
#24 0x000055df39e92785 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+0x41ef785)
#25 0x000055df39de5755 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+0x4142755)
#26 0x000055df39de59ff mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41429ff)
#27 0x000055df39de5d2e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4142d2e)
#28 0x000055df36e74a67 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11d1a67)
#29 0x00007f899106d083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#30 0x000055df36e745de _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11d15de)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW1tv27i2_jXMCxFDom7WQx7cJD6nQIsGSQ7Oo0CLSw5PaUpDUhl7fv0BSdmW5EvSad3uPbuDjCFT5FrrW5ePF7NUa76UADco-YCSuyvampda3dyvuNjQNVwtara5WXKDX0FpXksUzTDEUUbKOE7iMkfBDAUzvdEGVvYdSoP_WbTStDicToJ4kuJPz08oDXw_BY2qWVsC_pObl67_SnB1XTcG04l9xNfXBrS5FlxSsbxeKgC2ua5ap30ryHd1AoKZbXV_7guJVrTBKLrDtKq4hGJFGxTdIjJlASK3mIXukyCS42sU3eNjb1B0v5MVviHsmJhOwKpmrQCMsg8omGFctbKc2A_cKP5KDWAUB_Z7jMgUkYSqZWAxcclgbUX5ttC2GZC6Vii6DdckWJN4zSNilex6kbO9OiMP3lfu_dZCRJJSG49XcfMyKWupDZUGB5PA_QeIfAgCbHXZoRYVtsOMasGNc7ZPFnUt9oPty33XMsmjgkfkmJokj5xs3pcduJ7e9AmsGrNx7srxOcS70T58PpsmS5CgeGnxOkO5XNqQatfHloCLOErurF-5AUVNrQqzaaDXhTRUUSFAIEK8_99oSe5Qdofr1mgf5-Cs5RZYlzAYo-R-sQj8sLo1W9_YBJt1XfAW3IaDYCMPD1yZ3Z3IgrHPfGwWbVWB4n9Rw2s5oULUZdENPeL_fj7tJUXfFLv9aEQSLjUoA6zQgpfQl-PfbNutuVya2qlDyQdXhN1H4kLm6pq4JhL327oP23IKihd9xlKPM_62HA0Hg5N3DT6uOP2GsSO12bdXRuiz2z9-V5X4muCyK4nkDFaS92onPQ3sZOFwueUrz5bbQgpHdWTZYkBLq6bCNfzRDeOye_Ac2WfAwxoMu-oLTxbf0ZgMk74IzqV9tkv7-AemvTPoRNaPjIW1UbQ0wAY56BuPgXF54We53bQ1eBxbdExvWdnpghULNTDBibExD3dPLjhdWzSzFs8RmeNGAXMrB58hOzTTv0F6p-gg_1Gyympige7gbB97eIhDpHuQ9q7wTLpz0iGVdq_2SRX-kFQaTiy4n0snZungX4iMDv11WCVHqOkNDjvHTXzMTdXBJD8mJ81NXTW-zLYTvXX0O0ipOrMkOJ7Po0oOz9FSGPzK6dgaEPbdBAI8Gw2pYozpaKMD-laJKjCtkjvF57uj7M5uLPzn7q-_gdGGll-xNRV8-Psd7J6i2y65eidzRg1FZK7_2iAy__zp4yMicyFeV9cKBFAN26-Nqv8PSoPIfNFywRCZm7oWGpG520mROZelaBnsG5yoDy0XhsvnTQMfpQFV0RL05GXCZYmiGYkdE9nVPu42ZCiaMTCUC__89EIbYHb4s6LcoOh23--Ryq_Anp23bA_rI_eC67uNpCte3vEVItNWuj0qs7G3heR2CzZpbmtZKjBgB7uQn5Gd3FlLZ9qGl9fSbjw5W2MU3eIlGNt9y8kkRSS1DMHlKxWc-S0NrmqFtUODLbk4IslwRbkANkHB7OHT_ezpHut2seIGU7xol1hBUytjq_LFmMZStOfsJTcv7WJS1qsuPIdR4lq3YMODqbQmuOBg8wK4VFS_4AUtv7oksbqfXM6wdtX4lAkmvv4fVL1UdIWpWrYrkEZ_d9Is7CJo3tuyL6CqFby9c3elGQU4WNttZJKwKkohT0qYYucAFzW90f7hQXFpHKpnVwhkuu-k6J9FrY0CunKxut3mhQvgD8NmN7rrMKxICTYvOgDhCECUVXAMwGMrn_hSUvHfVDIBSu-y6xI2BlkFexvJyMY0zRgeWIPItPOZb9aTsrGpE7j_vZSok5JV0zwPaVzFJMBFoUCbWkGhTIdF8AUi8_U0LdLYhr5dXy9l61805kUBZRNdTwJvaxxb4t9aGg90BNMyCBZYUa7tRLLDvBR8UV5_Kj-SYL37SiZRaF3o7EdkPpnYbxvNoLFV00q-9g2vzhTZ2q9O9MQyV2KXhN36KEqGZqSLaZJjuqgdxveZYZj3gxvlNEythqzTkI41ZCS3vFN4iwsNS1ufxSsV7buxc2ksclFTttLLknq9SWCXDdNOcXZMcSFFYUcVrF5Ru3r4Hn15ZrMmijuF06HCrKxY-o5MKW2OpC5Hoqhi6T5H8n42Z9M8mobWQ1Mqa7lZ1a3Gkq5AN44mcl99H2UF6slQw0s3AX2pvjSgqGRdda6oKV9mkj3Cn4obSy_7mcOzl3_-5J6_NJZk9j0eqDGgZDdYORLazkrbEeOKstQxIL-yCioWhfi15qxHIFUrSzs_FQoqFN26t546drNjSYWw7F9UcjCddmbNmkbw0i6C38bqvGLVITJ7G-PtaTvdCmAguhPg3eJd1B1Xvgn2u4TsX3yql7yk4hF0K8z75Hbpg0hcBK5hKmq5tNE9cO6R-Iaj-JY0CQ9d-js-3xGfS8yfGUlzmoSecWwcB_NnDum0gsVbjPNfbrEzjMqd4q_QIWpUXYLW_1urr4JbTG41cHrUkfSKRmYlOa16GUGbRmxFaSeYi83Aq4-wdKmUDlNpruq_YKu9E_AEpuf8fm9vctf7tpYVX9oONsFckl4kRHFYkpxW-xDFA19UjKQsfCtEz6CNp2ePYd52P2jZNWUrv8hetbno7Af4rs-KSl3VanWM3JOBRawK4jw9sSf60jzXX5oHqvWM0WZHBKqVoyLQ-qDuTzPCTFKx0Vx_ppIuLSNsg3KLxxuoi0QoZnGe7iOUjv3ByuCb_fHAGxBcjknRdt3BTH-4g4Y8q_VHqY1y-6daHSHifgev2b_obH-gCqT5KKt6W1GXq5KYsTLYxyAbxSCNQsC0NbVfdexBbM_C5rW6p-ULim6LYinbolyvfYeikLVaUVFsD9gGK4_3BbNXYDO9keXHVSMQmfoY5LvYfrau6tysDfPtr1D-DKU9je609mcgtcu6-27WvISi3mJmL96m2m0tDaxN5-rfAf8VAf_t9X9Wmbmzw15bJuhqwSgiGSLT38H--cEexKNuOkd3G-oLI0896_4O-y8Le3coYwUfWbJPR8sjkkWLH8wNF1rmVVm02C_z8vFSO4HqP2zrkcB-c0iC31uPX731IOEoBlFakpHpW2cczcChLy9kcxKkJdnbPDz3YbCgQHEDym75Z-4MS7_xQ9SO8vQLVcCKxqjBkddT3aoSPi8Viu5PnK8crsx77wRXXxrzmXLpT176B2S49_aQ7Eg0BpdF_XPn4WHc3zm922FvJf-jhQPsn2FVq80HdyVm4CsGFW2FKRgIMHB6zG75djoCbx-S95z03lheHM_eujtOBZTmEZZcG7U5TI5zCXCw3fNn1z8TyZnIvJGewwM9yEk2TXrAdSO4mUn24I9Rt7b-kqT7NyyJsz36756M4nL5aGfTE80XomKosmmyp-LRaSokWZIcr4N_WhVfaHYmWdJzbzp2b15VJ93bLUzKF-qXILNvTZm3fHMxzHnVWxVmY8yMwA_B_IvAMQJ7cNPhlY8spmmGu9_2L3DhhIU0zfba89ElAxZMI1wUgi_KQhuqTPEt1wxK3W7vc_hH99LJcRcOInfpLPK6xzeKsjhhgL3WS2FP2Nbzu3t7V-wmYnmU0yu4CbMojYOMJOTq5SaJ8iCCLCQkhRhSSBIW0SClQKI8YmV2xW9IQJIgDPIgI0FCJnlWptO8ollE8yBMUhQHsKJcTKyRk1otr9zVsJuQEELSK0EXIPSNv-XapWJ3hcFddUWEuAtj_prrlbpxWBftUqM4EFwbvRdsuBHuX4LZYkDJ3bkLXf4aGmjMJf7llwSvWiVu_v4Vu86Vrzfk_wMAAP__oJXMGA">