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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]`-test-liveness-analysis` triggers Assertion Failure `liveness && "expected a sparse lattice"'
        </td>
    </tr>

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

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

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

<pre>
    Test on commit: https://github.com/llvm/llvm-project/commit/abc4183c731e0a352ebebc96106e3622e6ad5029
steps to reproduce:
```
mlir-opt test.mlir -test-liveness-analysis
```
test case:
```
func.func private @private2(%0 : i32) -> () {
  %cond = arith.index_cast %0 {tag = "in_private2"} : i32 to index
  %1 = scf.index_switch %cond -> i32
  default {
    %thirty = arith.constant 30 : i32
    scf.yield %thirty : i32
  }
  func.return
}
```
crash trace:
```
test_tag: in_private2:
mlir-opt: /home/workdir/llvm-project-19/mlir/test/lib/Analysis/DataFlow/TestLivenessAnalysis.cpp:48: auto (anonymous namespace)::TestLivenessAnalysisPass::runOnOperation()::(anonymous class)::operator()(Operation *) const: Assertion `liveness && "expected a sparse lattice"' failed.
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 /home/workdir/test.mlir -test-liveness-analysis
 #0 0x00005757f38b62b8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x10b62b8)
 #1 0x00005757f38b3dde llvm::sys::RunSignalHandlers() (./mlir-opt+0x10b3dde)
 #2 0x00005757f38b6cc8 SignalHandler(int) Signals.cpp:0:0
 #3 0x000075ae43ec9520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000075ae43f1d9fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x000075ae43ec9476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x000075ae43eaf7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x000075ae43eaf71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x000075ae43ec0e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x00005757f675ef79 void llvm::function_ref<void (mlir::Operation*)>::callback_fn<(anonymous namespace)::TestLivenessAnalysisPass::runOnOperation()::'lambda'(mlir::Operation*)>(long, mlir::Operation*) TestLivenessAnalysis.cpp:0:0
#10 0x00005757f39ca0ae void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11ca0ae)
#11 0x00005757f39ca0ae void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11ca0ae)
#12 0x00005757f675e5f8 (anonymous namespace)::TestLivenessAnalysisPass::runOnOperation() TestLivenessAnalysis.cpp:0:0
#13 0x00005757f6cac64f mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x44ac64f)
#14 0x00005757f6cacdd2 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x44acdd2)
#15 0x00005757f6caf55e mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x44af55e)
#16 0x00005757f6ca80ab performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#17 0x00005757f6ca7d03 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
#18 0x00005757f6d51465 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) (./mlir-opt+0x4551465)
#19 0x00005757f6ca1962 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x44a1962)
#20 0x00005757f6ca1c13 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a1c13)
#21 0x00005757f6ca1e22 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a1e22)
#22 0x00005757f38954d7 main (./mlir-opt+0x10954d7)
#23 0x000075ae43eb0d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#24 0x000075ae43eb0e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#25 0x00005757f3895045 _start (./mlir-opt+0x1095045)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWUtv2zoW_jX0hohBUe-FF2pSYwo0SNAWmKVBkZTMCU1qSKpJ_v2AlBzZqpXWnXsxj1u0tSMefuc7T1InxFrRKs43IP0A0rsV6d1em82LsES1aFVr9rr5xq2DWkGqDwfhQFzBvXOdBXEF8BbgbSvcvq_XVB8A3kr5_fhx0xn9D04dwNtxK96SmiZREdM8jjgicYp5zWtaZhHKeJxhzDPCUoRLgCrreGeh09DwzmjWU-41ogpkaPyLqoMU5kZ3Djpu3dr_BG_81xspvnPFrb0hishXK-xsoxeClNgLmE2v6Nr_BzsjvhPHIUjQ-BUDXACcIui9IGIMcAlvQPwRhuclBPkHgCoIAU6pVgyC-A4SI9x-LRTjLztKrIMDQP7BkTYIAIyF2k0aMMjvjgq8_WHrETYKWyxtRkT7LBzdvykMZDwxL854Q3rp3lgFALcXxr2eMKNaWUeUg_Fk1iDttbwKLtnZvkkC5HfhM3jMcNcb5X0Znp56lBpi99AZcimEPhI7R9oAfOKGIHiMr18EeLvXBw7w9lmbJybMLM1uohLgrd8B8Naj-nVRA7ytjjmAt3fEka3UzwBvfVp_HtPkKLGmXQfiKim8QtI77QNLlFavB91bqMiB286bgUtPMK4ugTwSa4dV06sH9dBxQ5zQasiRYeUMlkq_47ikg7w2ozgu3gAgwJXPshAxz7CylpthJUPHlIcAZwBnPq34S8ep4wwSaDtiLIeSOCc8fwxwDhsiJGdrgKrHzx-rrx-h7euDcJDAum993WnjfAZeXe_C2p57f0OiGBSKyp5x6PYcDrlQE_oU8sHr_uoIfYKsP3RD0NEahj-PRreGHCAxbX_gynkGcD3GOFT9pZT4lU4AAY4RRC8IIZTmad7ERZ3huoDBmhAF-zrG8NEI5QLFbyGBcTEJGfK809YZTg7B6bdQKBf6AC5OiQL8Ab1EKOgAobl5BtGMQcwYv8TgS6--ilYR-TeimOTGHpvNZSUeZlKC52ZSWsAzOICLkfXw-FgEKPwbUOIRJU8JT2JOyxSjoeeNJfZSZLssuZFC9S83reqHBbq2ep0FYglOMZpoJWeATcTKhsLO7Q0nbPckpLwOvczKhk7o6ZxukmewtcG8a2kneTYBZ-fApMmbGJLal8lVsLjIm3iCzX-AjeqrAaN6AixmDkC8zK4DjEtenhhenqZRlqe8yUv4XQt2krD-GPDNaGd4A-LbsApwETpyEDjphFVodx-H55RI6TvCrlEgvv3TOm4uyaFmBOD8Z6xwIbVqfT0visF3jo9j5fgaP28zJSWI8MFxEzTjjgg5fH8m8gnEt9PiVptnYtgnN54Kgd4Srdt_MxxnFv-dyKcHw3yHWGg2UTBnyBJvbPRXMhbPSyJtij_-uvCreRafsaGEZkmz4PWH7pt-6LzaipEuuHnUfuaxwGvw83IEppUjt3uiSOvdeAtrraX_7FV4yWDvnY5JEihP7k3mBjGGrzboUXRcCsVnqeBF33hmf7iFp5u8qk_KOhOuMP5WV70nMGgeFkbuj8Rw5T6pRo8Xv6H_LDmRMTw5MZ05sUlTPtN9tOZiDsyb3oJSDzspzWZKC0Rq2HHTaHOoQpXan9yirGPjHWhPDGe7zhkQ3047vureUH7f-gZxdMosjPefP3251crxF_eDy--lMA-duydC3WrViPYEo4QnqxfqLJ8ZlzMUn_Shz7oVlMgv3PoXr8X-tLQB4OLN9l6Jf_b8B9vv-UGb1w990wwp-CY_vu3tGJfc8eU9_tT9eN495xFYOpovuvBXY_mn2zOxuxNEcuq-8FZYZ15_TI73EuB4XUh26Pwu8F8RmZ-kZ3GWniyNkiw9Mdx2UrhKsUejKbf2yPU_knT_gyXxrsTp2ldnhGq_8Gbx8UIvTUPEpl5aztpNVGb4ciL_v5Xh0lnjPfDmH4zm_qFRvOif8XCmezIcw9W1QfuZccukaRRPpKM5aY6Xg3oN6d9lx_GJS2cTgzJNWA4PRKiFgUMQmLbPRgU1YuWVowJcshJNgMkckCcI7nZ-z846YtzuSO4aFTw5UZHOTUZJCgfwRaNRMpZp5V__eXjdoNrwMMjibAQ_DjpXbBOzMi7Jim-iPEE4irMCr_YbQuImaUiR53XU0CbL4pgVTUERK6MywflKbDDCKcIYoyKJMF43pCxylmakpgWtMwwSxA9EyLVPirU27SpM3zYRLuI4X0lSc2nDfB_jYTqKQXq3Mpsws6v71oIESWGdnRCccDL8TsBfo0B6BzK0NE3LEHRGtC039mQeuSVC9ob_3lxy1Ru5-f2Z42j49w3-VwAAAP__OrSPhg">