<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/131087>131087</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] Assertion failure in 'tosa-to-linalg': `(*this).hasRank() && "cannot query rank of unranked shaped type"'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          sweead
      </td>
    </tr>
</table>

<pre>
    Test commit: https://github.com/llvm/llvm-project/commit/9e91725fd4d4ee30e98ab2682f93b423590a4ade

Steps to reproduce:
```shell
mlir-opt test.mlir --pass-pipeline="builtin.module(func.func(tosa-to-linalg))"
```
Test case:
```mlir
  func.func @main(%arg0: tensor<*xf32>)  {
    %0 = tosa.reduce_sum %arg0 {axis = 0 : i32} : (tensor<*xf32>) -> tensor<*xf32>
 return
  }
```
Crash trace:
```console
mlir-opt: /home/workdir/llvm-project/build/tools/mlir/include/mlir/IR/BuiltinTypeInterfaces.h.inc:232: int64_t mlir::ShapedType::getRank() const: Assertion `(*this).hasRank() && "cannot query rank of unranked shaped type"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/workdir/llvm-project/build/bin/./mlir-opt test.mlir --pass-pipeline=builtin.module(func.func(tosa-to-linalg))
 #0 0x00005558bfcc2228 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x12d1228)
 #1 0x00005558bfcbfd4e llvm::sys::RunSignalHandlers() (/home/workdir/llvm-project/build/bin/./mlir-opt+0x12ced4e)
 #2 0x00005558bfcc2c31 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007fe001f2e520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007fe001f829fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007fe001f2e476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007fe001f147f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007fe001f1471b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007fe001f25e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x00005558c2cc3d6a (anonymous namespace)::ReduceConverter<mlir::tosa::ReduceSumOp>::matchAndRewrite(mlir::tosa::ReduceSumOp, mlir::PatternRewriter&) const TosaToLinalg.cpp:0:0
#10 0x00005558c5565d52 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
#11 0x00005558c5562a4f 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&)>) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x6b71a4f)
#12 0x00005558c2e1aa1d (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#13 0x00005558c2e19ab7 mlir::OperationConverter::convert(mlir::ConversionPatternRewriter&, mlir::Operation*) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x4428ab7)
#14 0x00005558c2e1ac5f mlir::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x4429c5f)
#15 0x00005558c2e20fce mlir::applyFullConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x442ffce)
#16 0x00005558c2c934b0 (anonymous namespace)::TosaToLinalg::runOnOperation() TosaToLinalgPass.cpp:0:0
#17 0x00005558c2db8cd3 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43c7cd3)
#18 0x00005558c2db9572 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43c8572)
#19 0x00005558c2dbf9be 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
#20 0x00005558c2dbadcb mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43c9dcb)
#21 0x00005558c2db8e2c mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43c7e2c)
#22 0x00005558c2db9572 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43c8572)
#23 0x00005558c2dbbd4e mlir::PassManager::run(mlir::Operation*) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43cad4e)
#24 0x00005558c2db42cb performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#25 0x00005558c2db3f23 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
#26 0x00005558c2e5f475 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) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x446e475)
#27 0x00005558c2dadb82 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43bcb82)
#28 0x00005558c2dade33 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43bce33)
#29 0x00005558c2dae042 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43bd042)
#30 0x00005558bfca19af main (/home/workdir/llvm-project/build/bin/./mlir-opt+0x12b09af)
#31 0x00007fe001f15d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#32 0x00007fe001f15e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#33 0x00005558bfca1505 _start (/home/workdir/llvm-project/build/bin/./mlir-opt+0x12b0505)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWt1u27gSfhrmhohBUZIlXeRCdWKcAi0aJLk3KHJk65QmtSTVJvv0B5RkS5adpN51uziLAmltS-T8fN_McESRWVutFcANij-g-PaKNW6jzY39DsDEVaHFy80TWIe53m4rh8Icb5yrLQpzRJeILteV2zTFjOstokspv-0-rmuj_wvcIbrsp9JlBlmQ0LgUkYgAQgJZygo6T2mZhUVEwzgjLGICEMkRyR8d1BY7jQ3URouGg1dKcjQn3Z_dgJSI5FtZmWtdO-zAupn_ha-va2btdV3VICsFKLxFlBZNJV2lZlstGgmIpmWj-Mz_h2jqtGXXTl_LSjG5RjRr_-hYHyJ5BwWzU1O8UkRyjPciMYrIllUK0RTRmJk18dg5UFYbFC4QzZ_LkKLwDtEMY5R8aKdjjGhMMApvsTdoZsD7vbLNFvdS_FD2XNl2jB-Z4yqkKLltv3pHTqu4RuHdSfUkxwZcY1RrAEpuJy4vDLMb7Aw7wp9rZbWEEQOdCcuN3gKiy-_afBWVOQ4IT4RAdOm0lhbRZYseXVaKy0bAcOHjA6LLDx1rTy81fFQOTMk42NlmVimOwpx6J3JcKTePVg63E8MchfnjhtUg_Kzu9xrcA1NfWzoy7E1vrc2tBeMqrbD3yd_M3aayiGazDbOjGYjOEZ1jRClnSmmH_2jAvGDD1FesS9wo_w0Etq1e7LxiShFNcMkqCWKGSH7_6S5_vMO2KbaVwwwXzdoHtzbOh_nZeVVZ24DHDzMlcI8edhvAvOWsYPxry9uszSbGv2LRbOuORTJDJLs3em3YFjOzbragnD2TwMLH93LWM_ZuDp6fgMSbExJMngkhJI7jtCg5p5SmuMWkpda-2O7LvamUax19asOVpsMgw76vtHUG2LalcuFjpiM2_VseI_qBPAdUBLQNlN7k4NDkohQRnDL5oVGP1Vox-R-mhARj9-F2Eas4iAgGq-gUSB4G-EA_ommLywLbal2pUq8corn__U1Xov2a9TPsjNc-mEj7r1MQ9gqSEggJSgoxJb0vsioQXT6n89U88iQ3z9dr1XQ3-Mzq2by1OaIxJYPF0aHAlGYlx7XbGGBi9bWS8jzp2Twr-SA9npobJXO8tq1755odJfNB8PxQcBAlZYhZ4TP9LLE0TcpwEJsciQ2KswUGxSAwnQAQQzY_T2CYQTZyPBtFGKech2LOvECmtHrZ6sZixbZg6zY9sz4H2kVuodU3MA788jSUcV8VxqMem-2X2i9b7bUtc3yTK_EA303lfMK_N5MuRmvEPXMOjOpnm7Yu9GsDftKWPelPbTGaBLpP73FJ4nE8j0VM2xQZJbkvbH5pWRkoUbho73bpvXeAMyl9mV6V6sDt3rK8rmXFmdPmfX-_1GCYV9fn69tuLl63s9C6Df4jAf2q2aLUdhVvCNk5-7eEDDc-6XXFmXwA20j3Y3L74EI0WpH2Qiq18usKPgL3BL_BhF_KovIY0t_8_A1-LrPGzYskYFHZVSDPHD2oQBAwFoj3KtCem0-wZrL6E3rbZf_zB4nsSpittDpdWW4rJoG7YdiJwAsn5mesSPAJ5aNy2RaS7ueBoW-bszgltV_gL8JMFNGUFcnATDRlhsflj7u2v20P-rrcGPby0IbjK_5cMNiiiGY8HgVbfOgSJSWHkUusruXLspFyoOLsUHpiZg1ulD7jYUuj_4Qdrz3Lj6-OHoQutCqr9SVxKUsOAy7zwzYgC6OCvJeE4xW379kb9UWNMGo74_Gwe2anXajXnhxoF0XKRTiCQYBjldwx8KS_1F5OLli9L-SmUZMiZu0RR6-zlysmX2xlPzPF1j7fFthXbf_ZqHa_RVz08SMKecJFOOCfThDI4oSejcD97sntMGT90L1jbxaSvwTJ4cpo7UdlnWmfTrU5sXSOB3Sauxu97ffMgHIfVal3OXHBAhfyNE7ogHo2Qb3MCsCscbrrDAeza2aYlCCX2twxvkHhYrVaq2bFn5-7AauV0mbL5MqX666_WJxL3yh1cvui-MdtLRFNO9T3C9_9Zw9OD6x1orv-DfivUDrSyKTU_Fd46lvvu76z-RmKRg3nIP7zp48PC60cPO8ep38T_k8Q_hv1f1eatZuyo2uJZNtCMEQTRNPfZP96sg_40HUPdL_p8ZM9n3dV9zft_xjt_d7Z6backkl7xAQvLlwbLtbYZYIX-8aOBtMHCqD8X_9AAZQPCNDfDxS__oGChhPUCxHBxNid-yej7Ofs64Sc7d8qeSujiZUR5QWuwZTabHN-vGVz_CpuX7rshhkQq9qZg-3FR90YDp_XBoV3r-xtHHfYo3uyMl9q95lV_cbHeDMSj-6eKFrxxLmwpCF-bePzr-yU7n1vVPVHA0e-f4atNi8fmrLsgnw_XkDJGulWAiQ4eH3Ovg17nYH3X0iMQPpRLn-6P4N1_cbqA6wr68zLcXC8FQBHj23de4Jf6ckbzLwTnocbbRCXURKPHLe1rFyuxL3RHKzd2fqPBN3_YUq8OWJ879GZSq0foHz18sV2WucQJfFQfCd7nUwUKT0d-f-2vL3UalbwIh2tuekUUAjDVwHtGwy-YV0rkZ8bFu-hcUEvIRw2iOlkq5IBiV4Pm3O8_FXuCBINpE1PCLEgYyXeskpd6iBNQTI2vPfZH-_ZHcSIRXbmOReaiYwMAulUIEQEr1Z-zso6Ztxq5M0Pq4BopCKcYhSTGHfCL4dSTHa1aXdK8ErchCILM3YFN0ESBWkcUBJdbW6ikvKCFcUcSBCRJEhpmsQJxJRwUfIyvapuKKExCYOQJGFIw1khsjKYxykXgQgZCBQR2LJKzrydM23WV-2RuJsgDEiaXElWgLTtwVZKuyOFFMW3V-am9ato1hZFRFbW2UGCq5xsD8P6hhLFt6MTgiWrZGMAtzwk0_NqSXt27icdIrxqjLz56wcEe0C-3dD_BQAA___4Dq0U">