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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] Converting tosa to linalg crashed with assertion failure `(*this).hasRank() && "cannot query rank of unranked shaped type"'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Test on commit: https://github.com/llvm/llvm-project/commit/22c0ce96912f55f48ba4535800bacc0c48fe9832
The same crash occurred in [llvm16](https://github.com/llvm/llvm-project/tree/release/16.x)

steps to reproduce:
```
mlir-opt test.mlir -pass-pipeline="builtin.module(func.func(tosa-to-linalg))" 
```
test case:
```
func.func @test_multiple(%arg0 : tensor<4xf32>, %arg1 : tensor<1xf32>, %arg2 : tensor<f32>) -> tensor<*xf32> {
  // CHECK: [[ADD:%.+]] = "tosa.add"(%arg0, %arg1) : (tensor<4xf32>, tensor<1xf32>) -> tensor<4xf32>
  %0 = "tosa.add"(%arg0, %arg1) : (tensor<4xf32>, tensor<1xf32>) -> tensor<*xf32>

  // CHECK: [[LOG:%.+]] = "tosa.log"(%0) : (tensor<4xf32>) -> tensor<4xf32>
  %1 = "tosa.log"(%0) : (tensor<*xf32>) -> tensor<*xf32>

  // CHECK: [[SUB:%.+]] = "tosa.sub"(%0, %arg2) : (tensor<4xf32>, tensor<f32>) -> tensor<4xf32>
  %2 = "tosa.sub"(%0, %arg2) : (tensor<*xf32>, tensor<f32>) -> tensor<*xf32>
  return %0 : tensor<*xf32>
}
```
crash trace:
```
mlir-opt: /home/verify/llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/tools/mlir/include/mlir/IR/BuiltinTypeInterfaces.h.inc:154: 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: llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt test.mlir -pass-pipeline=builtin.module(func.func(tosa-to-linalg))
 #0 0x000055babc007aaa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x221aaa)
 #1 0x000055babc004fac SignalHandler(int) Signals.cpp:0:0
 #2 0x00007ff1821c1980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007ff1812b9e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007ff1812bb7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007ff1812ab3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007ff1812ab472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000055babc425259 (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x63f259)
 #8 0x000055babd461b23 elementwiseMatchAndRewriteHelper(mlir::Operation*, mlir::PatternRewriter&) TosaToLinalg.cpp:0:0
 #9 0x000055babcfa9787 mlir::detail::OpOrInterfaceRewritePatternBase<mlir::tosa::AddOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x11c3787)
