<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/106168>106168</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] Crash when using --tosa-to-tensor
</td>
</tr>
<tr>
<th>Labels</th>
<td>
mlir
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
wangyongj1a
</td>
</tr>
</table>
<pre>
I have the following MLIR program:
test.mlir:
```
module {
func.func @func1() {
%c-138_i16 = arith.constant -138 : i16
%from_elements_8 = tensor.splat %c-138_i16 : tensor<2x2x5xi16>
%cast_9 = tensor.cast %from_elements_8 : tensor<2x2x5xi16> to tensor<?x?x?xi16>
%c-2_i64 = arith.constant -2 : i64
%from_elements_10 = tensor.from_elements %c-2_i64 : tensor<1xi64>
%463 = tosa.pad %cast_9, %from_elements_10 : (tensor<?x?x?xi16>, tensor<1xi64>) -> tensor<?x?x?xi16>
return
}
}
```
The above MLIR program will cause a crash when using the following command:
```
mlir-opt --tosa-to-tensor test.mlir
```
And the crash backtrace is:
```
mlir-opt: /data/tmp/v0827/llvm-project/mlir/lib/Dialect/Tensor/IR/TensorOps.cpp:1150: mlir::OpFoldResult mlir::tensor::ExtractOp::fold(mlir::tensor::ExtractOp::FoldAdaptor): Assertion `static_cast<int64_t>(indices.size()) == tensorType.getRank() && "rank mismatch"' 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/tmp/v0827/llvm-project/build/bin/mlir-opt --tosa-to-tensor test.mlir
#0 0x000055e82b2546ff llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x15266ff)
#1 0x000055e82b251774 SignalHandler(int) Signals.cpp:0:0
#2 0x00007ff0cc37a420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00007ff0cbe4700b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#4 0x00007ff0cbe26859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#5 0x00007ff0cbe26729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#6 0x00007ff0cbe37fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#7 0x000055e82d3586f8 mlir::tensor::ExtractOp::fold(mlir::tensor::ExtractOpGenericAdaptor<llvm::ArrayRef<mlir::Attribute>>) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x362a6f8)
#8 0x000055e82d2ec291 llvm::LogicalResult llvm::detail::UniqueFunctionBase<llvm::LogicalResult, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&>::CallImpl<mlir::Op<mlir::tensor::ExtractOp, mlir::OpTrait::ZeroRegions, mlir::OpTrait::OneResult, mlir::OpTrait::OneTypedResult<mlir::Type>::Impl, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::AtLeastNOperands<1u>::Impl, mlir::OpTrait::OpInvariants, mlir::OpAsmOpInterface::Trait, mlir::ConditionallySpeculatable::Trait, mlir::OpTrait::AlwaysSpeculatableImplTrait, mlir::MemoryEffectOpInterface::Trait, mlir::InferTypeOpInterface::Trait>::getFoldHookFn()::'lambda'(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) const>(void*, mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x35be291)
#9 0x000055e82d2fd1d6 mlir::RegisteredOperationName::Model<mlir::tensor::ExtractOp>::foldHook(mlir::Operation*, llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x35cf1d6)
#10 0x000055e82e5ff274 mlir::Operation::fold(llvm::ArrayRef<mlir::Attribute>, llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x48d1274)
#11 0x000055e82e5ff608 mlir::Operation::fold(llvm::SmallVectorImpl<mlir::OpFoldResult>&) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x48d1608)
#12 0x000055e82e52a7c7 mlir::OpBuilder::tryFold(mlir::Operation*, llvm::SmallVectorImpl<mlir::Value>&) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x47fc7c7)
#13 0x000055e82dcc8621 (anonymous namespace)::PadConverter::matchAndRewrite(mlir::tosa::PadOp, mlir::tosa::PadOpAdaptor, mlir::ConversionPatternRewriter&) const TosaToTensor.cpp:0:0
#14 0x000055e82dcc40c3 mlir::OpConversionPattern<mlir::tosa::PadOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x3f960c3)
#15 0x000055e82e47972a mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x474b72a)
#16 0x000055e83155c1f0 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/tmp/v0827/llvm-project/build/bin/mlir-opt+0x782e1f0)
#17 0x000055e82e482b5b (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#18 0x000055e82e48423e mlir::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x475623e)
#19 0x000055e82e4884cb mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x475a4cb)
#20 0x000055e82e4899e9 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x475b9e9)
#21 0x000055e82dcc2fab (anonymous namespace)::TosaToTensor::runOnOperation() TosaToTensorPass.cpp:0:0
#22 0x000055e82e3e0511 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x46b2511)
#23 0x000055e82e3e08e9 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x46b28e9)
#24 0x000055e82e3e1a14 mlir::PassManager::run(mlir::Operation*) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x46b3a14)
#25 0x000055e82e3d26bb performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#26 0x000055e82e3d3084 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPoolInterface*) MlirOptMain.cpp:0:0
#27 0x000055e82e3d3234 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&)::'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
#28 0x000055e82e4da1fe 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/tmp/v0827/llvm-project/build/bin/mlir-opt+0x47ac1fe)
#29 0x000055e82e3caad9 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x469cad9)
#30 0x000055e82e3d33a1 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x46a53a1)
#31 0x000055e82e3d3866 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x46a5866)
#32 0x000055e82b16e6eb main (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x14406eb)
#33 0x00007ff0cbe28083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#34 0x000055e82b227b0e _start (/data/tmp/v0827/llvm-project/build/bin/mlir-opt+0x14f9b0e)
Aborted (core dumped)
```
My git version is 9007864f72d07ee26d710fc10b1f918c628affa0.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWl9T4zgS_zTmRUVKlv_mgYcMTG6pGhYKuH24l1RbloN2FMknyUD201_JdhLLJBB2s7uzNzVAbLVa_et_anUExvClZOwiSL4EydUZNPZJ6YsXkMu1kstfQzgrVLm-uEZP8MyQfWKoUkKoFy6X6Obb9T2qtVpqWAXRLMBXAZ5ZZuxkJbjevglS3P9vH1eqbARDQfale0ZVI-nE_UJBjN3fMCB5QKY7kp4QIRSQhJ6HUb7gYYqC6AqB5vZpQpU0FqRFbgwF0QzxMO1nBSSptFotmGArJq1Z5O1Ey6RRemJqAXbMdtaPBtEleSWvyavjFn31xQBjF9MhK_dm_2oH-CGrdgNBNH_d_HjLtbKRBU_jvYBJBzeNPel8GUI8lNMb89kPBA1fHc-NFB7zOI06fsrApIZyp46AXB5Y3eHI3wNLLvesTabovFXUR1rayaeZbbTcPAfZVU-w_eB74-MTQ1CoZ-Z5M3rhQiAKjWEIENVgntDLE5OoMc7x_TCgarUCWR70d8H1uaotOj93Cju36ryDg3ahsm_eTJbtQt3qBdDvVgNliJuPVuq0PS_BQkDmdlUHZP6Mc5IFZC7E8-q81upXRm1A5u3qZC54EZD5FQfRvX7s9E3m1_fbp9vaTGhdB9EsDBPs1thEeTS7redKlPfMNMIOXm_M5j5_fXXi29u6e6yUKAOSH0XreM9KqK0TaepWnhnDtOVKoiDFxoLldOE8MIguubRpvLCt9-RclpwyMzH8N9YllTavRFe7cHhc12yyZPYe5PdN3iFpQFIUEKJBfkcrblZg6VNASEAyVAEXrJx0Kr_79nX28BWZplhxiwAVzRJpVittXXA_WVu31iLzgMyX3D41xYSqVW-Ht-bgxjTMBGSOQJaISyqaku3zgn75Bwv0OyqbVb31CTxB7b-73pNBL5s2Dj_hFUXDnXXmBZe9jxzlwCggEUb4FWOMk4TlpHC5oqpQC7Y1pVmb7sOd5tK24j86PAHJd0QaXhbKWM1g1ZriEnFpO8PkfwhBQL7g1zAhaVpVzhe2UocjqcMsi9EDX0oQP4EsBdOtM7VCdK83sYDbny0j0jPKqgpTGmUQE4wWC82MVZottO0xdAH3mqeLND4XXDav50vZdAO1fdIMyolRE9xJHMcEe_JGw2UKFmcYF0gDN-wI_tRxTlvOcYRx4XGOfc4kzZOpS5BHST7gTEieTD3OyZhztrXo0Twz4vNMfZ5RVpXp53hGUVWmHs9s6AtllORplZ8yp_2LSaY53SS06HLn-DOtYX3PqiC63DGZWat50VjmUlq3J54kDqKUQFrlHvbcw04YJdNwEL3f1JJTEH2e370vmQUuus__lvy_DZs3krr8_AUM8yB6LFxoDzcRpsFNCsjMjXxGLx75wwqE-IVRq_T1qhberOFO1U5sa4h26BKE2EPvPe63_gjGowZuu4f_MK3u2ZIrad6hupVsv0J8GrdVbUUfCOXeb1G0CN4X6KGhlBmj9Hsyzew3Bsb-3FpFlsaVZc2xq9zW1_IZNAe374zIZmblhi3TlUv8HYJ2qkd4qWTJnTeAEOuHmtFGgIVCHJ7hiy9eYG2G85zIe2bdsJXS669VxZwpP5brWlasLRoOEG80tGTWedpPSn2fy772aAcCkglYFSUELmDzv9__yRS1x4muZHpWvOwF-CFEO02uSwpGpqGX66Z-rqvKsEwHkF3UGss0K7fgf4ZVb-obVTJxRGLYOEPVe8KPYu8TKZVW4WDzdHWUV_6xpKpIFu_1o-GG-U8DHudlSLLYAx6Ogac4_wTwvxFJinMPCfGREMho5iH54vixjd_r9Xxc9hx27Pdg_gKiYafGl1U0o5mHL_LintI8JaFbDaSS65VqDJKwYqZuTyV9zr6D8lLJZ6btBnd7IpzJ8p69aG6ZX_YpA9t54_JgNLg91472vmemDVfyDqxlWvar6GG6Ro_KwKN67JtP49OIgxqPoMaYRp4p3yzk57QRjk02ew_7J5Pazuifx3-aJFZNU0wjz0MSLwLibJoReE-6z2tlN_KnA4yzuMgIeADTAcAoTBIaVvitTLO6FpyCVUe4_OcADt2i6k8KC926RqGUQB7rnkFfo7T6ebMRjJi4GuYPMzl07DmK74nyV5YTFlbYM17me2dOiqT4KH9tzfONLUHw3zZZTPSPR9ryo7jsG4g7sv1pKR8hiEnE9u2Vo5RLu0dP1vclOlzCnmx_SVISMc8-0xG6PKbF8ei2w-bjwsiDdEKvi7MEYloMURE8QjWdsukAFdS1WN-BthzEziafdqtH0EtmB9E0JJtr9RvbGLg398NB6h3TSyUrvjyldoopm3raCUcbLangw5gcbt_dG93IWzlQU9uMHpLdgdnTd3QC-EVbxHAShgNlDBs0t_Wjuq0dq20Lql98lNmM-fAcOCjSJYi14eYGJCxZW8-4VO7-NrL9jrE8aRc3TguShKFnhWishNzz0eOUcMdrJrgcp0RHusX2bmr5XVrxd0xjrqWxuu3bu9rwzZY6JBgcKzay34Fm0l7LSm2C44QpLy1IPnL_eKT4EMJ4JO9GA3t97c_JzWkRQeid0ohf2UUlSYsC1UxXSq9m9G3afftNhLFlN2SeQLNyUVu_hfugGk3ZzVIH0dcDmenm2_X9pZKWvdo3pr0RXN_W9gZ4n7aGlQUajO5PA-kIX4TzGNVaUWbMl6aq2u8xjoLXtG3cN_C6btmG1YC-ZBU0wi5KJphlh-f0PexjMQ_p-uqia8zo9ZtK8rH92uROKbFrzHX-9KHesrHeSBQf0fc-vmL86_R62LrT7QGOghAF0O-Lyj_wDfT0A_rJfvsfGTsdyaj3-sNYheRCyeVfq9h3RPo4YEYlfAlhNSzhTS24ncnybpR6_g50_8AgfZfC66dZzeXSnQsOvT5Z0Qs0rLyDDvEPOhEFKKf7w_H_LZmcqkCZUii9Ssq_PuE2ogjCgzrtK0f6BF2NOG62fugcHynkZEAhicCr1f0bFw5onqYnAfqXIcpT76uPyDuCFWHKUlagFXB5omsrcYxT5h3Kx9dASI7zCC0Wghd0YSxouxisf-wlixjnXjs0iv3LMSQrMEMd_1NBq6YF3iWXWaG0ZW0HjyrN2vtNrNzJ5N96u1mjJbeoP-wjbtAU4yxP4yojJc4YI2mZhbiiIS7CahrmNCU5VBXgyVl5EZXTaApn7CLMSJwRkkfJ2dNFEYc0idJphGlZ5XkVxhSSpCrCPMYQxfkZvyDYaYpkOIxxlEyKKk3yKs7SkMYYkiqIMVsBFxOnhonSy7P2btdFiNMwzc8EFEyY9tYtId0lPBIkV2f6olVb0SxNEGPBjTU7DpZb0d7UbSckV-hyfDFxfEPrrNHi4vffQuuFfb4g_wsAAP__LnOETw">