<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/128340>128340</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MLIR]`-test-loop-unrolling=unroll-factor=2` triggers Assertion failure `result && "expected 'from' to be contained within the map"'
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
xisang0
</td>
</tr>
</table>
<pre>
Test on commit: https://github.com/llvm/llvm-project/commit/1d070988d9172965dee227e5629fa886845b815f
steps to reproduce:
```
mlir-opt test.mlir --test-loop-unrolling=unroll-factor=2
```
test case:
```
module {
func.func @tensor_dim_of_iter_arg_no_canonicalize(%t : tensor<?x?xf32>, %t2 : tensor<?x?xf32>) -> () {
%c0 = arith.constant 0 : index
%c1 = arith.constant 1 : index
%c10 = arith.constant 10 : index
%0, %1 = scf.for %i = %c0 to %c10 step %c1 iter_args(%arg0 = %t, %arg1 = %c0) -> (tensor<?x?xf32>, index) {
%dim = tensor.dim %arg0, %c0 : tensor<?x?xf32>
scf.yield %t2, %dim : tensor<?x?xf32>, index
}
return
}
}
```
crash trace:
```
mlir-opt: /home/workdir/llvm-project-19/mlir/include/mlir/IR/IRMapping.h:74: auto mlir::IRMapping::lookup(T) const [T = mlir::Value]: Assertion `result && "expected 'from' to be contained within the map"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ./mlir-opt /home/workdir/test.mlir --test-loop-unrolling=unroll-factor=2
#0 0x00005615d821b2b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x10b62b8)
#1 0x00005615d8218dde llvm::sys::RunSignalHandlers() (./mlir-opt+0x10b3dde)
#2 0x00005615d821bcc8 SignalHandler(int) Signals.cpp:0:0
#3 0x000078200c0b9520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000078200c10d9fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x000078200c0b9476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x000078200c09f7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x000078200c09f71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x000078200c0b0e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x00005615da08eeee mlir::loopUnrollByFactor(mlir::scf::ForOp, unsigned long, llvm::function_ref<void (unsigned int, mlir::Operation*, mlir::OpBuilder)>) (./mlir-opt+0x2f29eee)
#10 0x00005615db09c83d (anonymous namespace)::TestLoopUnrollingPass::runOnOperation() TestLoopUnrolling.cpp:0:0
#11 0x00005615db61164f mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x44ac64f)
#12 0x00005615db611dd2 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x44acdd2)
#13 0x00005615db61455e mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x44af55e)
#14 0x00005615db60d0ab performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#15 0x00005615db60cd03 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
#16 0x00005615db6b6465 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) (./mlir-opt+0x4551465)
#17 0x00005615db606962 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x44a1962)
#18 0x00005615db606c13 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a1c13)
#19 0x00005615db606e22 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a1e22)
#20 0x00005615d81fa4d7 main (./mlir-opt+0x10954d7)
#21 0x000078200c0a0d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#22 0x000078200c0a0e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#23 0x00005615d81fa045 _start (./mlir-opt+0x1095045)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWNtu2zwSfhrmhrBBUecLXzhJjS3QoEHa3VuDEkcyNzSpJak22adfkJIj2bHT38W_2AMQOzI18803R1Fk1opWAaxQeovS-xvWu502qxdhmWrJTaX56-o7WIe1wrXe74VD8RrvnOssiteIbhDdtMLt-mpZ6z2iGyl_HP4tOqP_DrVDdDOq0k3ESU7KouBllNMySzkApTmkGS0bVhRZkaRVEaUNImvroLPYaWygM5r3NXiLZI0yMv6R9V4Ks9Cdww6sW_pfeLHw1wupdbfoldFSCtWi-H64XjSsdtqg-J6eQHktXDN7zormvQSM8ltE1rjpVb30XxglxIGy2my52G91sxUOzJaZdqv0tmZKK1EzKf4JiBaIpg772A0aKL5D8ebFf5qYovgTonfYy9CPhUq8QPEnHADLAyOMvWpNMIrvMTPC7Za1VtYx5TAJeEJxeJmJRudEo_OiZ2Gjs7hk9GKAt3WzbLTxCyIsDCSdPuD6DI90DpGzQ6iYaclBxY2gzLTRBDMPxQchHQgehSow5WIfsAbVZfg5mB2t1eTDRBygvI-vAiQfkjcqD-gf5voocvm9vzLgeqPC2rAyfs8qsTbM7rAz7KNm8JYR3ez0HhDd_NTmmQtz0pOLqER04zUQ3QhVy57DtPD5KXw9sK4Tql3uULzOEw_LeqdxEIrXKF6_iQw_pdbPfYdo8d1HPNQKRunt9xDpSetvTPaA0nsPuLYWjBNaYZQRA7aXDiOaIZphRCm8dFA78MHNG-PnS-7LpwIP7phQwPFP4XZCYbcDvGcdotQLNUxI4EtE1o9fPq2_fcK2r_bCYYarvvUDRRvnka4eZMLaHiyiG8wUx2PggvEhNRWrn0N6vO1vjtXPmPf7bkgWWQ5F82h0a9geM9P2e1DOM8DLMfxhnJ1L3--NOIxoTDB5IYSQNItSXtCoolWBg38hH_bVDhePRigXSH8PFUaLSciwn1ttnQG2D_nxFexCY9FiTh3RW_ISkSqjlR9RI4PohEHBOZxj8NSrb6JVTP6FKS7B2MOgO28k5r5qD0boqZt1XeAjOESLkfWwbJd153NDwmdAiUeUvKCE1KQqU0qGebuRokJ081Jk2yxZSKH6l0Wr-uFGvbR6mQViCU0pmWglR4AR4WVT487tDDC-fRZSXodeZmVTT-jpKd0kz3Brg3vX0k7ybALOjoHLJm9izCrfOFfB0iJv4gk2fwcbVVcDRtUEWJwEgECZXQcYl1DOHC_nZcRIAQAwm16-6_4aGu32dTN0Gi2m27ZuhouNNl873ye9ClssjqVWrV-Y6t7vIvzw2xpoUHz3Qws_6oo3jVCsdzPjXzswzGsguj69c9sLyX2Nl-NO4VzT0IaWAGPT-MY8mg0VKesiDhz87uV1r3uLFduD7cI8KAdbfkP45S0MQrWPzI4NbHr1Vc1Yhu59J3_Sdp7H0YSosijKkmbmHgfHhDy4-l1_7bzNNWddGHWj6aNMBFLvw3QpgGvF5KsV9oEp1vow3uFKa3mUwQ9GXpKwOkuaKbD01CHO6dUOPYoOpFBw5Ngg-sYz-9M9nCt5U5-VdSY8qXyxrz8SGCwPN0buj8yAcp9Vo4ctQUC4HETO6RTE-CSISZrCie2DN2dr4DgYF402aTprieTYKOGEVbgD02izX4d-tb94NFrHx2mwYwb4tnN-EzhpfNO9qeGhNX4DOwblJI0PXz4_3Wnl4MW9C_mDFOZr5x6YUHdaNaKdYZR4dvdMn6UnztWcxLOJ9EW3_p3ladiJXZxUlxQQLd5875X4Rw_vfH-AvTavt33TDCX4Js-hYb10Ww4SHFzWiT-NW-jLGQgTMNypmZR-T7ZtFIrvzobwj-by3-7PxO5eMAm1e4JWWGde3xfHRwUwiCCabEkALg7Pnf-KzPyiPLPj8qyyJEtnjttOCrdW_NHoGqw9cP2PFN3_YEt8KDG_980ZodonaC4uX5ilaRolWTrN0vxk3GRlRs8X8v9bG1561kRlNnvAFafxqaP4YnzGh3O9Y8NjeH1t0n7l3GXSdRRPpMtT0kAvJ_Ua0r_LDugUUnr8ths1LOE53jOhLrxFlmnC80k9On6fYISXV77_0ZKXZAKkp4CQELzdep2tdcy47YHcNSYgmZmIT10mSYoH8ItOk2Rs07V_pwtnLEWtDYTzCuAj-OF46YavYl7GJbuBVZQnhEZxntCb3YpUJCNZXtIcKkrKKInLJmF5HEU8atKK3IgVJTQllFJSJJTSZVxkJG-ApkVaJVWdo4TAngm59EWx1Ka9CYcsq4gWcUJuJKtA2nA-TelwPkVRen9jVuFopupbixIihXV2QnDCyXCm7bdRKL1HGfnDZyYZwc6ItgVjZ8dTDROyN_CnHlPd9Eaufv8IagzQjxX9VwAAAP__sQwf0w">