#10 0x000055babdc90869 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1eaa869)
#11 0x000055babd92d297 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) DialectConversion.cpp:0:0
#12 0x000055babd92dce7 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) DialectConversion.cpp:0:0
#13 0x000055babd9319af mlir::applyFullConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1b4b9af)
#14 0x000055babd44a52b (anonymous namespace)::TosaToLinalg::runOnOperation() TosaToLinalgPass.cpp:0:0
#15 0x000055babd8b1e59 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acbe59)
#16 0x000055babd8b217a mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acc17a)
#17 0x000055babd8b24f8 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#18 0x000055babd8b1635 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acb635)
#19 0x000055babd8b1dca mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acbdca)
#20 0x000055babd8b2cb3 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.495) Pass.cpp:0:0
#21 0x000055babd8b339d mlir::PassManager::run(mlir::Operation*) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1acd39d)
#22 0x000055babd8a63a3 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#23 0x000055babd8a6ad9 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#24 0x000055babd8a6e01 mlir::LogicalResult llvm::function_ref<mlir::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
#25 0x000055babd96b9b0 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1b859b0)
#26 0x000055babd8a3ae3 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1abdae3)
#27 0x000055babd8a71e8 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1ac11e8)
#28 0x000055babbfd3ec0 main (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x1edec0)
#29 0x00007ff18129cc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#30 0x000055babbfe6b5a _start (llvm-project-22c0ce96912f55f48ba4535800bacc0c48fe9832/build/bin/mlir-opt+0x200b5a)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltz27gV_jXwC8YaErw_-IG2rG7aeOyx3T7siwYEDyU0EMAFwMTaX98BqAspy4m8idLdTjOOTZDAuX3nBoLUGL6QAFcouUbJ9IJ2dqn01TVQ8Su0y7W-qFS9vnoGY7GSmKnVilsUlXhpbWtQVCIyQ2S24HbZVROmVojMhPi8_XPZavVvYBaR2WYpmRHCAgZFWoSkSZImzisaJ1GSB0FFGQtYnDdQ5BFBwRQF5fMSsKErwExTs8SKsU5rqDGXGCXXjkeYomSKSP5uiawGQGSmQQA17ipMJy-IFD3j_rex0BpsFdbQalV3DByHfkIabH78cCW4vlStxRaMnbgRvmypMZctb0FwCSiaIkKqjgvL5WSl6k4AInnTSTZxvxDJrTL00qpLwSUVCyeK-yH4KEPHBzMn-RsS7ShjFAdu9nzVCctbzxaRhOpFgB2WFqRRGkU38UsTERTdInKD-wnheEL4agIZT9g-LvAlim739xEpN0sxyq57-TDuocI3v9ze_MOR8U54XU6nHsZkgohzSpRMMYqmGBHiDDShdY0I2eswkNYx9oRIflSpI4ocSrqbvpMxCX4i-72hhm74lqk-3v_tq6YSarGTNfi6dCfYIXwf7YEq36nm0z-vv6qm6aqhKDvfPBmPdxiB_GHOQ3ucwPvQRBhrsJ2WW48sv2LNbHo0I_Q51Gr67TTWCz9bqpXLjJ9B82Z9kEIvT87kZObSXu1yrlLCIDJzbBCZcclEV8P-xodHRGbXfY58XrfwQVrQDWVgJssJlwxFZZjETjgubRrPLfYLoxJF5dOStlC7Vf14AfaRyk8enAIzJY3XqjQGtOVKYqe0e1jaJTeIFJMlNYMViKSIpA5qRqVUFv_WgV5jTeUnrBrcSXcFNTaeL7aOsfOFDDeUC6gnvUUfPt6WT7fYdNWKW0xx1S1cNVHaurry7qrFjenAmRBT6cqgNyC2y22FrCj75BHesH-ylH3Cdbdqd5AHE-z_PWi10HSFqV50K5DWyYG_F-GKyw2c36qG7y-FfRwgEgU4eAmCIEiSilYsCDJKqZe8R96sTX_xoLm03gLP3ulJvp-k6Ze5MlYDXXmkb5xL9bjnP9YIiFwHL4SElNKRFuGBFnFDGX7iC0nFL1TWAjQi-Uao_raZsNbhGPj_O0JkQyhrmjAnIQuLPMDzuQZjlYa5tti79EzwCpHZS57O09hZtnu5XMiuf9DapQZaT4yaBF7gkBR5MJI3GrIJSVVAnmFNuQE80H0heMUub_719y-_VrshmZAMkZnxWiAym0zcaG1qaJ0vd5K_9Dc-e2lk54ae9MTFfBKOFY4PJKmyJsS0Ul7T0ySxdW8Nv8ozyQ-YJGMmtIoaiudz6vPH3MX4vKKn696v2130LIsxy_SQZZyRE7BjDrXUoxYFcUZGqGUjL4tJQpJz-XgaNSQZR2o-5F7HaViRCIMAl2--cAN31LJlKetH-KK5hV9AtN7t92n9vgVNXb5GpHRRun_yQK0FLTdLtY_iAj8rQ5_VR583jodLMbJIQ4sszwZka7CUiy3ze72rQRtGG7bXvvW-2a9zKau_Kuv6vnXV2I9WYxW_Szlfxc6EXhiyKMuz_Q6IROEo0dasCPK0eC1k2baCM2qV_tEa3wyyuqsMbuFcQ4Oim0opgUekNwQ2pd4bbNNsvUnks-L1dxPZL_6oFpxR8QimE_Y0uueKxRAozdNihOao4NQFqUmROfZUKrleqc5gSVdgWl8qiwO8PsKCCv47bPQRm-GJ4N4o-Rm04Uoed-wppwKY3U97HbpOA3KoAYPTNeiJ260GrB_uHptRe1BqTdePB_iO9Hu3a005XUhlLGcj_E9UPRqrHoUFbQYGpm0r1rNOiD2dd0PzTPUC7Cbw9hNmWv0Ocpz9nsAOXflcTlzFVUGbkRPH44oS04RU33KBYU3YdH-dvJcDm-SHpeOBmiPdlhMgGQmQVyEkxZvl41ndt45UWdN2lx91Jw9ygzGvYHkbsFJSsTbc3FFJFy6CbrBLhu5vJ_37vPq8vWxIWQXJOLekB1YhYUbfbZWH7e5g7Llu6k7Z9IebaVyEjPkgjdV-R6T0kSo1nNBz7h9sZH-gGqT9IBu1DZDyrEiwMKMjJLJDJOImfzcSg-AozVqyD6tWIJL3BtxEFSKZoKuqpsg1uPk5WNy3D3fOlNuE6e4pv8pBk_t94U9gvOm73s4J-WFOSKPkB9v8jLGcRsnIg4pDbWr2_lj-y2e4mo3iigSHccWq6P8ZbpThJn7catVO4sL51NshQ8IDc0ZRUR9IsdXrqEuNzXJGR6ijoh45wrgJzWka0Qi3oBulVyV73Uq-ftNkbL15U7WkGup5azWKbvYrnlSnGdwtNIpuB23WEKW7jx8eb5S08GJfIXgnuL5v7R3lrudt-GLUqg2eHkcmOtSP1gVutWJgzHXXNH6DfpJ6neS_dfBKvTtYKb3ekhrMr6GhnbDzGgRYeHuN21rfnq7zcN6m236EBTdWr1_tMp_9a7AHH0blSeaKD80FQYjf2hP-kU3kzzPn26AWu9cZjApRUfZp3siR2AM7_Qnd4zjsJ4bM0XbnT4MKyYWSi59r2K-I9O2AGW-girQqqmAAhWkFt6WsHw4yzn9Du79gkH51xr5BOHNXWeVJUQWjsnmwQ6QRheh4BP6v5Y-z9SZVTSEaGflg80ezEPI3jbzpDdmS9l1gOXaeJ6u5XDxCc4opzr5LCUPIR6qO9lxVU0fAAryiXJ7tjWoNbOzSxfi8pmAsz_B8LnjF5sZSbecbeU46IWKm2x6N9Zf-oafjT4uiOB4l0vExaNVAWiUU94zPdYoZBFWy3xaVldIW_GtOpjT4Y2YYNMvbbwsu6quoLqKCXsBVmGZ5lCd5kV4sr_KmqFhF6jStU0bCvMmymDVB2jRNE-RVeMGvSECiIAqKMA_zMJ00jEVRkuUAUU7ChqE4gBXlYuK0nSi9uPAn5FdpGAXxhaAVCOO_biNEwhfsHyJCUDK90FfeQlW3MCgOBDfW7KlYboX_LM412iiZ4s3bYy4X2CpDsVW4P5zuD96hxl-4XWK6-7ygoVx0Gs72mcFFp8XVH_9-wBvoPwEAAP__4dkb4g">