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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] `BubbleUpBitCastForStridedSliceInsert::matchAndRewrite` crashes with Assertion Failure "!empty()"
        </td>
    </tr>

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

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

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

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/a0dab4950
Reproduced with: 
`mlir-opt --test-vector-to-vector-lowering temp.mlir`

temp.mlir:
``` milr 
func.func @func(%arg0: vector<f32>) -> vector<i32> {
  %0 = vector.bitcast %arg0 : vector<f32> to vector<i32>
  return %0 : vector<i32>
}
```
 
trace:
```console  
Assertion failed: (!empty()), function back, file ArrayRef.h, line 173.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt --test-vector-to-vector-lowering temp.mlir
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-opt 0x00000001008106b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x000000010080f720 llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x0000000100810d50 SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001aad414c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001aad29ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001aac64340 abort + 168
6  libsystem_c.dylib 0x00000001aac63754 err + 0
7  mlir-opt                 0x00000001024f4a18 BubbleUpBitCastForStridedSliceInsert::matchAndRewrite(mlir::vector::BitCastOp, mlir::PatternRewriter&) const (.cold.4) + 0
8  mlir-opt 0x00000001018d3304 BubbleUpBitCastForStridedSliceInsert::matchAndRewrite(mlir::vector::BitCastOp, mlir::PatternRewriter&) const + 1496
9  mlir-opt 0x000000010212bb9c 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&)>) + 1420
10 mlir-opt                 0x0000000101edb918 mlir::applyPatternsAndFoldGreedily(llvm::MutableArrayRef<mlir::Region>, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) + 3976
11 mlir-opt                 0x0000000101e5c330 (anonymous namespace)::TestVectorToVectorLowering::runOnOperation() + 696
12 mlir-opt 0x0000000101e8c428 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 428
13 mlir-opt 0x0000000101e8c958 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
14 mlir-opt                 0x0000000101e909dc mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const + 176
15 mlir-opt                 0x0000000101e90858 mlir::LogicalResult mlir::failableParallelForEach<std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&>(mlir::MLIRContext*, std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, std::__1::__wrap_iter<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_14&) + 360
16 mlir-opt                 0x0000000101e8d620 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) + 1396
17 mlir-opt                 0x0000000101e8c558 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 732
18 mlir-opt 0x0000000101e8c958 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
19 mlir-opt                 0x0000000101e8e2d4 mlir::PassManager::run(mlir::Operation*) + 1148
20 mlir-opt 0x0000000101e87698 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 504
21 mlir-opt                 0x0000000101e87268 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 704
22 mlir-opt                 0x0000000101ef1f5c mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 656
23 mlir-opt 0x0000000101e85690 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 216
24 mlir-opt                 0x0000000101e85b84 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
25 mlir-opt 0x00000001006b2ae4 main + 108
26 dyld 0x0000000105715088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWdlu4zjWfhrmhohBUYuli1woi_8OkCBGUn8DMzcGJR7ZnKJIDUml2v30A2rx7ipXddUgGHQQWIJ0eNbvLBSZtWKpAG5QfIvi-yvWupU2N3daSt1o41pLrgrN1zfPT4-vuGiFdJg5XOq6Fg6vnGssCnNEZ4jOlsKt2mJS6hrRmZTv4-W6MfpfUDpEZ_06RGeMcFZEWUwQuUckf4XGaN6WwPEX4VYozHH_AiWklsJc68bh62sH1l2_Q-m0uXZ6vJP6CxihlthB3Uw8OUoGvv3v9nmYb9j2_7gW0gyyqlaVE_-DUUT8FdEU0ZiZJfEK9dJQeFeFFIUPiGb4GoUP2-eie47R9LbnhzGiMcEovB9oJoVwJbMOD1zxCbbY6UOOIzcDrjVqZJqfJkPT-wMTh-WDKwwr4dgNpVZWS8ADVW4tGCe0whUTEngXD--MAOrGrbvbrPu_w95RHWnBys_dAyEB58aw9StUk5V_JIUCHEzDSc9-_vSQvz1g2xYeRAwX7RIb8HDz1n83qIS1LVhEZ5gpjoUqZcsBuxXg0jC76hTr7B7EvzlWfsa8rZuNI8gEkWxu9NKwGjOzbGtQziuBfwR9B1I6SOvWYbuuCy2xYjVY709QtjWA17rFK_YOuLOrJxJ_gsFC-XcGz_NPv2FtsAXXmQXqXRitvI74nRmMEvL09Pvz4u0fz7cvT4__fHhd-CUe3k7jRgvVOdYnXrY1GW9tI3-Q_i8gJA1IUqSdLp42zO3a9jdzI5TrzPrUoYimWyLDviy0dQZYjWjiYy6UF4cRvcVx0osMdkQe_u2pQKopJadUeG3Vm1gqJn9jikswtodiJyUIaC-GnreMxwTvMUA03VE0jKKeRYixFIVdWwf1opHMVdrUE76WothhyRiPgqiM8MKKpTOsbvbMjfaYuJUBxk_xoBkAwQPB4rOQsmND07TnE-_yKU9wKJMojAhmhc-gzhXJsDT59tJwGkcYjOkWDsVielmgaFRFLEjxbVsUEv6_uRXujlk30-bNGcGBv0lRwqPyxaSPX81cucoVf4UvRjgPobEsh_lYzvz9wOml8UjaksyZc2DUsNp0SMuwL17e7nRSaskn0RjNwZj0NByClIchiT6K8rc4iLIBONlpjWlAiyIrj1nmTSNFyTYKfE3RlwYM8_Ua0fzb-t3tJOFY6BcGKhTeFVp7nKZHDHqTevO6PvkVJu9a8L_MZLv4SS9FyeQr2Fa6y_gOtSOiA1oCchH0A-BFFqQ77mNNI9eDFJsrPtOS_58B4EKu90rlc-tYIWHskHsGvMLSh6Y3ePt4ZvSfMEZmkPEGbseYXepO6nqgvtOqEstNgcumYy0OLrQzLsOQeF8ypdW61q3tG1jTtYCsF_kJrPu9S4FPur8-DW1xaA-telE70NsU7WTEfEBPZymkZUR3_czBMSFHMH_SL82cWZtz1mzwb1p1EHtrj-B-PhFyxeTaCvvMFFv6RLjDHuz-2qpuXOa73S2iQ7ENwrMmZPH3mzAXDfjB6SB9PelGs-Sn27RfEax9VNaZbhzS5kTJ2CXoJfcvBt3nzIByj6rSI1bzDRQ3GRddiMSMZLz8bjfu4C63a1U-1o1ENO2tH-CLaLQIov5ed9Te2H7ITX-FwJdm_uy9ctwENvkZX-yVdA9c-zVw-9xP8r7uzJlhUoKcafPAyhUK76zjPcliEYw3XwxrFl0b2C1Pv8IB-VG1--lxpUknYyeSfjd7p5WDP9wA6o_hhI-hxa8NxZj_4840SC5EesoTSn6ycn3ShZsuNL1UlzL-gZL-X-xK03DYDQ1Dyt9d6Tu7UnYpEoDy6ED6aM_JuO-7Y9y7RsMQQcm5cE2TLMUNGL8Vzbv5135jCz76crweVxe7Ygb4onG-uGxZvenWlPC8NCh8ODNkHlfQvzqf7wNonPr3bRi-J5Bhm04vHWLTKU3ON8kf0fzYl60S_27hyJfPUGuzvm2rqgf48UIOFWulW3CQ4OD84vDhaCd0GPPOa92bkklZsPLzolJ7hjxLYV4a98yE-gZ6PoaFPxNLW4p7wSSUzm-3rDPrM_ly2XWnwZF-zpBaLT-OB48w0veHTQ7RC3OoCqp4d_y2jRQuV3xudAnWjtp_kMz4n8jkr1Kcro3J-PWRnt2Nxkm2O0b9XRF-ekXov98GYyQu3eCmcZFGZyMzDELlivUjz0HTfXNGqOUrVJfbNcwelIyzR3z6w3lSUAYRrplQ_YrNggTzteS7xPE0iEmaYuvY8DE6Hv1wcOZ0xW9CnoUZu4KbIJlGEUmyLLta3YRxOg0ghGlEOAlZkVE25XGUVhXwNGDVlbihhIYkoDSYkjDIJtOgnEaM8SIIiyiNKYoI1EzIiXfPRJvlVXdGdJMQGkRXkhUg7XjiaW66Y5eiXVoUESmss9tlTjjZnY12Do3vMUrIj38wTkh_IgW2OxLC22O2GROyNYARpYeHbPSqNfLmxw_FOpv_EwAA__-tRBmI">