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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] LLVM legalize for export Pass : "Building op `llvm.br` but it isn't registered in this MLIRContext"
        </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/fd716925eca2a65c79a4375fb46151816afc1809
Reproduced with:  
`mlir-opt --llvm-legalize-for-export temp.mlir `

temp.mlir:
```mlir 
module {
  func.func @func1(%arg0: tensor<16x14xi1>) {
    %c14 = arith.constant 14 : index
    %alloc_8 = memref.alloc() : memref<16xf32>
    %alloc_14 = memref.alloc() : memref<1xi1>
    %alloc_21 = memref.alloc() : memref<16xf32>
    %19 = affine.load %alloc_14[%c14] : memref<1xi1>
    cf.cond_br %19, ^bb40(%alloc_8 : memref<16xf32>), ^bb40(%alloc_21 : memref<16xf32>)
 ^bb40(%47: memref<16xf32>):  // 2 preds: ^bb39, ^bb39
    return
 }
}
``` 

trace:
```console  
LLVM ERROR: Building op `llvm.br` but it isn't registered in this MLIRContext: the dialect may not be loaded or this operation isn't registered by the dialect. See also https://mlir.llvm.org/getting_started/Faq/#registered-loaded-dependent-whats-up-with-dialects-management
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 0x00000001028e9e70 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x00000001028ea38c PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt 0x00000001028e843c llvm::sys::RunSignalHandlers() + 148
3  mlir-opt 0x00000001028ebff8 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  mlir-opt 0x0000000102768478 llvm::report_fatal_error(llvm::Twine const&, bool) + 356
8  mlir-opt                 0x000000010547c3b0 mlir::RegisteredOperationName mlir::OpBuilder::getCheckRegisteredInfo<mlir::LLVM::BrOp>(mlir::MLIRContext*) + 196
9  mlir-opt                 0x00000001038865c4 mlir::LLVM::BrOp mlir::OpBuilder::create<mlir::LLVM::BrOp, llvm::MutableArrayRef<mlir::BlockArgument>, mlir::Block* const&>(mlir::Location, llvm::MutableArrayRef<mlir::BlockArgument>&&, mlir::Block* const&) + 88
10 mlir-opt                 0x0000000103885a78 ensureDistinctSuccessors(mlir::Block&) + 720
11 mlir-opt 0x0000000103885470 mlir::LLVM::ensureDistinctSuccessors(mlir::Operation*)::$_0::operator()(mlir::Operation*) const + 232
12 mlir-opt                 0x000000010388537c void llvm::function_ref<void (mlir::Operation*)>::callback_fn<mlir::LLVM::ensureDistinctSuccessors(mlir::Operation*)::$_0>(long, mlir::Operation*) + 52
13 mlir-opt                 0x00000001067dfd48 llvm::function_ref<void (mlir::Operation*)>::operator()(mlir::Operation*) const + 68
14 mlir-opt                 0x0000000106b26bec mlir::detail::walk(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) + 404
15 mlir-opt 0x0000000106b26b9c mlir::detail::walk(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) + 324
16 mlir-opt                 0x00000001038852b0 std::__1::enable_if<llvm::is_one_of<mlir::Operation*, mlir::Operation*, mlir::Region*, mlir::Block*>::value, void>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::LLVM::ensureDistinctSuccessors(mlir::Operation*)::$_0, mlir::Operation*, void>(mlir::Operation*, mlir::LLVM::ensureDistinctSuccessors(mlir::Operation*)::$_0&&) + 68
17 mlir-opt                 0x0000000103885174 std::__1::enable_if<llvm::function_traits<std::__1::decay<mlir::LLVM::ensureDistinctSuccessors(mlir::Operation*)::$_0>::type>::num_args == 1, void>::type mlir::Operation::walk<(mlir::WalkOrder)1, mlir::LLVM::ensureDistinctSuccessors(mlir::Operation*)::$_0, void>(mlir::LLVM::ensureDistinctSuccessors(mlir::Operation*)::$_0&&) + 48
18 mlir-opt                 0x0000000103885138 mlir::LLVM::ensureDistinctSuccessors(mlir::Operation*) + 28
19 mlir-opt 0x0000000103888fbc (anonymous namespace)::LegalizeForExportPass::runOnOperation() + 28
20 mlir-opt 0x0000000106650ddc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
21 mlir-opt 0x00000001066514ac mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
22 mlir-opt                 0x00000001066536f0 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
23 mlir-opt                 0x00000001066534c8 mlir::PassManager::run(mlir::Operation*) + 864
24 mlir-opt 0x00000001066372b4 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
25 mlir-opt                 0x0000000106636e04 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*) + 524
26 mlir-opt 0x0000000106636bb0 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
27 mlir-opt                 0x0000000106636ac4 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
28 mlir-opt                 0x0000000106843590 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
29 mlir-opt                 0x0000000106843074 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
30 mlir-opt 0x0000000106634504 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
31 mlir-opt                 0x000000010663470c 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
32 mlir-opt                 0x00000001066352d0 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2912
33 mlir-opt                 0x00000001020fff44 main + 148
34 dyld                     0x00000001202c1088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1v47bS_jXKDWFDIvV5kQvHSdAFkjdBsngPzrkxKGlk84QiVZLaXffXH5CSbMmxE7e7i6ZFt0XsSOR8PHxmOMOQas3WAuDSi6686PqCtmYj1eVSci4bqUyr_YtcltvL-7tPTyhvGTeIGlTIumYGbYxptEcWHr718O2amU2bzwtZe_iW8y_Dx6xR8r9QGA_fdvM8fFuVSRBnOIKCYhpHRZLRkCRRlYdxEAVpENOqCFI_8_xrz188QaNk2RZQoq_MbDyyQKh748V-zZmaycag2cxp47CmnP0Gs0qqGXyzXiADdTO3A5EX-_1M93P3wnoxSOz-74a7Z7UsWw7IS6663xGqWlHM7Q_khb79DDycejiiau1b8wwILZVHlkH8LQi_scAjNx7OxiIQ8nBUBCHyyDWiipnNvJBCGyoMck8XiIkSvk3GU85lsUrdnBpqBdXcPXLaMzepe9yprgi2il9L6NW-K6K3_LUAHHyHDUHWOV1VTMCcS1qOLbNUdMh40fU75hSVxaxc5aoT6-El8qKbPA_9fj12eB01Cp-a4dw7NaVTP5kVJqeHO7a6CEEYNQpKGzLddLLXT7K9WwpMq8SgJ7numbn7MlAUTaisaAGvaWw5JTkMAXN39__36Obp6eHJGnHVMl4ysUaysZFh42eeKys5bw1iBjEtPJwYpGDNtAEFJWICmQ3TyGaEpRQGvhnH-A2gklEOhUE13SIhDcoB2cWFEknVTZINKGqYFMck59uxlDl6BkCUa3mQZ2xgzp2pUq1t3gFjmFivtKHKQOnh21v6qxtK9sJnnSGzEhoQJQgz-7qhRs_aZmZTyqxXqmc1FXQNNQjTAfZ4d7N4vkG6zW3Goyhv10hBl1UOLTsjAzKtW9CWC1RYLAveluDcLhTVG5TT4sWt5LxT_2xo8YLKtm52S-vPPT97VHKtaI2oWrfWWMep35UKD-W71Cpbg_S2ziVHgtagkYdTELpVgLayRRv6BZAT3Q1iv4GyhNjKVqHHxedf7EJrMM4hEF-YksJah75Ql3ot-1bP_76_erj79J-bp5WdYtlmJGokEw5Suz9ke2fR3iv_m9_9C3ycQgaJ72yxY8lCb3X35VExYZxbn11E4HQ_SNGvK6mNAlp7OLaxx4RxSQtfoQR3KoORysN_UxMoSQt0oO-ZrQXlv1BRclAeTr9IVnp4MSjBaacEn_QrDUlxzK-nVkxk6yHf4isUhL1YclJsXlUpOjRu5D2OevdDxFmut9pAvWo4NZVU9bzccpaPJGZZ4pdhEaKVZmujaN04IVHcyYjGMsxGAS17ERMZcRUB-KgfsXphnPcg9e7EIznFIOFwJbIsJj4JfURzS3CHR9wLSE7gkcRpmKQjmLuQXlXUUL4CpaSaEOfzVyYAuf25J04uJR-wI4Pf6XnUicKkILmPhsKDLJ52iephyJD_R2sYjXhoXLKG_tc1mOUGipf9xE-ikh5Z7mfYYOu-XamHxm1G6f7tOH3v6RlkvSfZeZ6QNI2jIkSntJ52oFBADbxlMF6O1ue-NTTnsFCKbp_cHrufd8Vl8bLoE6Hzc4kO3np4sV-9AyTuZOEA_x6Fcc-Kt9T2EA_cDvxzEY5okqIuC18zbZgozHNbFKC1dFngldJ4n9L6ajcIjsaBFR4m_tHlO0vhjq0dh7qHHg5Xfve12-9dMLli6_TUDqcu_MmQifHZEJGkQDbVjlbQluVW_qqrydzbt42_6alJObf78KoSJ_j53dhYBnIp1lPOHELiUuqABTkLizgpqzJMfwQMf2jthsQbhOeZm-M4h2KEQQmGMt59_0r5yxt6l9_p5QT7f1H-8qBseuqBD_2wdyU6GjvO9OxDmk7wYHp8dgDh3EfalJ3E1SoYiG6T4IpZw_YWM72SAlZymhUPPTznjd2-jjwekueOi18ob8GOceXU8NRsG3gLf7Kc4DjGKZgq_HGh_abjg_VvEeOnGBWPNoVdiCZnkyNIwrPJsaOzUZTZvmT5emYJBd3-vNy6I8fuF9HWK6rWGnnk2iPXKHiPS3sFfzqdjpHmJ1FjaCOC9HxqkPSHOT7pkILsVMmSVnlhMyQVUmxr2equV21ct9c7d9e3vrdS3bjG95HqvpFSrXgQI83pq97MP57w48gvy1MJ_6H5LB8aq2VR0sZum4OyicfOjPPz40JQvtVM37tTCbVvPJaoFe7othy3sFHQVwv4eL0Xx1EQ0t_vwiNrgDMBB4tnh-4si3-4T-NJVtUnoY1yNbctShZvDRiF7mD7I1UgjO2ShpJ8RzkS9_slPq_gjOOIxJV_oH3wZwca1Rre4vuboPT9mD9w8szyL45IWKTvWPZuDKY7QMITPCIJzkPUgKqkqhcu4et3jlqGRR4-X28LekMVlKvGqMmO8ixbVcD9WnnkZtKDn-5m36ivxo3fmhWUP4FuuUGvwnTM7KHomvrQB93wJwUcnblGJAY_RI2SNidetVUF6h3sXmPVCvZrC6-wuodaqu0g89jEEiracrMqgYNrwE9MthvjEZ_f__w5yO9HXHdHtd3Jh9r2CI3Oatxp0qOzZtRGDYyOTzE6zidHMvecqYfG3FMmPvDi_Dlg_15K9OEyKdOOtpgfA8rDJZ4cTgxtIT6vfLbEotMTssl6_JEF_KAovXuA8k9I_dyQGp8qfQwEX0eSKy-GDfO8NiNOQxJl_t8yVP6CGXD4EwHOzl49PxknQN1wZhaifDwogD6G638Lbr054ngZGwztLznV_pIw8sN_KqSfmc7749s-P5Lg3BIjTPziL7cyU5SHPn1590iVBnWi0_uRcE9hx0NiI-eeApAIl6dbhv4Mo9jQ7rTioC19NoqJ9RNU5_s32Dmc8pDzDgWwX1VVGKKaMnFwXSBE5ZaXryZPBWAfF4GfpsjdsOkPmuLx3aPdbaOL8pKUGcnoBVwGceKnYRAlwcXmkpCyDKEqM5oQXEY-9vM4gzjI4zhKCFQX7BL7GAf2P59kOJvHVZREOCqDKgMcxeCFPtSU8d3Vnwt3l-YyysIYX3CaA9fuGiPGAr4i99LD2IuuL9Slu7OSt2vthT5n2ui9FMMMd_cf3RpE18hdkRquzqBKKtRfnbEsddfCPIx_1M0pjC9axS__-D0i5_7_AgAA__8wpm_5">