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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]`-test-spirv-module-combiner` pass crashed with Assertion Failure `idx < size()' 
        </td>
    </tr>

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

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

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

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

Steps to reproduce:
```
mlir-opt test.mlir -test-spirv-module-combiner
```
Test case:
```
module {
 func.func @main(%arg0: tensor<87x94x27xi8>, %arg1: tensor<1x1x27xi8>) -> tensor<87x94x27xi8> {
    %0 = "tosa.add"(%arg0, %arg1) : (tensor<87x94x27xi8>, tensor<1x1x27xi8>) -> tensor<87x94x27xi8>
    return %0 : tensor<87x94x27xi8>
  }
}
```
Crash trace:
```
mlir-opt: /home/ty/llvm-project/llvm/include/llvm/ADT/SmallVector.h:294: T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::operator[](llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::size_type) [with T = mlir::spirv::ModuleOp; <template-parameter-1-2> = void; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::reference = mlir::spirv::ModuleOp&; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::size_type = long unsigned int]: Assertion `idx < size()' 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/ty/llvm-project/build/bin/mlir-opt test.mlir -test-spirv-module-combiner
 #0 0x000055edf9a219da llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ty/llvm-project/build/bin/mlir-opt+0xd619da)
 #1 0x000055edf9a1eb4c SignalHandler(int) Signals.cpp:0:0
 #2 0x00007ff0d3c0e980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #3 0x00007ff0d28bfe87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #4 0x00007ff0d28c17f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #5 0x00007ff0d28b13fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #6 0x00007ff0d28b1472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #7 0x000055edfb47afb7 (anonymous namespace)::TestModuleCombinerPass::runOnOperation() TestModuleCombiner.cpp:0:0
 #8 0x000055edfb8c80ae mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c080ae)
 #9 0x000055edfb8c8f03 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (.constprop.510) Pass.cpp:0:0
#10 0x000055edfb8c958d mlir::PassManager::run(mlir::Operation*) (/home/ty/llvm-project/build/bin/mlir-opt+0x2c0958d)
#11 0x000055edfb8bb50f performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#12 0x000055edfb8bbc91 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
#13 0x000055edfb8bc9c1 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
#14 0x000055edfb99bf70 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) (/home/ty/llvm-project/build/bin/mlir-opt+0x2cdbf70)
#15 0x000055edfb8b4f63 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/ty/llvm-project/build/bin/mlir-opt+0x2bf4f63)
#16 0x000055edfb8ba3be mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/ty/llvm-project/build/bin/mlir-opt+0x2bfa3be)
#17 0x000055edf99e44f0 main (/home/ty/llvm-project/build/bin/mlir-opt+0xd244f0)
#18 0x00007ff0d28a2c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#19 0x000055edf99f719a _start (/home/ty/llvm-project/build/bin/mlir-opt+0xd3719a)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWU9v2zoS_zTMhbBAkZIlHXxwnBjbRYMEbfAO72JQ1MjmPonUklRr76dfkHIcyUlat-m-fbtAG4nicOY3fzmkubVyqwAWKL1G6c0V791Om8U18OZ36HYHc1Xq6rB4BOuw0G0rHWJLvHOus4gtEV0jut5Kt-vLSOgW0XXTfHl6zDqj_wHCIbo-LqXrsqA5K0SRJjlP01JknNF5VpK0imNRVIVIGSmzgiJyg8hy-PvZQWex09hAZ3TVC_CiB4I5Of4Lw7aRZqY7hx1YF_kRnvnXme2k-TJrddU3MBO6LaUC8yqLQVNu35YRmGCUXQ9jXPdKRP4PRglpuVSI5oim3GyJt5UDZbVBbJVn-yLZ02wvc8RuEV3hgSqeUMX7eERT4Blit2_xGIHA2HMjGLEbjCh12vKIVxWidIRmJJIW2ItFNP8Gvp8C9QzIgOuNesL1tiWOC1B2czT46WVq-ZXhdoed4d8PgEG39U63gOjaHV5G5DFOpRJNX8Hzh-XNI6Lrzy1vmt9AOG2iHWJLWiSe5SOicxwI2RKx5YjqEdqu4Q5Wum21Qmz1GKzNVu44Meu44S04MLN4RoPz2O3ARndguNNmSEFE818uwcp_wcYdOgh-T6-_SrfDjyFYvMWORD5Hhte7EOP3HWLX35Nwg79oWXnCX47aQA0GlIALgNL5fwTCyXABQqPVFvcqVMwKS-W8u9gSL60F46RWGM2JrPaeOfZLQ-4ViGa45rKBKhqi9OHj7fLzLbZ92UqHOS77ra9t2jhf5X64uEpre7CIrjFXHlaIaOx2gEXImJKLP0LWRE_1lIs_cNW33SmNSIRI8WD01vAWc7PtW1DOfj-Lyl42lX_6qrf-mfKLEWUEkz0hhKQpVHXBaVxUfORLe7DDy4ORygX0j6EIjDPF8K8bbZ0B3vpgoKvgHx_u3gc_rgOi12RfzT0U78IT1niKNYYyEfiz3Cre_I2rqgGDaH4UPXy2kei8pUn4f2JEj4yyuiYVEwSKnODNxoB12sDGuCPyRpaIrvf5fDNPZo1U_X62Vf0w0bmdAV5FVkckAI5pkZMJXjYWQ_OyhjzDhksLeKT7tpGlmK1--_vX38vTkEY0Q3RtgxaIrqPIjw62gs5HW6_kfvjwJaBRvR8G1pFAbJnGU4WTKRIRZ3WMeamDppchcdVgjbAqCMnPhKRn6sas5niz4SFDNz4LNyW_XPdh3ellEFlMRc7PRSYZvcB3wnttHrzGSJLRideycZSVScbrMvM8udLq0OreYsVbsF3IgmLIAN-5DPVwdcywB26PmWN6da_uwz4j9dCgFPjlgtcjNZ-AyUVOOIzKcQWOy2Z4v-8e9X3n5S4r3vk97Uk8ovnzkgCMLn2WPn8cwTubWSreHKy0d1zxrU-wFS61bvxzUo3fme1UEK_axBHFue41YT-s-4PsoJEKJjYYSE8qzX-5McaLvKgPyjoTCrs2L7hOCQbJw8QR-wM3oNwHVWsstLIucAj2jsK4M7qL0tgXH-yZvQwlXzzJmTmLNK_OUDzp9WrgTM3ybnd78Sd3e3zxFF9ZpqTGHZham3YpvGD7nV3Huuq4a-24gWrTOd_xjhoT3RsBd1vj-4yjJc98f_fxw6eVVg727oWf7hpp7jt3x6VaaVXL7YhHgUezr9ufnusnihh3Rguw9rqv67B7XaRer-Q_e3ih3h202hyeWI3oK6h537hNBQ04eHuN77xuL9d5THcjeQPCfYKttM4cjvPPch7DZvkQkmV5kbnYmblEIeKRwI96KwVvPoHtGzcS5A-DPlY2BmrEVm8tQDT_88z5tlOLU7creNP4ZnFTqwnskZ3-guHxutsvTJmBBNGs4W3pW73sr-QVmvsjx59r2G9A-n7CJJOEKYqyzsjk5NZIt1TVw1nF-W9o9z-YpN-keG4Dhud7N8fK-26yOaZn1TCp5-z1PPt_qxLvM2VZe0tNTDk_MyVnJbxpymM3J3Z86NuW00D47IxU209QX6LwL4mNsvZ4JwpNDixFAUlSE9xyqd53_qaez0RQPj1tcSryDG82_kC1sY4btzlKveh8J2z_dLAdXsNk4BPOeixJpgWumOpZZ3HB8SD4fZoyz-lZ06drzatqwaqCFfwKFvE8pzTNiiy-2i0yiDPBoGICeBJzMmcxiWvBaD7PRJoXV3JBCWUk8W1MStM4KgqWxzmrSUwpL2iCEgItl03kUUbabK_CRdJi7q181fASGvv0s4BZBFXKfmtRQhppnX1e5qRrwg8IvnFF6Q2ak29d-8wJ7ri1w-UUVDhcRj5foa25bHoDb1-lXfWmWfz8JVlQ798BAAD__-3vrAQ">