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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] --test-scf-if-utils crashes
        </td>
    </tr>

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

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

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

<pre>
    git version: 953838dceaf

system: `Ubuntu 18.04.6 LTS`

reproduce with: `mlir-opt --test-scf-if-utils a.mlir`

a.mlir: 
``` 
#map = affine_map<(d0, d1) -> (d0 + d1)>
module {
  llvm.func @malloc(i64) -> !llvm.ptr
  llvm.func @func1(%arg0: !llvm.ptr, %arg1: !llvm.ptr, %arg2: i64, %arg3: i64, %arg4: i64, %arg5: i64, %arg6: i64, %arg7: i64, %arg8: i64) -> !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> {
    %c19 = arith.constant 19 : index
    %c1 = arith.constant 1 : index
    %c32 = arith.constant 32 : index
    %c0 = arith.constant 0 : index
    %0 = llvm.mlir.constant(dense<1.000000e+00> : vector<32x256xf32>) : !llvm.array<32 x vector<256xf32>>
    %1 = llvm.mlir.zero : !llvm.ptr
    %2 = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
    %3 = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
    %4 = llvm.mlir.constant(0 : index) : i64
    %5 = llvm.mlir.constant(19 : index) : i64
    %6 = llvm.mlir.constant(32 : index) : i64
    %7 = llvm.mlir.constant(4 : index) : i64
    %8 = llvm.mlir.constant(256 : index) : i64
    %9 = llvm.mlir.constant(64 : index) : i64
    %10 = llvm.mlir.constant(1 : index) : i64
    %11 = llvm.mlir.constant(76 : index) : i64
    %alloca = memref.alloca() : memref<vector<32x256xf32>>
    %12 = builtin.unrealized_conversion_cast %0 : !llvm.array<32 x vector<256xf32>> to vector<32x256xf32>
    %13 = llvm.getelementptr %1[76] : (!llvm.ptr) -> !llvm.ptr, f32
    %14 = llvm.ptrtoint %13 : !llvm.ptr to i64
    %15 = llvm.add %14, %9 : i64
 %16 = llvm.call @malloc(%15) : (i64) -> !llvm.ptr
    %17 = llvm.ptrtoint %16 : !llvm.ptr to i64
    %18 = llvm.sub %9, %10 : i64
    %19 = llvm.add %17, %18 : i64
    %20 = llvm.urem %19, %9 : i64
    %21 = llvm.sub %19, %20 : i64
    %22 = llvm.inttoptr %21 : i64 to !llvm.ptr
    %23 = llvm.insertvalue %16, %3[0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %24 = llvm.insertvalue %22, %23[1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %25 = llvm.insertvalue %4, %24[2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %26 = llvm.insertvalue %10, %25[3, 0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %27 = llvm.insertvalue %5, %26[3, 1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %28 = llvm.insertvalue %7, %27[3, 2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %29 = llvm.insertvalue %11, %28[4, 0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %30 = llvm.insertvalue %7, %29[4, 1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %31 = llvm.insertvalue %10, %30[4, 2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %32 = llvm.insertvalue %16, %2[0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %33 = llvm.insertvalue %22, %32[1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %34 = llvm.insertvalue %4, %33[2] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %35 = llvm.insertvalue %5, %34[3, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
 %36 = llvm.insertvalue %7, %35[4, 0] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %37 = llvm.insertvalue %7, %36[3, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %38 = llvm.insertvalue %10, %37[4, 1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
    %39 = builtin.unrealized_conversion_cast %38 : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> to memref<19x4xf32>
    llvm.br ^bb1(%4 : i64)
  ^bb1(%40: i64):  // 2 preds: ^bb0, ^bb5
    %41 = builtin.unrealized_conversion_cast %40 : i64 to index
 %42 = llvm.icmp "slt" %40, %5 : i64
    llvm.cond_br %42, ^bb2, ^bb6
 ^bb2:  // pred: ^bb1
    llvm.br ^bb3(%4 : i64)
  ^bb3(%43: i64):  // 2 preds: ^bb2, ^bb4
    %44 = builtin.unrealized_conversion_cast %43 : i64 to index
    %45 = llvm.icmp "slt" %43, %7 : i64
    llvm.cond_br %45, ^bb4, ^bb5
  ^bb4:  // pred: ^bb3
    memref.store %12, %alloca[] : memref<vector<32x256xf32>>
    %46 = vector.type_cast %alloca : memref<vector<32x256xf32>> to memref<32xvector<256xf32>>
    scf.for %arg9 = %c0 to %c32 step %c1 {
      %49 = affine.apply #map(%41, %arg9)
      %50 = arith.cmpi slt, %49, %c19 : index
      scf.if %50 {
        %51 = affine.apply #map(%41, %arg9)
        %52 = memref.load %46[%arg9] : memref<32xvector<256xf32>>
        vector.transfer_write %52, %39[%51, %44] : vector<256xf32>, memref<19x4xf32>
      } else {
      }
    }
    %47 = llvm.add %43, %8 : i64
    llvm.br ^bb3(%47 : i64)
  ^bb5:  // pred: ^bb3
    %48 = llvm.add %40, %6 : i64
    llvm.br ^bb1(%48 : i64)
  ^bb6: // pred: ^bb1
    llvm.return %31 : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
  }

}


``` 
stack trace:

