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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Convert-scf-to-SPIRV Pass crashes with assertion violation "(!empty() && back().mightHaveTrait<OpTrait::IsTerminator>())"
        </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/a0138390
Reproduced with: 
`mlir-opt --convert-scf-to-spirv temp.mlir`

temp.mlir:
``` 
module {
  func.func @func(%arg0: i64) {
    %0 = builtin.unrealized_conversion_cast %arg0 : i64 to index 
    %alloc = memref.alloc() : memref<16xf32> 
    scf.parallel (%arg1) = (%0) to (%0) step (%0) {
      %cst = arith.constant 1.000000e+00 : f32
 memref.store %cst, %alloc[%arg1] : memref<16xf32>
      scf.yield
 }
    return
  }
}


```
 
trace:
```console 
Assertion failed: (!empty() && back().mightHaveTrait<OpTrait::IsTerminator>()), function getTerminator, file Block.cpp, line 233.
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 --convert-scf-to-spirv 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 0x0000000104b485bc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x0000000104b47624 llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x0000000104b48c54 SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001a56894c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001a5671ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001a55ac340 abort + 168
6  libsystem_c.dylib 0x00000001a55ab754 err + 0
7  mlir-opt                 0x000000010648a34c mlir::Block::getTerminator() (.cold.2) + 0
8  mlir-opt 0x0000000105de3b28 mlir::Block::getTerminator() + 160
9  mlir-opt 0x00000001053d33dc mlir::scf::ParallelOp::verify() + 372
10 mlir-opt                 0x00000001053e2878 mlir::Op<mlir::scf::ParallelOp, mlir::OpTrait::OneRegion, mlir::OpTrait::VariadicResults, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::VariadicOperands, mlir::OpTrait::AttrSizedOperandSegments, mlir::OpTrait::SingleBlockImplicitTerminator<mlir::scf::YieldOp>::Impl, mlir::OpTrait::OpInvariants, mlir::OpTrait::AutomaticAllocationScope, mlir::LoopLikeOpInterface::Trait, mlir::OpTrait::HasRecursiveMemoryEffects>::verifyInvariants(mlir::Operation*) + 56
11 mlir-opt                 0x0000000105e75470 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) + 252
12 mlir-opt                 0x0000000105e75694 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) + 800
13 mlir-opt                 0x0000000105e7674c mlir::LogicalResult mlir::failableParallelForEach<mlir::Operation**, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0>(mlir::MLIRContext*, mlir::Operation**, mlir::Operation**, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0&&) + 352
14 mlir-opt                 0x0000000105e75c68 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) + 2292
15 mlir-opt                 0x0000000105e7530c mlir::verify(mlir::Operation*, bool) + 36
16 mlir-opt                 0x0000000105d53674 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 828
17 mlir-opt 0x0000000105d53a0c mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
18 mlir-opt                 0x0000000105d55388 mlir::PassManager::run(mlir::Operation*) + 1148
19 mlir-opt 0x0000000105d4e840 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
20 mlir-opt                 0x0000000105d4e410 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
21 mlir-opt                 0x0000000105db902c 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
22 mlir-opt 0x0000000105d4c838 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
23 mlir-opt                 0x0000000105d4cd2c mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
24 mlir-opt 0x00000001049eb0a0 main + 108
25 dyld 0x00000001094b1088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWV9vozjX_zT0xmoENhC46AVNW02lVq3a0Ui7N5Exh8Rvjc1rm-xkP_0jG0hIm3Syq9nV6NFTVUkw5xz_zl-fA9QYvpIAV0FyHSQ3F7Sza6WvFkoI1SptOxNelKraXgXhTRAWjw_3L6jsuLCIWsRU03CL1ta2JiBFgO8CfLfidt2VM6aaAN8JsRm_Llut_g-YDfBdzxfgOxpGJCN52At_gVarqmNQoT-4XQekQP2NIA0bwfWlai26vGRKbkDbS8PqS6suTcv1Bllo2pkjCtJBWv-5XyfFTlj_PwhvVNUJQMH8ur9GqO4km7kPFMSh-w5wFuCE6lXoMPE0DnA-ZUAowEmIAnLT24bLWSc1UMH_hGrZ4zVcySWjxqJBFBpkIasQlxV8RwfiqBCKeZENNBrqmV_wSHLP2i8HZBGl32uCA3I7EWBYPWuppkKAQDv4Uc97M6yE7tKq6ZWx0E6vD5T0uJjTgNwgqrldz5iSxlJpUTQL_R8E-DrsdXOget5BA2OVhkFGgBc7LV3oDfiSmxO6TVE45bYcRDUsBvOb_W0NttNyvN7d2v-Yfo6hMArqQ0ZTBh_DxamqXKD45cIY0JYriWrKBVQ-WJ3dImhaux39hNMAp6ik7K1fmTV8tbZf6Aa-asptQBZP7fCrCEhxb76CbrikVmmntOfx_wsflX7DFdgJlbvDBaBrodjbjLWtWxFcAsKEzHqwzw-3xestMl3p0pWislshDS69nfv_cvpyYzowAb5DVFaISya6CpBdA2KamrVX1xtx2P7VUvaGqq5pd1YNZ0GYP2u10rRBVK-6BqQ13vVnJ_o72b5mqM4is21KJZCkDRjnE5Cm04C2qkNrugHktemJ-J-gEZfunkbPxdcvSGlkwHplQG64VtIhQxuqUZCGDw_fHpevvz1ePz3c_377snQsrpJYhVrFpTenK2z5XlG01yj83udIGIVxGWdJyTyW3vVma_ofz5pL69X66gMRZ3siTf9YKmM10MaH1gJxaftAu0ZJ2m8ZTbZ8_3cIYZ7i-BiEl06-8pWk4guVlQBtduF8jaJoyGp8WjOWxOhAQICzCVASx70IgpDgpdkaC82yFdTWSjezait4ORFJkzTLYxajpeErq2nTHqgbHwixaw20OiZjHgGEaCBYvnEhvBicZb2cZCqHHZGQUEbiENHS5Y03RTqwpj9mLedJjEBrzzjUm_l5jkrjjJKYofEUI4XP9f7nu2IwuCmbMSWqGR4tPmyYHXdZUgEpcfZXNnDKD0LzE0JJRUg1RW1YPUT4cDA9tf31BjSvtxPZZD7EWBSeZaGEAM7mUwWc6MXnW-PFAf2kCj9JeIEVV_ITmm9Uc1px9gKmE9Z8Qvk7aPXaMQbGKP0Z4SjyqQVNZfUZaWGtfnXNxUD7Cqu-gJ5meeVyJcA79r5pBWd86tejxvrNnbHOkrfD6dS04jOztfdy43T4HEjRWdVQy1nhzn7qjrRXplo4ZHlQqn3gb-CEWtD1cCSTopd0WvwXal6AddrwDTxCo_T2tq6BucPldhpuU6zZVBZojynAxYfCGp0XjTBP4nno0pBKJbeN6kx_GrW-nufvdvrm8HDQU3QTGMfBpSM4nIy5gs9Gl-bxv4QuC4cqEZFz0aXzg1r3oFacUdHn2WTdtV20FDBm9J3St5StDyL50JlF33P-w2r3iwGOl2Hfwe0p3fC0UNLCdzug-RTqr6OH72J3xXkXcPHZAcfS7N9KB5yP8JKz4ZFwGnG74-iUAxaoVErs7DFWh_S8_aqEpPN4sl8FlnKxK2XqqX2mxhQVbX1l9n1fd6i5I_hBlEzvFJKKreHmkUq6Ar3XYIE66ef_atpIZnjoa6L5iX4hIfTAZOep8MxbcJPJO9M60h2y9KfrNGVyW91LY7WfN1w_U3xG0O_c3xiwP1MN0t7LWiE_-06OCYLHWpedGwkJybJ3u4_6HPX7sdMpiuLRXfkJd8WQxSFqQbv-uvBTpPnBXDHacvw2tupJl8toaBPWVEO1bK3rHvaiXlWnGTyu3Pw6muidUz_WwT37OOUu-_n_1DnwIRumAZT7wvteh-EsD4fZA5_ZWlYxxEMbegzI30H-0Zad5P_fwQdb9v3LdVfXfYB_ZKygpp2wywoEWDjN7Hqf20NLv_d5vmuQGBXCzfDLWh4o8ii4fmrtI-XyB9Hza2j4M2NpT3HDqQBm3YRgrN6eyJfzvj92C0LJ1a9jwQ8x4nNovsuhMxviqsxDfDAKtoLbQlbPWrm5aET_i2TGf0Umf0pxvDam46CD8amDhGVkemD9ryL89IrQd7HR6Ikzx6YqZtVBhh16ZmiE2Jrq_QgxObOt5nL1AvX5eg29Bw6H3gPHx58G5lCGNEQN5bLn2DEkqNqKakqcx2UUZhkylg5P2JLRDu-exV9UV6TKSU4v4CpK5yTJIzxPL9ZXSRxFUUgqQgiDOqFJzaIkSmgcJfOwyuMLfoVDTMIoImGK50k6K8OclHVZAstrWtE6iENoKBczZ56Z0qsL_7j7KsnzLL8QtARhxpdl-so_Sy67lQniUHBjzZ7Nciv8azVv0OQGLQ4fZ78-3798Qy66-sfmYPwTbER3bxY2XAnf7aEA43_y5QK-6LS4-vvvAbxt_hMAAP__JeJ2Qw">