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

    <tr>
        <th>Summary</th>
        <td>
            CSE Pass violates assertion with message "(HT.TopLevelMap[ThisEntry->getKey()] == ThisEntry && "Scope imbalance!")"
        </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/6c01b5cdaddce8df325020659d73cd7728778392

Reproduced with: 
`mlir-opt --cse temp.mlir`


```mlir
module {
  func.func @func1(%arg0: tensor<2x2xi1>, %arg1: f32) -> f32 {
    %false_2 = arith.constant false 
    %cst_4 = arith.constant 1.59615526E+9 : f32
    %true_5 = arith.constant true 
    %8 = tensor.empty() : tensor<2xi1>
    %9 = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} outs(%8 : tensor<2xi1>) {
    ^bb0(%out: i1):
      %true_144 = arith.constant true
      linalg.yield %true_144 : i1
    } -> tensor<2xi1>
    %14 = tensor.empty() : tensor<2xi1>
    %15 = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} outs(%14 : tensor<2xi1>) {
    ^bb0(%out: i1):
      %true_144 = arith.constant true
      linalg.yield %true_144 : i1
    } -> tensor<2xi1>
    %93 = arith.maxsi %false_2, %true_5 : i1
    %alloc_132 = memref.alloc() : memref<2xi1>
    memref.tensor_store %9, %alloc_132 : memref<2xi1>
    %alloc_133 = memref.alloc() : memref<3xi32>
    %alloc_135 = memref.alloc() : memref<2xi1>
    memref.tensor_store %15, %alloc_135 : memref<2xi1>
    return %cst_4 : f32
  }
}

```

