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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] `-test-convert-to-spirv` triggers Assertion `succeeded(result) && "expected ConstantLike op to be foldable"' failed.
        </td>
    </tr>

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

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

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

<pre>
    Test on commit: [6003c30](https://github.com/llvm/llvm-project/commit/6003c3055a4630be31cc3d459cdbb88248a007b9). 

steps to reproduce:

 ```
mlir-opt test.mlir -test-convert-to-spirv
```

test case:

```
module {
  func.func @test(%arg0: memref<1xi32, strided<[?], offset: ?>>, %arg1: memref<1xi32, strided<[?], offset: ?>>) -> memref<1xi32> {
    %c1 = arith.constant 1 : index
    %c0 = arith.constant 0 : index
    %c31_i32 = arith.constant 31 : i32
    %c0_i32 = arith.constant 0 : i32
    %alloc = memref.alloc() {alignment = 64 : i64} : memref<1xi32>
    cf.br ^bb1(%c0 : index)
 ^bb1(%0: index):  // 2 preds: ^bb0, ^bb2
    %1 = arith.cmpi slt, %0, %c1 : index
    cf.cond_br %1, ^bb2, ^bb3
  ^bb2:  // pred: ^bb1
    %2 = memref.load %arg1[%0] : memref<1xi32, strided<[?], offset: ?>>
    %3 = arith.cmpi sgt, %2, %c31_i32 : i32
    %4 = arith.select %3, %c31_i32, %c0_i32 : i32
    memref.store %4, %alloc[%0] : memref<1xi32>
    %5 = arith.addi %0, %c1 : index
    cf.br ^bb1(%5 : index)
  ^bb3:  // pred: ^bb1
    %alloc_0 = memref.alloc() {alignment = 64 : i64} : memref<1xi32>
 cf.br ^bb4(%c0 : index)
  ^bb4(%6: index):  // 2 preds: ^bb3, ^bb5
    %7 = arith.cmpi slt, %6, %c1 : index
    cf.cond_br %7, ^bb5, ^bb6
  ^bb5:  // pred: ^bb4
    %8 = memref.load %arg0[%6] : memref<1xi32, strided<[?], offset: ?>>
    %9 = memref.load %alloc[%6] : memref<1xi32>
    %10 = arith.divsi %8, %9 : i32
    memref.store %10, %alloc_0[%6] : memref<1xi32>
    %11 = arith.addi %6, %c1 : index
    cf.br ^bb4(%11 : index)
  ^bb6:  // pred: ^bb4
    return %alloc_0 : memref<1xi32>
 }
}
```

crash trace:

```
mlir-opt: /home/projects/project/llvm-project/mlir/include/mlir/IR/Matchers.h:93: bool mlir::detail::constant_op_binder<mlir::Attribute>::match(Operation *) [AttrT = mlir::Attribute]: Assertion `succeeded(result) && "expected ConstantLike op to be foldable"' 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/projects/project/llvm-project/build/bin/mlir-opt ./test.mlir -test-convert-to-spirv
 #0 0x00005c767a7b3ead llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:804:11
 #1 0x00005c767a7b439b PrintStackTraceSignalHandler(void*) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:880:1
 #2 0x00005c767a7b2406 llvm::sys::RunSignalHandlers() /home/projects/project/llvm-project/llvm/lib/Support/Signals.cpp:105:5
 #3 0x00005c767a7b4b7d SignalHandler(int, siginfo_t*, void*) /home/projects/project/llvm-project/llvm/lib/Support/Unix/Signals.inc:418:7
 #4 0x00007679c5a91520 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x00007679c5ae59fc pthread_kill (/usr/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #6 0x00007679c5a91476 gsignal (/usr/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #7 0x00007679c5a777f3 abort (/usr/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #8 0x00007679c5a7771b (/usr/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #9 0x00007679c5a88e96 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x00005c767a948819 mlir::detail::constant_op_binder<mlir::Attribute>::match(mlir::Operation*) /home/projects/project/llvm-project/mlir/include/mlir/IR/Matchers.h:95:68
#11 0x00005c767a913e1f bool mlir::matchPattern<mlir::detail::constant_op_binder<mlir::Attribute>>(mlir::Value, mlir::detail::constant_op_binder<mlir::Attribute> const&) /home/projects/project/llvm-project/mlir/include/mlir/IR/Matchers.h:494:5
#12 0x00005c76801d9815 mlir::Operation::fold(llvm::SmallVectorImpl<mlir::OpFoldResult>&) /home/projects/project/llvm-project/mlir/lib/IR/Operation.cpp:664:54
#13 0x00005c767ff7337c (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() /home/projects/project/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:493:25
#14 0x00005c767ff72f91 (anonymous namespace)::RegionPatternRewriteDriver::simplify(bool*) &&::$_2::operator()() const /home/projects/project/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:874:30
#15 0x00005c767ff72f65 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::RegionPatternRewriteDriver::simplify(bool*) &&::$_2>(long) /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:5
#16 0x00005c767a7da209 llvm::function_ref<void ()>::operator()() const /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:5
#17 0x00005c767ff72695 void mlir::MLIRContext::executeAction<(anonymous namespace)::GreedyPatternRewriteIteration, long&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, long&) /home/projects/project/llvm-project/mlir/include/mlir/IR/MLIRContext.h:289:3
#18 0x00005c767ff70b15 (anonymous namespace)::RegionPatternRewriteDriver::simplify(bool*) && /home/projects/project/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:887:3
#19 0x00005c767ff707f7 mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/projects/project/llvm-project/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp:919:47
#20 0x00005c767a9dc550 mlir::applyPatternsGreedily(mlir::Operation*, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) /home/projects/project/llvm-project/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h:174:15
#21 0x00005c768368347b mlir::spirv::unrollVectorsInSignatures(mlir::Operation*) /home/projects/project/llvm-project/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp:1357:10
#22 0x00005c7680bb1a33 (anonymous namespace)::TestConvertToSPIRVPass::runOnOperation() /home/projects/project/llvm-project/mlir/test/lib/Pass/TestConvertToSPIRVPass.cpp:111:42
#23 0x00005c767fe593cb mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1::operator()() const /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:0:17
#24 0x00005c767fe59365 void llvm::function_ref<void ()>::callback_fn<mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int)::$_1>(long) /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:5
#25 0x00005c767a7da209 llvm::function_ref<void ()>::operator()() const /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:5
#26 0x00005c767fe5cfc5 void mlir::MLIRContext::executeAction<mlir::PassExecutionAction, mlir::Pass&>(llvm::function_ref<void ()>, llvm::ArrayRef<mlir::IRUnit>, mlir::Pass&) /home/projects/project/llvm-project/mlir/include/mlir/IR/MLIRContext.h:289:3
#27 0x00005c767fe54c3a mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:532:17
#28 0x00005c767fe551c4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:592:16
#29 0x00005c767fe56c28 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:905:10
#30 0x00005c767fe56b52 mlir::PassManager::run(mlir::Operation*) /home/projects/project/llvm-project/mlir/lib/Pass/Pass.cpp:885:60
#31 0x00005c767fe47baa performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:474:17
#32 0x00005c767fe4776c processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPoolInterface*) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:542:12
#33 0x00005c767fe4751c mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:625:12
#34 0x00005c767fe474b6 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&) /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:12
#35 0x00005c767ffd76a2 llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const /home/projects/project/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
#36 0x00005c767ffd6c8c 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/projects/project/llvm-project/mlir/lib/Support/ToolUtilities.cpp:27:12
#37 0x00005c767fe43928 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:628:10
#38 0x00005c767fe43ce9 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:669:14
#39 0x00005c767fe43eb8 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) /home/projects/project/llvm-project/mlir/lib/Tools/mlir-opt/MlirOptMain.cpp:685:10
#40 0x00005c767a724a0c main /home/projects/project/llvm-project/mlir/tools/mlir-opt/mlir-opt.cpp:331:33
#41 0x00007679c5a78d90 (/usr/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#42 0x00007679c5a78e40 __libc_start_main (/usr/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#43 0x00005c767a724605 _start (/home/projects/project/llvm-project/build/bin/mlir-opt+0x29fe605)
Aborted (core dumped)
```


