<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/119658>119658</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[mlir] -test-math-to-vcix crashes in TestMathToVCIXConversion.cpp
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Emilyaxe
</td>
</tr>
</table>
<pre>
git version: 953838dceaf
system: `Ubuntu 18.04.6 LTS`
reproduce with: `mlir-opt -test-math-to-vcix crashes a.mlir`
a.mlir:
```
#map = affine_map<(d0, d1, d2) -> (0, d1, d2)>
#map1 = affine_map<(d0, d1, d2) -> (d0, d1, d2)>
module {
func.func private @printMemrefI32(tensor<*xi32>)
func.func private @printMemrefF32(tensor<*xf32>)
func.func @main() {
%cst = arith.constant dense<7.988000e+03> : tensor<1x5x14xf32>
%0 = tensor.empty() : tensor<1x5x14xf32>
%1 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel"]} ins(%cst : tensor<1x5x14xf32>) outs(%0 : tensor<1x5x14xf32>) {
^bb0(%in: f32, %out: f32):
%2 = math.cos %in : f32
linalg.yield %2 : f32
} -> tensor<1x5x14xf32>
%cast = tensor.cast %1 : tensor<1x5x14xf32> to tensor<*xf32>
call @printMemrefF32(%cast) : (tensor<*xf32>) -> ()
return
}
}
```
stack trace:
```
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/llvm/include/llvm/Support/Casting.h:566: decltype(auto) llvm::cast(const From &) [To = mlir::VectorType, From = mlir::Type]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
#0 0x00005649b4000158 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1136158)
#1 0x00005649b3ffdc6e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1133c6e)
#2 0x00005649b4000aed SignalHandler(int) Signals.cpp:0:0
#3 0x00007f10e58ab420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f10e4ee800b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f10e4ec7859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f10e4ec7729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f10e4ec7729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f10e4ed8fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#9 0x00005649b6ed206b mlir::(anonymous namespace)::legalizeVectorType(mlir::Type const&) TestMathToVCIXConversion.cpp:0:0
#10 0x00005649b6ed1981 mlir::(anonymous namespace)::MathCosToVCIX::matchAndRewrite(mlir::math::CosOp, mlir::PatternRewriter&) const TestMathToVCIXConversion.cpp:0:0
#11 0x00005649b9f68331 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
#12 0x00005649b9f64ffb 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+0x709affb)
#13 0x00005649b74bbc9f (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#14 0x00005649b74b862f mlir::applyPatternsAndFoldGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x45ee62f)
#15 0x00005649b6ed128b mlir::(anonymous namespace)::TestMathToVCIX::runOnOperation() TestMathToVCIXConversion.cpp:0:0
#16 0x00005649b74412b6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x45772b6)
#17 0x00005649b7441be0 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+0x4577be0)
#18 0x00005649b7446f8e 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
#19 0x00005649b7447eee std::_Function_handler<void (), llvm::LogicalResult mlir::failableParallelForEach<__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>>>, 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>>>&&)>(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'()>::_M_invoke(std::_Any_data const&) Pass.cpp:0:0
#20 0x00005649b7447988 std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>>::_M_invoke(std::_Any_data const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x457d988)
#21 0x00005649b74478e7 std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x457d8e7)
#22 0x00007f10e58a84df __pthread_once_slow /build/glibc-LcI20x/glibc-2.31/nptl/pthread_once.c:118:7
#23 0x00005649b7447c69 std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<std::function<void ()>>>, void>::_M_complete_async() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x457dc69)
#24 0x00005649b7447df5 std::__basic_future<void>::wait() const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x457ddf5)
#25 0x00005649ba0ca7f5 llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x72007f5)
#26 0x00005649ba0cbf4b void* llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*) ThreadPool.cpp:0:0
#27 0x00007f10e589f609 start_thread /build/glibc-LcI20x/glibc-2.31/nptl/pthread_create.c:478:7
#28 0x00007f10e4fc4353 __clone /build/glibc-LcI20x/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97:0
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW19z3CgS_zT4hfIUQv8f_KCMPXuuSiqp2Je7NxWS0JgLAh0gZ2Y__RUgzUgTx3aS825q11W7jgVN__t1N42EidZsKyi9APEbEF-ekcHcSXVx1TG-Jzt6Vslmf7FlBt5TpZkUICxgHodZmDU1JS1ABUCF3mtDOzsFEvTPahBmgEG2QtEqgW9vb0CCPJ2ivZLNUFP4hZm7kb7jTJ3L3sBzQ7U574i5Ozfy_L5mO1grou-ohmRlqQ58ACrGEcsCFXbC_ececNiRHoLwEpK2ZYKWHelBuAY4axDAa9gE7icGOIfnILyCAGenEyC8OrAKvpPXVzOeWSebgVMI0jcAFRC2g6hX9gfsFbsnhkIQoV4xYd7RTtH2OsQAZ4YKLZWTWOxYiC0rnFsGT63ffL2-na-fMQAR6ggTAGfWjFFBgONaG2-6YuZuVUuhDREGNlRoCsJ1usqzDCFEAX6DQmd8WMCDxGAX74JoEmolQssUOZaeakW73uwnuc9Y7KHgTBC-XW2poIrVVmEmGrpjYmvh0Y7GhrNDz6Iw4gjiS_vEDFXESFWafU9n1LgninBOOcDYr3piJL4E6SVkQjsLRnd90wicQzmYkRY9QTlFCYQgvqoq5Fcxl36WyikTy8EcBnIQFuMS5yrsDLPZtKqlhm41nKgnutGTe0Z5My2aU1j7XFg_BUxNxlgZgfXPHrBv2QmNhA_Fp2daE84fDOlR2hQy3wzyQz5OAQ-homZQwj2A9NImuP95UkG0IfVnaBSpqXfqKcFUsrz8TUMMAXijf98DvHn39vojwBvO77tzRTklmk6PvZL_obUZHwHeMFHzoaHHgZuh76WyFGuiDRPbla2ScZJYSQ2tuQ1ZgDMyGGlNdMvCAoSFd0nmkhRulOwgwInzUfzmVvpY8AUThMUnWhupbh2v9Ui9IHBT8aWVWmhNlWFS2FrNNAHh-lY6D2efCHcSrKDEJodTIlzf7v28nSRqO3RUGChbyEQtu54YVnEKvSWBy6wUtoRx2qwAKj68vSpurqAeqo4ZSGA1bKGi1is2Xu6M6bXVEW8A3myZuRuqVS27owtPPM20HqgGeAOJaODocGjuqN9bYEXqzw7plS96IYJohxBCcRLlVYQQCuJs5me91_6XDzYub2yk3LpAwdmRSJEvpdRGUdI556whEz5grVN-IF6qgfHG_mur9OYQfvgN2gVBmATxFOQAh8HcgLBtmzqhDxnwcRA3bCsI_wcRDadKT3X4RXQM64QedcSnTia0gQttAM5Gn_lhvar7HoQFcv97LuHIJW0DROOMVBFGsCwV1UYqWioz2sJZBfBmlyVlEp1zJobd-VYMfqI3d4qSZqXlCnldowijo6bRXEZEaYZQBRVhmsKZzVvOqvr8bX2N0e7wiFdhYF3o9Ad4s1rZp71uaG8DchBs5wfunSpisI-O9aq2WR-AsAhGNeKlGnWaxTkklXQ2Pk8N03g_uFVOQmYlpKOE5FRCinO4pab0Gpeabm0el_eED8-2nQljLeeSNJ3e1sTLjZHdrLJRcPqQ4FLw0q4qG2lbk5-Tl6c2asJoFJgtBTZZ2yTPiJTaxkjiYiQM2yY5xkg-j-aENhgl1ayY2notpNh3ctBQkI7q3hWM3E9zuiWc_U7nRTlblmLoyvpY0G-pNu-IubuVn9bX_15LMXbmJwliKwE6USzIs-D5ilkha6m9HD_UEVPfFaL5SL8oZpaK2lbD_7aW-r3ru46TH4gxVIlxnRpN8bvVdxi0qG15m2RhGMB7yZpZgbMtrd2vSkVbEK7d7NgFhFfTZsm5LfxlK0C4_krLou85q22L-LTV73vbTNqDES6eNnn9bT0rKTlcsB4ZzMF3--ojTCZjf4rJceKt3LKa8I9UD9w8j28-hVZUIt8FcCm2FuyvnPsAvvgE36htq69d-orPT-DzEvt7inLStpWviBbHcI5jGlVVnbfwiXLzm6K02S9RuVTsno4W9UrWVOt_SfWZM9fsWmu-veqB8IpO1MoS3M4igvQ9n1jpQjQbyRvHn_H9wrkf6dZFVLKMqI2Sv9NJiZHPDTUzDObUXvORei1Fy7aWwMaZi9UXQSqKKU1we0QqPt0icPYde9eydI_N7yDei1naZd-5aSVLkKIAV8lMo4YawviU3Lfyff-BaF00pD_UAzWIk1zQ-qv0_3ZhKAThe830OyLI1haGCZQ1HIR7W9a8YD8fxWmKq-SIUHrqj4qi7_bHB9ZTzsRpbbSkBzOT_7uDluVW62uhjXLHQakeqMdzAi_ZT4y6fyCKCnMtWjll1MtlSZpWFB0xyE4wSNqMQnsI983H0Yjp9dBGqitS34FwXZZbMZT1bucJylJI1RFeTm-hFg3I88CcpVeh96K-7noOcOYxyA_YvrOuGt2sTePH712X-eJCZxIJ57L-Iyy13d3VuHm-hKBZT3Nkb0NtLYWhOzO6-hXwPwPwV6__tdLMvVOcjaWcdFVDAE4Bzl7B_uPBXuAh-9HR47n6hS1PfNV9hf1Pg318VWMZP9Cy5yftUUopPWpdbqbz6934bnf5VmZx1l0eaY9GtoRxUnHbBL42WH96VKxf-95fE5bXvvdvBvir1_9aafba9_5iYCezl-ev9e8XA-fV63-r-jf_hlu-K5m4l58pwNnxqFGIfdkQQxZfzB8-tWB0emrJs-zxU8thchDsvwMte7MYLct2MIOiZUU0HYf8QcaPzGF7itaPXFJOjRV9NTssPcrjlujPpabG_JzC4xFthPuHtV4s9jdtRpprh91CGzP0nM4Hpu-eD3zFnx9DpoHvjIqX-W7Q5Fl2-G6Ag9MQy2j6uDdvDDF-4BM-mNRIC-ncpJlrfoGgtFgUf8THy7TJaHp0Lz65AJZFTQvLcrzTVUpR01Jz-eW514dE764Pzde7C0RBkI03pazU8BTUOskf9-ElbalStCm1RXcR8y-ZE2P01LLrLWIlsaX35W75WXjqJD_CE506qmnjuaMqolk9umtWcNzsF8KmT_z-1dMLKdy08VHhxcdwgmqStvHs3dSNaW4dXh9smLuh8VKCrbp6cQX0SGjnflNy6F8uMVJsc2BmSHJiSNVGlY8LXMwMmkffqLCSu_1DAfioF7ZKfjlc2Jzv5mNMZqNodxPgsPaBLTldJnTeJsimFlGm9Lr-YCbXihLjczlK57m8vAvY1lEYh7Asay7Fsy85dkzXz73e6a8WArxxElY37nbi5ID5LfOz5iJs8jAnZ_QiSMMwT7Msi87uLuomiOoqawLUZE1cRXVMmyCvohiRPA5QfcYuMMJRgAOMoihD0SpPQ9pSEqIgqAlNExAh2hHGVxbTlVTbM3dJ-iII8iTOzjipKNfT3wOpCxeG1bDVIEKcaaOP6wwz3P3lkOsH48vH_oSHiUcvgZwNil_8-O3uUff7C_y_AAAA__9uOGVb">