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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] LLVM Legalize violated assertion in function Block::getTerminator() and crashed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </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/0ee6bad6a6725c2913116a8fa7769b067c219f0
Reproduced with:  
`mlir-opt --llvm-legalize-for-export temp.mlir`

temp.mlir:
```mlir 
module {
  func.func @func1(%arg0: tensor<16x14xi1>) {
    %c0 = arith.constant 0 : index 
    %cst_4 = arith.constant 1.51835136E+9 : f32
    %16 = memref.alloca_scope  -> (memref<1xf32>) {
      %alloc_60 = memref.alloc() : memref<1xf32>
      memref.alloca_scope.return %alloc_60 : memref<1xf32>
    }
    scf.index_switch %c0
    case 1 {
 %48 = memref.atomic_rmw mulf %cst_4, %16[%c0] : (f32, memref<1xf32>) -> f32
    }
    default {
    }
  }
}
``` 

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 --llvm-legalize-for-export 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 0x0000000100a5a568 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x0000000100a5aa84 PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt 0x0000000100a58b34 llvm::sys::RunSignalHandlers() + 148
3  mlir-opt 0x0000000100a5c6f0 SignalHandler(int) + 252
4 libsystem_platform.dylib 0x000000019970d4c4 _sigtramp + 56
5 libsystem_pthread.dylib  0x00000001996f5ee0 pthread_kill + 288
6 libsystem_c.dylib        0x0000000199630340 abort + 168
7 libsystem_c.dylib        0x000000019962f754 err + 0
8  mlir-opt 0x0000000104a24710 mlir::Block::getTerminator() + 108
9  mlir-opt 0x00000001023dbdd4 mlir::scf::IndexSwitchOp::verify()::$_7::operator()(mlir::Region&, llvm::Twine const&) const + 68
10 mlir-opt 0x00000001023dbc0c mlir::scf::IndexSwitchOp::verify() + 868
11 mlir-opt 0x00000001023febe4 mlir::Op<mlir::scf::IndexSwitchOp, mlir::OpTrait::AtLeastNRegions<1u>::Impl, mlir::OpTrait::VariadicResults, mlir::OpTrait::ZeroSuccessors, mlir::OpTrait::OneOperand, mlir::OpTrait::SingleBlockImplicitTerminator<mlir::scf::YieldOp>::Impl, mlir::OpTrait::OpInvariants, mlir::OpTrait::HasRecursiveMemoryEffects, mlir::RegionBranchOpInterface::Trait>::verifyInvariants(mlir::Operation*) + 80
12 mlir-opt                 0x0000000102143888 mlir::LogicalResult llvm::detail::UniqueFunctionBase<mlir::LogicalResult, mlir::Operation*>::CallImpl<mlir::LogicalResult (* const)(mlir::Operation*)>(void*, mlir::Operation*) + 60
13 mlir-opt 0x0000000104c8df40 llvm::unique_function<mlir::LogicalResult (mlir::Operation*) const>::operator()(mlir::Operation*) const + 60
14 mlir-opt                 0x0000000104c8cc34 mlir::RegisteredOperationName::verifyInvariants(mlir::Operation*) const + 40
15 mlir-opt                 0x0000000104c8c3a4 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) + 548
16 mlir-opt                 0x0000000104c8cf6c (anonymous namespace)::OperationVerifier::verifyBlock(mlir::Block&, llvm::SmallVectorImpl<mlir::Operation*>&) + 668
17 mlir-opt 0x0000000104c8c614 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) + 1172
18 mlir-opt                 0x0000000104c8c080 (anonymous namespace)::OperationVerifier::verifyOpAndDominance(mlir::Operation&) + 36
19 mlir-opt                 0x0000000104c8eb6c (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0::operator()(mlir::Operation*) const + 36
20 mlir-opt                 0x0000000104c8e950 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&&) + 152
21 mlir-opt                 0x0000000104c8d1cc mlir::LogicalResult mlir::failableParallelForEach<llvm::SmallVector<mlir::Operation*, 6u>&, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0>(mlir::MLIRContext*, llvm::SmallVector<mlir::Operation*, 6u>&, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0&&) + 84
22 mlir-opt                 0x0000000104c8c690 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) + 1296
23 mlir-opt                 0x0000000104c8c080 (anonymous namespace)::OperationVerifier::verifyOpAndDominance(mlir::Operation&) + 36
24 mlir-opt                 0x0000000104c8eb6c (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0::operator()(mlir::Operation*) const + 36
25 mlir-opt                 0x0000000104c8e950 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&&) + 152
26 mlir-opt                 0x0000000104c8d1cc mlir::LogicalResult mlir::failableParallelForEach<llvm::SmallVector<mlir::Operation*, 6u>&, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0>(mlir::MLIRContext*, llvm::SmallVector<mlir::Operation*, 6u>&, (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&)::$_0&&) + 84
27 mlir-opt                 0x0000000104c8c690 (anonymous namespace)::OperationVerifier::verifyOperation(mlir::Operation&) + 1296
28 mlir-opt                 0x0000000104c8c080 (anonymous namespace)::OperationVerifier::verifyOpAndDominance(mlir::Operation&) + 36
29 mlir-opt                 0x0000000104c8c008 mlir::verify(mlir::Operation*, bool) + 60
30 mlir-opt 0x00000001056a67a8 (anonymous namespace)::OperationParser::finalize() + 724
31 mlir-opt                 0x00000001056a43f4 (anonymous namespace)::TopLevelOperationParser::parse(mlir::Block*, mlir::Location) + 296
32 mlir-opt                 0x00000001056a423c mlir::parseAsmSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::AsmParserState*, mlir::AsmParserCodeCompleteContext*) + 256
33 mlir-opt 0x00000001047b6024 mlir::parseSourceFile(llvm::SourceMgr const&, mlir::Block*, mlir::ParserConfig const&, mlir::LocationAttr*) + 252
34 mlir-opt                 0x00000001047accf0 mlir::OwningOpRef<mlir::ModuleOp> mlir::detail::parseSourceFile<mlir::ModuleOp, llvm::SourceMgr const&>(mlir::ParserConfig const&, llvm::SourceMgr const&) + 76
35 mlir-opt                 0x00000001047acbf0 mlir::OwningOpRef<mlir::ModuleOp> mlir::parseSourceFile<mlir::ModuleOp>(llvm::SourceMgr const&, mlir::ParserConfig const&) + 40
36 mlir-opt 0x00000001047ab978 mlir::parseSourceFileForTool(llvm::SourceMgr&, mlir::ParserConfig const&, bool) + 72
37 mlir-opt 0x00000001047a84f0 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 260
38 mlir-opt 0x00000001047a81b0 processBuffer(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, bool, bool, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) + 496
39 mlir-opt 0x00000001047a7f78 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::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 204
40 mlir-opt                 0x00000001047a7e8c 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&) + 80
41 mlir-opt                 0x00000001049b3440 llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::operator()(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) const + 96
42 mlir-opt                 0x00000001049b2f24 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) + 128
43 mlir-opt 0x00000001047a58cc 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) + 320
44 mlir-opt                 0x00000001047a5ad4 mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, mlir::PassPipelineCLParser const&, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool, bool) + 296
45 mlir-opt                 0x00000001047a6698 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2912
46 mlir-opt                 0x0000000100270f50 main + 148
47 dyld                     0x000000011e749088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW11v27jS_jXKDVGDor4vcuE4CVrA2QRJ3wK7NwZFjWy-pUQdkkqT_fUHoiRbcmxH2-z2pIsWRaNK5PCZDz4cDhmqNV-XAOdOcOEEl2e0NhupzhdSCFlJZWqNz1KZPZ_fLD_do7TmwiBqEJNFwQ3aGFNpx5s75Noh12tuNnU6Y7JwyLUQj_2PD5WS_w_MOOS67eeQawwQpjQLaRiRgJHE9Vw3pHFOoyhMUhxGjLhJjh186eD5PVRKZjWDDH3jZuN4c4TaL06IC8HVB1kZ9OGDHUzAmgr-J3zIpfoAT40SyEBRzZqGTtiJbP_dvffmW4Ht3-ZtN0ghs1oAcqKL9v8I5XXJZs0_yPFx89N1SOyQgKo1btAZKLVUjrdwwyfXf-Ku4105JBmKQMghAcPI8S4RVdxsZkyW2tDSoOblHPEygyc0bq7Nyj_Uw50FbuwFrhdeOeQisf1zj4w6u6HtWUChIJ9RISSjK81kBQh9cLwr5JC4_djgfmq6HwBtRdnOqxC_EGit0A7_UtRAxgEQMwWmVuWe-JNynOhy9x_N8pk12Up_44ZtWvPuvjOqAbkDZRwS-PFIAyMLzlaq-IaKWuRbgztk0dqvmSJWaHBpoTkkbiCRxQGQJGmNOvbCEHAGOa2F2YuJXYvt4-6hj000imFFGbyM3yY2pIB-osy1BmW4LFFOuYCsw-8QF4rKPPeOI6FDQpRS9rV9Myv4emM-0kf4rCg3jre4rbqnuePNP-nPoApeUtNE-1Xbx_5d2DliB1yDGbRqvnAB6EJI9nXGqqp5I3gJiHjerAV7t7yaP1whXacNyVCU1mukoJ3J8q-TDte6Bu2Qa0TLDPGSiToDZDaAmKJ6Y9W1VuyGfzCUfUVZXVRbs-KZg5M7JdeKFoiqdV1AabSNz79EP3vyLZ3J2iD9XKRSoJIWoBu_QKlrBehZ1mhDHwFZ0W0j_icoxMvmm0J3888fkVRIg7EKQfnIlSwbdOiRKuSEeLn8crN6-P3m4nb56Y-r-1XTpYkhI1EleWlN2lByslMW7bTCT7j942JMAxqEscXSul8_6_bhTvHSWLU-22gk8a6Rot9WUhsFtLDhtUC8NG2wXaComx3uYMj9P3sQaOyjvfEe-Lqk4iMtMwHKIfGj5JlD5v0gJG4HIUf1ilPPP6TXfV2OZOvtPLlArt-J9Y6KZWGO0T64gfYk6NT3keCpftYGilUlqMmlKmbZs-DpQGKSRDjzmY9Wmq-NokVlhQRhKyMYyjAbBTTrRIxkhHkAgFHXYvWVC9EZqVMnHMhhvYR9TyRJ6GHPx4imTYBbe4SdgGiiAJJHgY9AKdu9o-r4sDF9SvzIxahfq7255Y_2cY9gdh7CHaLksFDiZWmW-QOhmuUdsTUryYNdSG6r9tUjKJ53RNm-cYi_itpHWYHajd6spFuZ97DmsuxCfxdjn781nGdXcPstaZ8t8N6SncKHcDPMvgO3lR5vxbtHxOeQwtAsjajFq6M16-Cgy2CZmJslUG1-a02hm3WybpaLVkhRiRN9v1DFacbZPehaGH2i5R-g5EPNGGgt1amGtyXcNv4qsxONHni5FmCjrEHIGR8G2UFz_M5BZI2tpml2W30qHxvtypNqfaT6HlitNH-EGyiker7Kc2D7fVrbXihaNs74VBpQeZcYePNO3NUwIoaDx8Oxm0i2Ebsl0LibnC6ZxNLE9b04jgfglnLNGRWtDweTIANDuWif_6_k_6nhussaLqiGkZVHIvbNNYDcK7mgQlgHHBXS5j_zfg4mp8zQJjfbdeXo6J3B-l2G6x1mMxZnuY8Hhqit8qs-ZzoN-vjYrSq9CU6Q0sGOY-j-JF_7LGbM8_cCURtQkG0H-Y0W8B2htwPl96CCyaA86je2oqUsnwtZ6za3qmx2kuyN96VBxUENMQ7AHIYY9s4O-kTADSejy0P2JnTt6jdE1r3ZW2UeCirEF2BGqheTYX_a7DQKtytEdCx-Wej-KPu67jZLjCcbGMf4jfDmZXYpG74vbUJ7GqPXJWFuMhUhpG8MgUkG3CUq-A2c0GtH8GTtkgAf5f_d-2YvSlMBd1RRIUBcS3VF2eZ4mLbk-2PNdjVqebP8dL-QpYEn88pS8PrHH6qH3dpv51S_8yDuVJdmLmNvculBVjrh6gUK656X3pvPfyJdRn6P_c7t0zI5S_TJW5l0MtGTpCca770TPZmcHv2URD85z_pF9D8L0U9OTn8R_b-J6KP3TfTvPqMnkzN6hvGw5rGtux0PlVRKsV8y8A7X_IKQhhGNJ1vgjird65_z0h5JDGqAEeniw5uW_wUh9b381R3fZ1kt4RHEQRhV83xoz7rHn0vJOiN1VfI-WLxpSUuDlXhDCrMjz3XxIGvF4JqL8QlF-_pmrQbl2MWLUvM-zFa1hSxzvj7Sca6LttWDoQZeSNh-XsgMFrKoBBgY0k9_StDrf6SaFKUhJv6-vj9a2d5tc2PUCH23AHkTM6aIMpYPc4rbbyUv17fVvT1hHZC1PZa39dZB62FJcd8OB3uPSf6ldfaWiKOWOG3ibtr1npyYX0WUpW-wxST9rX7T4-OI_smoTueFRyKVpkkUH0d4LdVny4mHAE2FMubVvnbkHSllRTT2c4wqULlUxdyWX_UrB5it_N3PKWBPpRZ92Xel9tx6ovR7R7W-oSVdg-pTgauX2Lo5uF1c4qNGcFOMKiUZaH1R57k9qjxlA22y9tNq5bYPXQ27MmqUA7ZnFr3MQx27mxCrDBoCPN7Zuzqo4-s__xlL71pcciqAmbbyrZ5fnvXZs9Y7i2ZLjP52WUuOOSXKR5PlRnB1W5kbyst37Jz_jbH_akh00-P1bfP7MOW-i4ebdoK7XM6fWJ6NaATx8S3e9zjwnVppexTGqBApZV9X-fhs7deU-menlM0tZLl-PxZ8OZOGJ9z-xHJ4knr-6AD33zNVfkIG7FdSf2JVO0lJPtow6UpwMy-zu70E6H2o_q-IrZMtDqetbn9xzz-28aVBPKpV_qLzv53O22IY6flx8iY-oKObdT-HZ8ZWvuMVCF7CYtnuNI_siP9Oc-_t27bENrleEIbJ8S2DvXq6QGxD1e5sYrB5NYqX63vIp-vX43T7i6zTThkwiXAeYFRQXo4v0_oRyp5F9qLzWIALkZ_gOEba0O76aeCGw1vx23vwZ9m5lyVeQs_g3A0jHHuRh4OzzbnnelGMvQB7mLqpFwCQOPTiICQ5kDCmZ_ycYEJc4hKckJjgGQaPhm4KPk3DKEmp42MoKBezxoQzqdZn9qb5eZD4IT4TNAWh7e_VEFLCN2Q_OoQ4weWZOrc3utN6rR0fC66N3kkx3Aj7CznWB8ElWi6_3KBld7EcPXIpqIEM0e2dfl7urtu_cjGWlll77R2y2VmtxPn3X6e3ev43AAD__1cEofQ">