<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/108164>108164</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir][scf] -scf-forall-to-for crashes in PatternMatch.cpp:295: virtual void mlir::RewriterBase::inlineBlockBefore(Block *, Block *, Block::iterator, ValueRange): Assertion `argValues.size() == source->getNumArguments() && "incorrect # of argument replacement values"' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
axeabc
</td>
</tr>
</table>
<pre>
git version: 761bf333e378b52614c
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -scf-forall-to-for a.mlir`
a.mlir:
```
module {
func.func @parallel_insert_slice(%arg0: tensor<100xf32>, %arg1: index) -> tensor<100xf32> {
%c0 = arith.constant 0 : index
%c1 = arith.constant 1 : index
%c100 = arith.constant 100 : index
%0 = scf.forall (%arg2) in (%c100) shared_outs(%arg3 = %arg0) -> (tensor<100xf32>) {
%1 = "test.foo"() : () -> tensor<100xf32>
scf.forall.in_parallel {
tensor.parallel_insert_slice %1 into %arg3[%arg2] [100] [1] : tensor<100xf32> into tensor<100xf32>
}
}
return %0 : tensor<100xf32>
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/lib/IR/PatternMatch.cpp:295: virtual void mlir::RewriterBase::inlineBlockBefore(Block *, Block *, Block::iterator, ValueRange): Assertion `argValues.size() == source->getNumArguments() && "incorrect # of argument replacement values"' 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 -scf-forall-to-for a.mlir
#0 0x0000562efa2c7128 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d7128)
#1 0x0000562efa2c4c3e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10d4c3e)
#2 0x0000562efa2c7abd SignalHandler(int) Signals.cpp:0:0
#3 0x00007f3e8aa50420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f3e8a08d00b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f3e8a06c859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f3e8a06c729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f3e8a06c729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f3e8a07dfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x0000562efd56e140 mlir::RewriterBase::inlineBlockBefore(mlir::Block*, mlir::Block*, llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Operation, true, false, void, false, void>, false, false>, mlir::ValueRange) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x437e140)
#10 0x0000562efbefeea0 mlir::scf::forallToForLoop(mlir::RewriterBase&, mlir::scf::ForallOp, llvm::SmallVectorImpl<mlir::Operation*>*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x2d0eea0)
#11 0x0000562efbeff58a void llvm::function_ref<void (mlir::Operation*)>::callback_fn<std::enable_if<!llvm::is_one_of<mlir::scf::ForallOp, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<void, void>::value, void>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::ForwardIterator, (anonymous namespace)::ForallToForLoop::runOnOperation()::'lambda'(mlir::scf::ForallOp), mlir::scf::ForallOp, void>(mlir::Operation*, (anonymous namespace)::ForallToForLoop::runOnOperation()::'lambda'(mlir::scf::ForallOp)&&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) ForallToFor.cpp:0:0
#12 0x0000562efa3cb24e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11db24e)
#13 0x0000562efa3cb24e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11db24e)
#14 0x0000562efbeff44b (anonymous namespace)::ForallToForLoop::runOnOperation() ForallToFor.cpp:0:0
#15 0x0000562efd3b92d6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c92d6)
#16 0x0000562efd3b9c40 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+0x41c9c40)
#17 0x0000562efd3bc282 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41cc282)
#18 0x0000562efd3b4ab1 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#19 0x0000562efd3b470b 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
#20 0x0000562efd4613a5 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+0x42713a5)
#21 0x0000562efd3afb35 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+0x41bfb35)
#22 0x0000562efd3afddf mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41bfddf)
#23 0x0000562efd3b010e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c010e)
#24 0x0000562efa2a7d67 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10b7d67)
#25 0x00007f3e8a06e083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#26 0x0000562efa2a78ee _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x10b78ee)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWttv4yoa_2voC2qE8TUPfUgv0VZqt1U7e_bRwoAddgh4AXfa89evwM7FbjLtnDPR7K6O1CYYf3yX33fhMw6xVjSK8wuQXoL0-ox0bqXNBXnlpKJnlWZvF41w8IUbK7QC8QLmWVTVcRzzOC-qFGdRQgG6BmjRf9o36_jaE4IM_aPqlOtgVMxQMsvg3ZdnkKF9asNbo1lHOfwm3GpYtZbCnOvWwXNL6_NaGyLludN-BMnM351wGSbj4dLfDX-wv15r1kkOQX7ZX0NYd4rO_AcECWqJF8BlKZTlxpVWCsoBLgBOiWmQV8pxZbUB8VWE0GsdYxDfAHwFe4rIUwjF-CvAc3gO4ptD9PvioV9JEQTxNSRGuNWMamUdUQ76yQ23EXV0iDo6So0Ocu-nD63oyS2tZz3ecAsA9lYJNUx4zn7CrojhrNSds1vKOPDYwLbBAuDiIHzzMSJBi2jggB23blZrDTAO7OdB7WF4DOKB2c6ImVDlxrtTaXDgMDvo_l4ZoZwe7Il9fgx4pNcQpJceiGEUvg-HSc_juLK95fn1cLkbQQgNd51RG-8cjsKBeLtuN5gkgXWEfoXOEMp3iXI4XYb06xFfMuIIwEv7-xvAy_u72yeAl1K-rM8Nl5xYvrlsjf4Xpw7gZUhGvJSiAngZ6B-Jc9yoe-LoakbbFsQLPE-9gBdhXEckfNGCwU0Wx4sn_s0Ix82lFxBmhJJC8Uup6ddLXmvjMzRcQYAXPhnfXwwLHTfEaeOnfyOy409ENRzguRe_sN7nQitfd4hpAoGdWfE738bddcgM3RnKfeQ13P29Wy9M0625GqJ_DgHOAM586ApFtTGcOghwDHUNyUAKDW8loTyMX4KgEN45rImQnM16-B_vbhbPN9B21Vo4SGDVNX6lNg46DVfOtdYbhpcALxvhVl01o3o9eOG9M4S1QdASEsWgUFR2jEO34pAaYlewIvRriIpB_HOIE9at222YoBlA80ejG0PWW2vsHw6PqhOS-W-hhmD5oNgPqYFjBNErQgilGeY1wTSPcAGD2cHT9s32g0cjlAuGfAnxjosdkSHfSm2d4WQdfHblM7T3YPETzQH4Er1GiHkVfaxtbYgmNiQ05odseOrUs2gUkX8jikludoF2CjW9FiM18RRqUjE4UgjgYkCun7ZDYqPwv2UUD4zyOuYFISlKMIJlabh12vDSuMGivlq8FlmZJedSqO71vFFdf6N1K8MJm1k9Q73GSYLRSN9kJAYVDKEKGiKsL-Vb4xspKnp-R28xet1e4lkceSyDFQAvZzN_9WYZb33edEq89hMvQRvV-cvAekZBvEj9_h_tNEnHmmS0SOeQVDpY-jlNHOvRCKuCkMILyXdCsqmQHM9hw13Z611a3vgkLUOZ-axcoZy3X2rC1rahpBedIl8pi53s_JDsUsnSLyyZXpPQLfwJkfPcB1Gc7GQWY5k5q1n2icChPmSyEDJxXLNsFDLz_RBnacajBP3wFrSj77ecfvs5PLvLciGFdeV2Z4qvprcYd0TIfkZpxkvd-l3Kgvhqx_uh9et9W46voDMd9981kTYM_I76fqJvXLdz_aCf3DEebZOnqDhJnHu0t-7wdXFU3Ctec0723WFp3Q_6LeKLXmpzp3U78sHIZ311P8BhGTg8tGOfPK-JlL9x6rS5XbfyGNKLgNbiRMBghrzdI2CiCTB1WpC-X9op759lvH6l4TWIr8LdETIjC3zvc9PPUyKlbwHKWoH4yjrWT3NFKslL4ZkBHO2Fpy214qWuR_gchPaY8KtRkjWHprdZs1FzU8dCk7XVUtjSkjUfDN6P8d2id7PureV7ovYz7RuRX4PBe8D9k8ivD4b5_W4ejbVcavONGHa712ACXBCl1dtadxYqsua2DQ3IfB-eXez2HUmnHtQeRMWWHOBcknXFCMD5SKkDeM8_EezbCnA0MH6xBVn4-2jtgVjGhdSq-V7UzeGe6u9bFZ9o454nphVO-PTB5EC4HA-ID6D-c-k7snU_Sk_SIkbMozGqS_FfcP0IXMm0jCdJ9dOy7ePgTkfdTlzNMcuOOOqh_aIf2kdi7YKRNnhmkDsC2RO8q9zHS_1CEflmhb0nijQ8VMtKa-m_OxUOIdkJH8WSiHqLRx7JppDQUQP4OUgeRct9WziJP0-6tTT76RjtL_KibpV1JjyX-31o8T2CXnJ_Y9D9kRiu3K2qNQxHhafrb7wb6KTxyyduoLjAE-03eByMw2mdP43aXquR2sVE7YRUEWy5qbVZL2jfrX__4GHbxwyHqa0bPwo8hzOn-8ZXxo1jJqHkDbvSyvFX987t91KYh9bdE6GutKpFs8djDvfuHi4Y86l9Oar2avCdbgQl8onbTrrjtfnYAoCLrfmdEv_u-Dvz7_lam7fLrq77TNjSM16TTvqHJMkdP77Gd3w3451j6oRjjfBBFD_rzpPbs9PuWhDJqfNttHXm7X18fC8GNm1WUqJxD_Vf4ZkPIxSPnhhZkkUxSfdb4FYKt1Ds0WjKrd2o-0vi7n8wK75LMXpwdkao5onXR6dPU5Nx7h2-X5NxNK5ZpK7i9HA2_L_l8ml2vcoDOEIYTxFmrD6K8NCq0BXpm5LFjwbOR_CczGzG6pHZ8WQzRBHiP8XsX2If9eqP7EvGx_0kZ1kOh4PcE7xvqDz_kQLTU3OOihiWpRQVLa0jxpU_cqxMbbc5yO-H4WbgEw6Y4wT7z534bGp_wTnsBZ8KgYLvuWD7CvaMXcRsHs_JGb-IcpyhBKM0O1tdpElSU4TrNE8SnnJU0IIVaZTgNIlyxvmZuMAIJ2geRahAeZzNMK8qhPN5hGtUV3UEEsTXRMiZ13OmTXMW3g1eRKiIsuRMkopLG34HgnH_CheD9PrMXAS7qq6xIEFSWGd3HJxwMvx2JCxIr0F6aWkN0utDr_PCC0duoVDwrxfCn3khfNYZefHH3_gOjn25wP8JAAD__zUl7FM">