</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkW11z26y2_jXkhokHgT4vcuE68TmZaaaZNH3PpQch5HAqC21AfZP96_eAkC0pdj6cNO3b3enEsoQW63nWw2KBZKq1WNecn4HoE4jOT2hr7qQ6-0w3uVQ4PMll8XB2y7WBsoZMbjbCADKHIPoUI0QYQSA6Bzi9M6bRgMwBXgK8XAtz1-YzJjcAL6vqR_9x2ij5_5wZgJfeFF56M1FEw5ignJOAMVKEUcaKPE9THKYUoSTPAM5mEKA5QHNteKOhkVDxRsmiZdz27C5BECP_H803lVCnsjHQcG1m9hs8tYenTNY_uDKnRp7qRqgf9t7BfQDNbTPIqN5ZHhmWRVtxCJJPtktYtjWb2T8QhMjeCXAKcETVGlmuNnyjeAnIIrgXBAO8gNooUfACkIVlnSwdhwsoy1Lzjl6yBOTC_scL2JkK3m4qg6eAXEyNkIstEGj7YgEE5BxSJczdjMlaG1obaE_OoagLfj9oivY1RXubkmAlCN7XnnjbBA8tH2qNHjemVSWZa9tBm7kTLgiZxUYrsa43vDauTRx2FuIQJOdwD6vkwptm5SxXEEQXeR50IWVDbDhzghtcRqOLZG69s-MBYtgoXuhu5FzkOXJxtUcDGCPeN42AujI-_sh_ssdhYKXlplhZT3EUDAz3R8S19CcHTlmXth4FOz_wkMpK0mKrwOiT8yXaS9vrxLjtjTxCve5R4x71VjuTwIeDezWvODPO4vi2_hvaY8OD1EYq7gz2480J6Em4QwzRwA9aFOL5kE10FT2SVR-6F8TLObtC7z0ABl6GB9U_uh6_VP5kq81oByM5LP_4pfJPBob7o3jnZ3SQznDnR3pA_qjTQ_y-8s_29raT36HuhjaCYRouxA_tBJh60rJnNB-goehXz8Ac9Rvs0f3TsZooKggOKCp-NlKKm1bVY_0f8BYk53YC7_6O53mmqL6DRlF2YKb3JYTrHi_v5IYDvPRljN4dPi5w7J0AL0XNqrbguxOXNwAvr6hhd1zp2R0g88yN8lzKCro2ZA7IvOCGiqo77ue-lWxWueVKAbLYNZ0bo0TeGu60Zc9srHmA0y8NV9QIaWmau1wQfbKtbzvR7bEQnVtf5lpz1d0XI90yxrnVNU4V160dlRkEOAY4hgBjft9wZngBF97Nz-I7h7KxBVrOYSmrguYVBxgDnMCSiooXM4Dm158v5l8voG7zjTCQwrxd24JOKmPvfHVBKbRuuY0IpHUBPe3Q3HHYxTin7LuLs-37q6HsOyzaTdNFHc2g-3et5FrRDaRq3dp8qV8f97wVVWE_Re2D7krQGcDLF5ShEGCCILpHCKGIJXFCk5xwWkAH2gVLP-ju4FqJ2jgkt06_ON01UvTvldRGcbpxkVpAUfu4vQZMT7XIAV5-bRsbHYCX32pxb0-IdU0rPRM1A2SeohCQeRB4FMEERUiyHE5c7gz8L62LiiuA0x9SFL1Sf56fqS3TejfxxE0congf2TdtPfJW97Pre_jZO8gaq8cA2Xkq8g6SKY95UsApcS64C6jFWtSlXBlH4gJ-CJ9hkAIyT7y7oXc3iZOMRTQLIoyg42rZarW1eZ_Gqzg8rUTd3p-u67a7wGZazmKAP6H7EEcY9SU2JtHYLI-yksHG3ClOi9V3UVXH9JHFWcl2fcRT18MkhmvtwB4HIUzinflkbD5JkpJAmtt8d4RxnCYl2RlPHxkP8iPNBvnObDY2m6Y8i48xSzKeeSpsahhnuCxM0yB777lv12Y7Cx41FF4xj9thG6ce4zj_ZQHhQTmd5J2v19QYruoRrKMZuBgh_4tWLbeJ4M2WoWvrppKfR2CYhT7xWQKHmTlFQZGlQQT3RdV9tWXGaAb8uqFV9RdnRqrLTVONkH1plrIqbrpixnJ2PKxuADgsW498Ho9jByf0eEaJvCwTQhJmxxKtZf2wka2GNd1w3bipPOsc_R_FefHgFXLD_1bC8HMlfnAPpFGSca3_T6rvlfD7Tm8CcqtorUupNvaWb0ZU9vOwFx5p6EpY3EcunCDFZRY8h_SGr4WsDyPVYtNUonwAOLWDaDuUbRXatQA4XOHuULpISNXx4VlxCv54btLEqoAgz030iJs4cvP0oOgo25pZHa26pYy76qH0WY7RqrIV7aq0ieOjuLXZpZL1-uiCYpcE_In5-a0tKG4_Lz1mWl3cG0V9QogH-SAeF0IFxSh7HWnvJovj0MTZAE0y1UGceR3s0tTV58ubhawNvzfdCX7PWWv4nHV577m479PmpdlOhgvYxTL2gX0hlfa-bdO5UvThxjXb-X15860Wpm_r-3jneWNHjeMWpxYz8eSmE3JRHkQ_MwH9gqySJgO82RRvUiYDHdGmqXpj2pkW1cOoUOjA-5Xi7vRSyX_zvn9v4Cs3g2Jg2Lpz2rdeyLoUa9tgxNYH05QFNrph0vGEJ3VnwaIIvYqncSn521H1aKyMWHuCLTuEAjdRBT5B4WH9mpI4JWGSDxB0GxbusK2V7Estfdktk02ruH7_KrzTwrmgVXf66_XlzV9TnO7kwu2t6F01FpAocYtrj29cXuZ5QAl5Lkfccm06w-ZWum6uqfYbBKqtv9QDkMdXYt0TRI_VdYCX-3vuoQWBVTn2yMaFJo8ywvIDK4Avza380lhT84I2dmrssYxi1zkxUfzhsTCvafWghb6iNV1ztVP2Ara1e9xc-O2oXXUR_MzKzZM4oMxtAfVpIXxE2DvUZP8Awn9lOYejP6mcw_FEQqxkry_nxvG_cFeFrP31UcQ7gfzcyu1xbx9Yw-FkwmjICP1Ns9j7pqaI4GFySic8RAELX83DtWh4JWo-mZFt0y28-N2JmUrostZGuecqdtDOn2ow2Nnpfb-mitfmsi5lX1S9tY7Yw33muI8999mE-5jhdOJyT8KWaar1k5XPk0y-M5zMPUnoS57xgyULJ4_wM3B-Vgn32Nc0ddunva_B2NcwySmFDVe2yOsSon7mgZc2hS9V76jixaoxCpDFYINQtorxq7Uab28uDmTsaeyuKqG-NOaKiror4N--RepXOlK6xc320TNeDvrqd9y6Yt0nifFTLMtWEjPoNwc_tWXpHhK9iKy2Fv9q-SOyrvhGqofe1KB9wUvaVmZV8Iobfvie7dtsL2Nw2M6X-3aNqo168Nd3_dy6p0DXUlaXteGqdBX7m9ebL4lCFLp04QtvQqZRiAK2H-9vGI39LL9Q77uyEh2ozT4O0mFi32MP-CWyiHE0lEU4lUWYDx8xf5ZrwWjVPY04XAEfuuF34fbZZdB_i_x3q6qPRPKU6j9sbbeV_OQpR5HEFP8B0v6Dstob1rzbKMeTKMcsZaMtwkqYeV1cT-qQX0HaP1BxT7YYXvtqlKjXdil_6PSbKqHd6z928vtmRCWM4H3ZjpOhIiaL9pBkowXTHzwFfEBRkQ7XcumUacazg0z71Ti7o926e_5aAT1H0wfA71KPf5mCZFP4PD8stNfA_-U40-GSPZy8C4pDihjcUFEf-WjhsQv9oe-fkMD99f0Hk_fK0iI76nU-nBUZ2r4AFuKpWR4iuFrZe1baUGVWHuMRHfFw0BGZ8hejCHZdeOtvfrXXd1vyGEVdx_NcKsPdziuTirv3jHnhnRq_f35SnJEiIxk94WdBEuIwSrIIn9ydsZAGvCzinIVhTikK4wKRsAwSmhRlHhQn4gwjHCGCEUpRFOEZZTgpEONFEREUxRiEiG-oqGYWxUyq9Yl7RfosIDiI0pOK5rzS7md_GHfywCA6P1FnDnXerjUIUSW00TsLRpjK_VTw6vPljfuFQIwOvMscI2iUWK-50h_wPvlJq6qz498Z95z8OMP_CQAA___Iz4BM">