<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/73382>73382</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] --loop-invariant-code-motion crashed with assertion failure.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
anonymousMCS
</td>
</tr>
</table>
<pre>
git version: 024718313b526a4530d7cd58886fcc157247e0ff
system: Ubuntu 20.04.6 LTS (Focal Fossa)
reproduced with: ```mlir-opt --loop-invariant-code-motion a.mlir```
a.mlir:
```
func.func @func2() {
%c25 = arith.constant 25 : index
%c22 = arith.constant 22 : index
%c16 = arith.constant 16 : index
%c11 = arith.constant 11 : index
%c0 = arith.constant 0 : index
%c1 = arith.constant 1 : index
%c2 = arith.constant 2 : index
%alloc_13 = memref.alloc(%c16, %c22, %c11) {alignment = 64 : i64} : memref<?x?x?xi1>
%3 = bufferization.to_tensor %alloc_13 : memref<?x?x?xi1>
%6 = tosa.arithmetic_right_shift %3, %3 {round = false} : (tensor<?x?x?xi1>, tensor<?x?x?xi1>) -> tensor<?x?x?xi1>
%13 = scf.for %arg2 = %c0 to %c2 step %c1 iter_args(%arg3 = %3) -> (tensor<?x?x?xi1>) {
%27 = scf.for %arg4 = %c0 to %c25 step %c1 iter_args(%arg5 = %arg3) -> (tensor<?x?x?xi1>) {
%dim = memref.dim %alloc_13, %c16 : memref<?x?x?xi1> // this line cause the crash
scf.yield %6 : tensor<?x?x?xi1>
}
scf.yield %27 : tensor<?x?x?xi1>
}
spirv.Return
}
```
trace:
```
mlir-opt: /data/bin/llvm-project/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp:934: mlir::Speculation::Speculatability mlir::memref::DimOp::getSpeculatability(): Assertion `constantIndex < rankedSourceType.getRank()' 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/bin/llvm-project/build/bin/mlir-opt --loop-invariant-code-motion a.mlir
#0 0x00005569beb4d06f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x160306f)
#1 0x00005569beb4a0c4 SignalHandler(int) Signals.cpp:0:0
#2 0x00007f7d2257f420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007f7d2206a00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007f7d22049859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007f7d22049729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007f7d2205afd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x00005569bfd6327f mlir::memref::DimOp::getSpeculatability() (/data/bin/llvm-project/build/bin/mlir-opt+0x281927f)
#8 0x00005569bfd20704 mlir::detail::ConditionallySpeculatableInterfaceTraits::Model<mlir::memref::DimOp>::getSpeculatability(mlir::detail::ConditionallySpeculatableInterfaceTraits::Concept const*, mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x27d6704)
#9 0x00005569c452f921 mlir::isSpeculatable(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x6fe5921)
#10 0x00005569c180a0f5 mlir::moveLoopInvariantCode(llvm::ArrayRef<mlir::Region*>, llvm::function_ref<bool (mlir::Value, mlir::Region*)>, llvm::function_ref<bool (mlir::Operation*, mlir::Region*)>, llvm::function_ref<void (mlir::Operation*, mlir::Region*)>) (/data/bin/llvm-project/build/bin/mlir-opt+0x42c00f5)
#11 0x00005569c180a80e mlir::moveLoopInvariantCode(mlir::LoopLikeOpInterface) (/data/bin/llvm-project/build/bin/mlir-opt+0x42c080e)
#12 0x00005569c177ef5c void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.2) LoopInvariantCodeMotion.cpp:0:0
#13 0x00005569c177ef5c void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (.constprop.2) LoopInvariantCodeMotion.cpp:0:0
#14 0x00005569c177fb95 (anonymous namespace)::LoopInvariantCodeMotion::runOnOperation() LoopInvariantCodeMotion.cpp:0:0
#15 0x00005569c174211e mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f811e)
#16 0x00005569c17425fa mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f85fa)
#17 0x00005569c1742e24 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x41f8e24)
#18 0x00005569c1733b93 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#19 0x00005569c1735064 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
#20 0x00005569c1735214 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
#21 0x00005569c1834504 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) (/data/bin/llvm-project/build/bin/mlir-opt+0x42ea504)
#22 0x00005569c172da77 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41e3a77)
#23 0x00005569c1735361 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41eb361)
#24 0x00005569c17357c6 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x41eb7c6)
#25 0x00005569bea845db main (/data/bin/llvm-project/build/bin/mlir-opt+0x153a5db)
#26 0x00007f7d2204b083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#27 0x00005569beb1d3ce _start (/data/bin/llvm-project/build/bin/mlir-opt+0x15d33ce)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl9v6yzS_zTuDWqEwf9y0YuctNFbqVWrtu_uZYQBO2wJeAH3NPvpV2AnsdO0J6ftPvvsaqVzGscMw-83MwwMhFgrasX5RZT-iNLLM9K6lTYXRGm1WevW3s4fz0rNNhe1cOCFGyu0ivAMQJTkcYFjXKYoI0mKIcspS4uiyCpK4zRHSc5hVUXwMoKz7q_dWMfXvvf_l61yLUBwApNJBm6eHkGEioWmRIKFtpZEaDrsaXhjNGspZ-CncCuvIspg928thTnXjQPn51Lr5lyoF2IEUe6casbP19oJrQCZeLldp6Hyvgn3Xw9kqlbRif8DogT6TxShIkJTEOU_OgkAIpRSlIIIXwJihFtNqFbWEeVAeDsDQjH-OpJGR6XRcek4OyYd3h6Tjo9Kx8el4TFh-I7mo4rfYXiU4FFZIqWmyxiHHmu-NryahHfB0p5-hOa92bZPcdz7gEhRqzVXLvTOkm6ELInyy_DY6YvwPMKL1-1_EUf4aoCgG7psq4ob8Q_iI2bi9NJxZbU5gHiiys5lTlsyCUZYcyfo0oh65ZZ2JSoXxu3pYM_E6Fax0Ksi0vItgQgVHY6jA6I5-Kh1Cs4jfPWRyB5x7wBLq0nVszZ158YuUJzuPWsdb_qAEI6bJTG17XxFTI23PfBu-F9QGM2lAAXlR6AkR6CkH2NJt108rk_CCYCYWA-jM3zdR8UuKLNfxIfXtYjQAriVsEAKxQElreXArTightjVcFxPfyO4ZNt4mp3gSACi_LL_MlIQbHqKhkH_RpiXyQN3rVF9cty2Hc2kzhDK30uk2zzdxfSCEUcitCiFitBCypf1eWP03zh1EVqEfIwWUpQRWlwKIrvXt3z9wKsILa4fdt_uGjuhTRPh2RQnwfh9Lsezx4bTVobJPH5BSiGF2wxEtx7zz5difdd0jzV3B3263O_HmVnLTVhaogxuE9y1z2wgwnNgiHrm7FG3hvKnTcMnNXcPRD33ClAOKiIkZ5POOPc3V7PHK2Dbci0cIKBsa2B4o43zob5yrrEeUgieWrhVW06oXveWe2tAYW3LrQ80ohgQisqWDYIMlIQ-B2f1wz86Qp8Ba9fNzntw0gXhvdG1IWtATN36NGtP8F_ZCsl2jb-1QHeBFyEMAXyFEMI0zaYlLxMGswoEtsE1dmO7h3sjlAv4n0L0oWIvZMjPpbbOcLKOUFhEhHJhgnsvfIJChH7A1ziDGGbVbovi0cYHaAmkCXgUtSLy_4hikpsIFf3g3ett2MLwf6cI9YryKmcIpXmVIAiWS8Ot04Yvjeuxd3PjtciWWXIuhWpfz2vVdg2NWxlO2MTqCewQJwmCI7x4NAzMCIQlMERYfoJ-6jVnQXOCISxHmpOx5mRapFNASn0S8oFmhIp0OtKcHmrOd548WWeOxjqzsc6UVCz7PZ0YVywb6cyHsVCxDKO8-nyu-VqsoiKeonwcq8UYH4I5TAb4GHdEyO55rhUTfnoSKTd7eJJfK8dNRSh_MkS4fireasZlhOcfcr36gO53gJhrRXnjQEjJEZr5Wb_Xe9dw060IvuWrxs1ZlsNkZNzpwLg0SVE1RfFgfGGHBEaUvxVaVvF0iuJ9GYVwPMyoNC4ggVU6jEv9wm-0bq636Xmu2Tidzowhm4ews9l3e-B1j7nbje7FfbHk-Sy7zVCptQQjxn8hsuVj_-y1-VX2dxWOTfhZvS9asE_r_aLfEkQhrNKR3-JDvxWQn-C3vYRvvRHP_K7ZzZhvAVpAPgKKRkDznFcpBcGaxyf2TyKfR7G00OYnMezaeXP7TerVh274tAe3IbBv_yuRz3eG-WU6GKYrWRujmwnyr94Y-DbsWt6u4d4O-H92CHZIDuxQldPUK90dLgFF1tw2XTzuY_XIAP1-rlV3akCh-G1I6RhSguKYv-OVu-ZJ3zX3xNoZI01wQ49hZFEv8ItlZtgyU0RurLC3RJHam3kOfB7zn60KR3HsWzapSVwVcTyen9kh-bQiv03-XjTcF64HYeVFd5yyb7fGsJMf6lpZZ0I9os0brWOBQQG4xX5PDPfFWqUH24RvMHhakZHB80ODc5Qc4NwyPxpb37ol8AA5SkYAizFAjMspBg03lTbrWcgk9hcFlXWsL8hWxHC2bJyJ8Hzfo6uAb2ufxLbGPgiP25vrh7lWjr--3a_dSmHuGndLhJprVYl6oGMKBq3Hp_v0gF8KswQ0RlNu7Y9w2ncqvVaJv7f8Db1bvtZms1U1kGe8Iq10S8Yld_z9Pn4_fHU656FcfzDityDWmU3fvh_nKVSB92E-zU4xF4KH5kLxMF5vdC0okQ_cttK9v-q81yFCxR9nzvedOt3VIJRIWRL6vKzUCPbATn_C8Dju9hOnTCcSoVySdclIhPI_k1dQIbWq_1jDfgDp1xPmYGuOk3RUSttGCjdT7P4g4_w72P0HTtIPJfY7he7zy_UMJykcrY7ooJ5BjOT58Yn235YmvrrT4Jjk-ciW-HBpwVn8ri37LR9dkW5zd1DlPDojVB2uAt59_bEhvk6wxNnodAUlhwRzmn0LwX85k5xmIybp6CybFEnKSrAmQn3x2DzFJGXlaKiD49ekhAUGy6UUJV1aR4xbDsY99ZA3gQUejZKPD-djhikHnf6vUmIY032RNSu1cTyU3FQbHi5UONtj2V6InbELzKZ4Ss74RZxDOIVZnmVnq4s4nUKKWJWUPE7JdMrylHBKU0RiSDAtzsQFggjHMUpjCDOYTXBCYlQQRjiMy6LiUQL5mgg58Swm2tRn4S7oIse4QGeSlFza8FsPhLpbNhSll2fmIpAu29pGCZTCOrtX4IST4fchoUN6-fE9Trhg6n-nAcjukqwiQraGT85aIy8-f58VaPwzAAD__z-fdVE">