``` 
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt a.mlir --test-scf-if-utils
 #0 0x00005628ab8f1158 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1136158)
 #1 0x00005628ab8eec6e llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1133c6e)
 #2 0x00005628ab8f1aed SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f4058d10420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00005628ad74d0c7 mlir::outlineSingleBlockRegion(mlir::RewriterBase&, mlir::Location, mlir::Region&, llvm::StringRef, mlir::func::CallOp*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x2f920c7)
 #5 0x00005628ad74e055 mlir::outlineIfOp(mlir::RewriterBase&, mlir::scf::IfOp, mlir::func::FuncOp*, llvm::StringRef, mlir::func::FuncOp*, llvm::StringRef) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x2f93055)
 #6 0x00005628ae7cc6c5 mlir::WalkResult llvm::function_ref<mlir::WalkResult (mlir::Operation*)>::callback_fn<std::enable_if<!llvm::is_one_of<mlir::scf::IfOp, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<mlir::WalkResult, mlir::WalkResult>::value, mlir::WalkResult>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::ForwardIterator, (anonymous namespace)::TestSCFIfUtilsPass::runOnOperation()::'lambda'(mlir::scf::IfOp), mlir::scf::IfOp, mlir::WalkResult>(mlir::Operation*, (anonymous namespace)::TestSCFIfUtilsPass::runOnOperation()::'lambda'(mlir::scf::IfOp)&&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) TestSCFUtils.cpp:0:0
 #7 0x00005628aba1ce77 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1261e77)
 #8 0x00005628aba1ce77 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1261e77)
 #9 0x00005628aba1ce77 mlir::WalkResult mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<mlir::WalkResult (mlir::Operation*)>, mlir::WalkOrder) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1261e77)
#10 0x00005628ae7cc1e7 (anonymous namespace)::TestSCFIfUtilsPass::runOnOperation() TestSCFUtils.cpp:0:0
#11 0x00005628aed322b6 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x45772b6)
#12 0x00005628aed32be0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4577be0)
#13 0x00005628aed351b2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x457a1b2)
#14 0x00005628aed2da5a performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#15 0x00005628aed2d6ad 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&) MlirOptMain.cpp:0:0
#16 0x00005628aedd9b25 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) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x461eb25)
#17 0x00005628aed27695 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x456c695)
#18 0x00005628aed2793f mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x456c93f)
#19 0x00005628aed27c6e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x456cc6e)
#20 0x00005628ab8d1c47 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x1116c47)
#21 0x00007f405832e083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#22 0x00005628ab8d17be _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11167be)

``` 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW81u47iyfhpmQ8SQSP0usnCcBDdANxJ0enCXBiVRjm5LlC5JdTvz9Ack9W_JjqfjzDkH08iMZbLI-uqrYpEsJUSIbMcovQHuLXDvrkgtX0t-c19k-RvZ06uoTN5udpmEPykXWckAXsPQxQEOkpiSFFhrYK3Fm5C0UF3As_6IaiZraAcry1l58Mv3F-BZRo7TipdJHVP4K5OvjXyRZ_y6rCS8vpZUyGsRp9dZel3LLBeQrFR3N0HzVQ201qpV_-gvCBekggDfQZKmGaPbglQAbwAKEgugDUxsgEJ4DfA91G0QoFvTCPA9sNZFmdQ5hcC_BdYawjz_WazSmsUQOFZB8ryMAQoyzxnMYmuhSvLDEerTBigAyCV8Z2nEA3m0gabHXuxBqkfra1vwQYtz0OIetHgHLf5BS9C1TGwTktexNDQ26JqPZjzhnLwBvMFwr5vw_VJrqOdt2IVKcWyHxl88k6-ruGRCEiahbl3DjCV0PxSelZ0VxWhOVrceCltzstacqJHUvKgo7KRVOFEmKMAbe2XpfxSgW8vSFuM1_EljWXLFB9oj19unGBlK4ND7HWkI7vshA3kdpg0We4LlT8pLOI2lThpNpGuW0HQk_m5Ho1lHo4mje9X441S_L8Z61c6yv4b-bdyg5uiGustDR-E5N9ZbHjsKwbmx_vJY58TQYHmowXRscLg82Dul2D6yLuxTY6dxPBjrnwKtkzLRExS04DRdmRaddo28aQd4s7AER0vKrJKoznKZsVXNOCV59idNtnHJmt1vGxMh21xw1tKFslzKAz2CwWLZUUlzWlAmK8l1J3BvfQ-4d43mYLRrzOxJaAOVgn72wXqoJJdlxmSndZQ4FNaxmwbrgSSJma3ZPkaOUR2D-I9Jno_2Tz1Xn_iO7qdGs78A2jsNerAiRB1prA1m25oJxfDQRr-VDw7l0SDsa04LM8ccKY28fQCnE0czeNAgaWdMyrKJA2S3ssri-XSPh0MF5fInyWtqeGtUYuDeWn00XWi77yE5i5AQallQmOxPxOQuYmqDGznAvUWfCMlb9pzVYnKBe4vVl8_0n78IzG1xeS2uz_RhsIirXbzIb3F9piPDZUfaLbAAuLfOJzsSW6cJC1tcn-hIbJ-OfGy1wD7RkxidTqbot5Lp-47UQ0jL-b1Lphj9VjI9H9Nygm-TKca_lUzPh7Sc39uchZ3fz6Vn4FIalzN8u_6w-_t54XyylhN8h-sDEvz5uJYTfJ8X_N9PWOcDC8-4LuDgoqhk2d907HDvjG8WWmXEIXDvo6gpSjmwL_losVGnNejEqhM9APQAEaw4TYS2RIkb_tWTO7h122fw4ljDw2xXb1E9w7QbFxUECIlcAnUs1giN693JwdlcO0qWbCNupukw9k-e1mHaBuYp4zrb7Dny8DHy2k78PvJ6OINDv-OcQx6eJa-ZyT3KH27480_x5w5gjr3dNC4RiJsZm6u5kCU3q7bdoZrLui47n31Zd0waNZIr-VbRjpauLPCeGUdLB6P90bqbiNNVWvKmaGrWvykh6puYLjwKSau2XtkVOw3kcFCdXpGqyt-gqVo3gWP3Bdmwjay2HjWqUhZVBrUvN2be5iGeqZwa0FnaTjKAZCa2_yIoMxoNqy95SRLjG-XUZsjUt6c4Vv9ar3LCREr59hfPpNm2u9NNaFS4LTzHaTXNzY42x_IjhMC_gzQXdOwy_66Nt_4JuY5_UCfoVtO0TDCbPPzZ7OGeXEhqbHCou82E3jHdbWIPZnV7Zm86kQQ5lTVn3Vn9sgVcQ7n66R4mL3yEJPEPKDmJKcBzAs9f7tcv91DUUZFJSGBU7yCnVcmlWq6vUlYqGRuzd5l8raNVXBYAPSijmo_ripf_R2MJ0EMmRE2FooiwBGYszuuEQvlKYcyJeIURiX9oNCtgrV80uKQuKoPNWpmYeubljpMCEr6rC8qkaJhPiCQAPYg_3wB6-Prl8Vurn9OcEkEP4agtIlGfGQPooXuHZl6Qzb1KM_sqtqC1tyzLcj0UkChIbdsNtH8VULwWb8I8PPOMSW3Gd00xCnohTn5tSyE5JQVA-g6UMamreirKPswYgG6tvW1jz3aDJl4BwvbYAEpjj84Z8K1mL9mOkfx_CEtyykVbFr4IRhx7tMeIpiQTmsARGoCChjPTLFZxpWLF0v-ZWXAzi586lhsktuUgC263nOq9dMtlY0ueRQA97ANv6znXecbq_fWO1aajkq-ckmQlypVlsDoOsnqkzhBp4juJFfuweccK8LqsZZ4x-pKxXU5v8zL-8Y3uspIBFPRC36hO0PxW86bjoe_8UsZE6hHD1nYWLdw770XyjO2-0XQsndYsNk8bkudPFUDrC3kSpSGyYr_nx53wQy3XPeTnMVWg3kuJiFPzYIbNW_pQs7ix9CyGTo-7FHHYUtfqljhvSBz149iLh8T9L8l_fKOizuUApLJCxcrW7NSz0iOanyrKm-haN5uHbo9Jnqt8vE0ZwBshE9NMGYlyus1SvVfZveJMbEtGt-VY6xE_jRXPRfakWa8d1dpCbG-xHkAe7BBmYitIQReMH085aB9NelJKnZYHEgmVJMvN8y-S_zAb-XiGJ56onBXa48kfSv6L8ORRKjbK5pcXAsJK9laUtYCMFFRUevsIzYjvVMiXzcNj-ofak56JaLI1r9kTG7AadCMA8nNSRAkByB_hmrgnfPciG1OyHE9_rzGe_jk1bmYFoCAv2e5YvIawQa5xz-w8_mj_InZMfX9-8R4No-VAOcH7x6aEA-e30XyRswDybOoPdpDgHy4_jMvwHy4_hEt1jLamG7RN_Y9MeMdyjNI_OsfTBCMUeQtue6q-l0-VUrdOSKX91GgdUazxTDfe5Z16zUj-JjLxlTCyo3rzisoyV581078UmVzwXuO4vo8ir_cHmvIRUetsPp6ziqoD6ST0lGhnpvfhBA0HKVWPTEiu77fqTLA-JmA0m44G-zPhlMlHlpZQ_zbQ5U77ygcRtXof4IkPXDtCE-gtGbMRON1mL4OZ2BHqMTtjzCghLoEV5WnJi7XOUeLE5b07fYpXwmmyrSQHeDO4O5Q1j-nXnUqPrUsmQaSs2pRM0r08cPjXPONPlfxKMrYpWZrtBnOEcNA7kyTcqXEeSQZZ-Eu5y2KSn7pILA0AKOhsr1n2_zU9sP0rLUr-dlunqVkAnXxCU1LncpvQnEq6PMbUNkd7x9QDS_eWWQrf68uL29Oju8tITmOpbj5C8rfD4DgWAO351tla48Prv4VnToTn-JKbJGGEhpdcUeWZXLPkmZcxFaLF-rcE3X_gkjgqsVgU-byah-PZNEJun4r9SbbyvdCdXwf_bav4MjudF3vhgN5gSm-I00V6m4NJ_ErMEeRYHe1keW2Om4vZHOK0tzmc2hx79ENs_puM68rkAGE0eReR2LHjw4Jk7DJFetuLnf4ChOxReR0jagUYbrd5FsVbIQmX2wZKN-tO9V1_iR-Rte--ohW2AXqIRQ3Qw2rVPepOPc8qBniNHaT-3-hGU8v9iEKj9VK2-1HL_PA92VVyg5MQh-SK3tg-xgH2Axdfvd4Eju1FoWfZSZAETkpjmoSY4MAlFHs0Cq-yG2Qhx0a2ZWPsY7zycRxaiYdIklDb9lPgWLQgWb7SLwlLvrvSr9BubDvEfnCVk4jmQv_ZGUI6GhEC7t0Vv9F2RfVOAMfKMyFFP4PMZK7_VE0PcO9m_2ZMv4-j4qrm-c1ff83XwPx5g_4VAAD__3ub5Cc">