trace:
```console
Assertion failed: (HT.TopLevelMap[ThisEntry->getKey()] == ThisEntry && "Scope imbalance!"), function ~ScopedHashTableScope, file ScopedHashTable.h, line 244.
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 --cse 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                 0x0000000100a9b6f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 72
1  mlir-opt                 0x0000000100a9bc14 PrintStackTraceSignalHandler(void*) + 28
2  mlir-opt                 0x0000000100a99d18 llvm::sys::RunSignalHandlers() + 148
3  mlir-opt                 0x0000000100a9d4e4 SignalHandler(int) + 252
4  libsystem_platform.dylib 0x000000019fc254c4 _sigtramp + 56
5  libsystem_pthread.dylib  0x000000019fc0dee0 pthread_kill + 288
6  libsystem_c.dylib        0x000000019fb48340 abort + 168
7  libsystem_c.dylib        0x000000019fb47754 err + 0
8  mlir-opt                 0x0000000104739904 llvm::ScopedHashTableScope<mlir::Operation*, mlir::Operation*, (anonymous namespace)::SimpleOperationInfo, llvm::RecyclingAllocator<llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>, llvm::ScopedHashTableVal<mlir::Operation*, mlir::Operation*>, 32ul, 8ul>>::~ScopedHashTableScope() + 300
9  mlir-opt                 0x000000010472fad4 llvm::ScopedHashTableScope<mlir::Operation*, mlir::Operation*, (anonymous namespace)::SimpleOperationInfo, llvm::RecyclingAllocator<llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>, llvm::ScopedHashTableVal<mlir::Operation*, mlir::Operation*>, 32ul, 8ul>>::~ScopedHashTableScope() + 28
10 mlir-opt                 0x0000000104729c08 (anonymous namespace)::CSE::simplifyRegion(llvm::ScopedHashTable<mlir::Operation*, mlir::Operation*, (anonymous namespace)::SimpleOperationInfo, llvm::RecyclingAllocator<llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>, llvm::ScopedHashTableVal<mlir::Operation*, mlir::Operation*>, 32ul, 8ul>>&, mlir::Region&) + 160
11 mlir-opt                 0x000000010472f9d8 (anonymous namespace)::CSE::simplifyBlock(llvm::ScopedHashTable<mlir::Operation*, mlir::Operation*, (anonymous namespace)::SimpleOperationInfo, llvm::RecyclingAllocator<llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>, llvm::ScopedHashTableVal<mlir::Operation*, mlir::Operation*>, 32ul, 8ul>>&, mlir::Block*, bool) + 324
12 mlir-opt                 0x0000000104729c00 (anonymous namespace)::CSE::simplifyRegion(llvm::ScopedHashTable<mlir::Operation*, mlir::Operation*, (anonymous namespace)::SimpleOperationInfo, llvm::RecyclingAllocator<llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>, llvm::ScopedHashTableVal<mlir::Operation*, mlir::Operation*>, 32ul, 8ul>>&, mlir::Region&) + 152
13 mlir-opt                 0x0000000104727f0c (anonymous namespace)::CSE::runOnOperation() + 176
14 mlir-opt                 0x00000001046984ac mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 512
15 mlir-opt                 0x0000000104698b7c mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 364
16 mlir-opt                 0x000000010469adc0 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) + 108
17 mlir-opt                 0x000000010469ab98 mlir::PassManager::run(mlir::Operation*) + 864
18 mlir-opt                 0x000000010467ff94 performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 560
19 mlir-opt                 0x000000010467fb28 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
20 mlir-opt                 0x000000010467f8f0 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
21 mlir-opt                 0x000000010467f804 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
22 mlir-opt                 0x000000010488a92c 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
23 mlir-opt                 0x000000010488a410 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
24 mlir-opt                 0x000000010467d244 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
25 mlir-opt                 0x000000010467d44c 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
26 mlir-opt                 0x000000010467e010 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 2912
27 mlir-opt                 0x00000001002bd278 main + 148
28 dyld                     0x000000011dd15088 start + 516
zsh: abort      mlir-opt --cse temp.mlir
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWllv4zgS_jXOCxFDou4HPzjHoINN0EESDDD7YlAiZWubErUklY7n12-ROiw7lxJ076QbMZxYFot1fHWQRSsVdLu4ury4QWlTcI2IRpkoy0Kjjda1mnnLGf4D3utCb5p0DmPwhfP7_uO4luI_LNPwtZ0HF2HmuGmQUUJpxmKaezhwsBMGCY28jEYRjqMo9hI8c85mzrL9f8OAEW0yRtF3EAVyUTccOiUv5LGoNTo-zhRDmpX13NyDoTGLgb59Wwp7qwTGnKFZdNJ-Ryhvqmxu_qGZ75hPd4bjGQ6IXDtGtGaVEnLmneIH_FC4M-98hk9RS-AaArBphhN0DCPmeswbGbqccMVWcN87Q0SCQYBcpTSpNLJDaI86U3rlP0XrzoMkdIMAh6DASYJ60ePJWjZsFTw124zsC4otWWvdHGDUW2t3y3hkdGvyeGZiZ_KiInw9X7OKySIzVhcVZQ9FtV6VpFaWZhackDwvKmZuATeQQJ0BrP6b4R-cGVQLzSTRQq70tmYDixnGNZGEc8bh0pBGZ0g0WrWOip_W2Fiy54ngPE2ddgpMNnOA0Ehf7oh2KLr-k14wY2PyDoVtwTg9mGv578SDztbqF6F1_Xd7xQ0-lltc_zfyS-KNhJbkQRWjzO7qwZB8BwKgUnAuspXrtTWgZKVk-dzeHDm3vf2U_G5Cq-BKgSOY1amvQyPuL7EZkXqTFPEeCqgvz7AIfqgtbnBgTPAKH8l0I6txwdyrhuDVbgkYLvZXhPFNLUnGhnAbSExsCd5F1VIpJnUhKqjZBWfULko4_nI3vxP1Jbtn_ApSKTi52xTqvNJya2JqzfS_WJfAkB8GMQPaQAMcQnjDB77NRM1QUaaEkwq0wa7JKWx9bBYlK3oWnVs6-oWozR1JObNfLQ0ohQ4G5xszApnAEPb9eWvI9eX58vYcqSY1CzuBpX4NYNZCQg6Jty_0hVINg4z_A5GKoqLKeENhWd4wlEnQA6Uk-2bx7cTfariBaFPWA-AODCXXUqwlKSHD1k3JKq2s-59b7A9Y2W0C1A6ktmUqOKpIacoUjiHKGgiwrWjQhtwzZJVviYq_mQR9zZhE18u7L0hIpJi2urPqvpCiMoqgeyIRRMPl5Z9Xq9u_rk6-Xl78-_xmZabAbQNaLYrKomd2PLu65aCdAYcv58FpX67jkCQN89jqZuZ6S7VV7cW1BMbWzDsbojjeEUnyfSWUloyUNoqgSlfa5h8-QVGXCO50FTKo1wfybos1FNEv4FjOJAi_FwWd4WUvBMLaCsGThSTUfdLOm6bak6X6UgJSXL8T400WQ33mo0PlR-jgoIPHN-tECmpAZK1qTnQuZDmnW7g5YpnkGQ78zEcrVawhliHeDJcgbJkEe0z0BjxCOx77TBzKmIM6itW3gvMOxs7AcMwo61kcGpjkqR97voNIanLWQhR2HKLJHKIo8BGT0s7vimE8DWA_8pLE8Ud-fLImeac2Uy3B19rsH6CC2eg5Rc-PgKNIJaptKRrVpnFtAz_pJBVlzdkw6aLKhS1xgyo3LNtmUPHWS7OOmD0LKLIbPoFica3lMHgB7PYIruz6s5sMzH0nCRu-f-XiGC7aTuBZHP4k_D0otFw93Erq5Ji3oXx2BRjyxXM6dyZT3YlzQj_d-UHd2RdZ15nqzSRz4teAP73tFFDGA0W-vWFrq2_8rPmfEfCjI6BdtXeTeh-Ew9LXb1Ndd3IqJ_Ttzj8BcL59-v6f9H3nAssqFYIP1Rz7XQjgN-S_85n_v2AMPM7_fp_qelOdH-VONtn5sqm-ViNVd3vuqNvbQk8wSXCYxD7JRrZQpqFN7sG4E1_ra6LUkpLaerCTDiJ3UwzBq-G0G1nC7n6rCnVFKrJmcpc4p6ipYKNeMTruiAK3xzKYbFIavd2k66JmpuPeM60lHTQNf7iN40lG1EUFnaHto03IL18iaCW3A53u10TCgMlFZM_XRj2fF_b1KJwKI6GZcyC9t2cADe6ZQ4T4XaB0Mev0O6VosmZpEr-i2Qs6tWLjAZB4otgozxMfASvTbC7twY56pbPvnd5_jiqUaGTGrtaPo8r8jnMqKs0edAfhblZ_oLRqD9d2ky7FusgIv2Gq4aa3jJ9Gx5aorq7t69Yl27BxSSaDkuIY1VJkTKmTJs9tz_4SJkrTdmi1ctuLpir-2zBowfeXiCtWCrnteT41kbKcgL0ryjjT7PnJXdl-7I_XPn8O8juKs4JwlmmzgABG2w6hndQ7e-RwbbUZItdPuiKPJ7YW4KQ4H6fyFVx9rfUVKaoP7Kx_Bvy3hkiXPi3LGfZXTnsp6vanl-4QGccfA8pDFyftStG2rE5XEvHEtsUEluOj5_zxHgd-UJSGxh-U5eZofJVXe4Z8ptTPTalzg6qo1h8HwceZZLcV3QKKJ7Z9cUwSnP2WqfILVsBhZZ3Yt4H3fHe8sipoyvWyotcHG6KPYfpvEVsvUjy9rXWHX7ymtsURxb7_uWP6meW9Oybr6-XU7j6ivp_9cp7ZR7nv108voWNXTPbdevjz4N6HHQ-FbuppQMQc9_kWojvLyDakPbU4aFtvtSyq9Q2E4mT7ej370x887XDAwSnFEXT0oNf-r9DQpdItp48m7zNwKXUDJ47B56T7kTZwO6z-VvaJxvbnW_t6-TGH4XmUI7ZwwzBxvchJoiO68GjiJeRIF5qzxentOTIxge4LwYlmCpHhiRXzdAQqYR2BnET2sZL_x3Mr-KiRfPH-B0oCsDQ42iycgGa57wawRHpBEDrUJXGaei7xcpx7hB5xkjKuFu0TaRX7jiyL9pG0o2KBHYxdF_4AtiCZ0zQK4pQ4LMQ-jV0y8x0GbuZzo8dcyPWRXFiV0matYJBDUKndIKBqzt2YFQf8SaM3Qi5OBefCPETTKOfIyl9Y_f8H7c7ZAQ">