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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] `-sharding-propagation` pass leads to assertion failure `!NodePtr->isKnownSentinel()'
        </td>
    </tr>

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

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

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

<pre>
    test commit: [bbd1bb4](https://github.com/llvm/llvm-project/commit/bbd1bb40573dd5a36dc04af4ad307d6e16456f89)

step to reproduce:
```
mlir-opt test.mlir --pass-pipeline=builtin.module(func.func(sharding-propagation))
```

test case:
```
func.func private @mlirAsyncRuntimeAddRef(!llvm.ptr, i64)
```

Crash backtrace:
```
19.mlir:1:1: error: 'func.func' op only one block is supported!
func.func private @mlirAsyncRuntimeAddRef(!llvm.ptr, i64)
^
19.mlir:1:1: note: see current operation: 
"func.func"() <{function_type = (!llvm.ptr, i64) -> (), sym_name = "mlirAsyncRuntimeAddRef", sym_visibility = "private"}> ({
}) : () -> ()
mlir-opt: /home/workdir/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:168: reference llvm::ilist_iterator<llvm::ilist_detail::node_options<mlir::Block, true, false, void, false, void>, false, false>::operator*() const [OptionsT = llvm::ilist_detail::node_options<mlir::Block, true, false, void, false, void>, IsReverse = false, IsConst = false]: Assertion `!NodePtr->isKnownSentinel()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/workdir/llvm-project/build/bin/./mlir-opt test.mlir --pass-pipeline=builtin.module(func.func(sharding-propagation))
 #0 0x000055b11cf93158 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x12d3158)
 #1 0x000055b11cf90c7e llvm::sys::RunSignalHandlers() (/home/workdir/llvm-project/build/bin/./mlir-opt+0x12d0c7e)
 #2 0x000055b11cf93b61 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007fabcb63f520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007fabcb6939fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007fabcb63f476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007fabcb6257f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007fabcb62571b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007fabcb636e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x000055b11eaf669e ShardingPropagation::runOnOperation() (/home/workdir/llvm-project/build/bin/./mlir-opt+0x2e3669e)
#10 0x000055b12008c8a3 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43cc8a3)
#11 0x000055b12008d142 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43cd142)
#12 0x000055b12009358e auto void mlir::parallelForEach<__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0>(mlir::MLIRContext*, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, __gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>, mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::$_0&&)::'lambda'(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&)::operator()<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&>(__gnu_cxx::__normal_iterator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo*, std::vector<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo, std::allocator<mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo>>>&&) const Pass.cpp:0:0
#13 0x000055b12008e99b mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43ce99b)
#14 0x000055b12008c9fc mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43cc9fc)
#15 0x000055b12008d142 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43cd142)
#16 0x000055b12008f91e mlir::PassManager::run(mlir::Operation*) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43cf91e)
#17 0x000055b120087e9b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#18 0x000055b120087af3 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
#19 0x000055b120133065 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) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x4473065)
#20 0x000055b120081752 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43c1752)
#21 0x000055b120081a03 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43c1a03)
#22 0x000055b120081c12 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/home/workdir/llvm-project/build/bin/./mlir-opt+0x43c1c12)
#23 0x000055b11cf728df main (/home/workdir/llvm-project/build/bin/./mlir-opt+0x12b28df)
#24 0x00007fabcb626d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#25 0x00007fabcb626e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#26 0x000055b11cf72435 _start (/home/workdir/llvm-project/build/bin/./mlir-opt+0x12b2435)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWtty4ywSfhpyQ8WFQMeLXCgH16Z2skklc-9CgGw2GLSAMsnbbyHJlqwk8092PZn6p6ZqPHYQdH_9ddNqDtQ5udZCnIHkHCSXJ7T1G2PP3DchKD-pDH8588J5yMx2Kz0gJQTJeVXxqKpikFwCnG-8bxwgJcBLgJdr6TdttWBmC_BSqafd12ljzb8F8wAvB1F4OYhBSUY4TyhJOUMxrWPKCcp4KqI0TtI6LwAuACoBKp0XDfQGWtFYw1smglpUghQN_1C5VdKemsbDgHoR_oKnpw117rSRjVBSC0Auq1YqL_Via3irBMB53Wq2CP8BnLsNtVzqdUDc0DX10uiAoAcxUQVQ2VND3RtA9iJhY-UT9QKCGAU8pXvR7L7VXm5Fyfm9qAHOAY4CS4vGW4AvoEzjN_VdWOo2sKLs0Vv6lvlR0dkMSBkNHyisNbZzHM4mdmbQNNBo9QKNFrBShj1C6aBrm8ZYLzjA0fGsSK7exqaND0ZAJwRkrbVCe2gaYXvSA2ZUAownsHGnpoCAXIDsPLSFriv_0ggIyCV8DwU8BeSqf1qEVveyXWm63Q3C79mEd52fpJOVVNK_7IYMjIQ-2eVOenYeIGeXPcZy0HigfQzSvsNyY7YC4OU3Yx-5tK8nzDCNpGaq5WJsKC-_hmYlnV9JH1gzdrEJ3KZ5EG1FLazQTMBuACkBKQ97A3Ixf8SFp1L1LdpwsTJNYNgBcjF4D5DyPIRLYMbbVoTvmirX_Xgykr9uIFcHbf0PctUL6x1uLMDlwBYz2vmQaG573V87yj8R6bW7F0_Cuj489j2u3UWPbN-YXAaiS-eEDbphmIU4-pfh4s7b4HTp_qnNN_0gtJdaqF0AZrCmUgm-AKi8-3JVPlxB11Zb6SGFVbsOGc5YH3Ldh9OrdK4VDuAlpJrDIWig3wjIDrNH0P3gKXuEvN02fS5BC4CKO2vWlm4htet2K7R3PxinIa3y8C01wMsFwMufnI0hwARB9IwQQklSRRGrCxIl-SRU3Ivrf9xZqX1n7tcudeJ87GTpt5Vx3gq6BTjtkob23QwO7vo_7Ab4HD1HmAdQI-RoBhmxTLwF-b7VD3KtqfoH1VwJ63a570iogt4RFZ4TWaURPNAPcN7xcgGdXEtdm5Xv5uxuLpUBXD_CLVgTQgp1n14BGRRkNa1YlZI6wWiwRckK4OVznq7S-FRJ3T6frnXbP2ALZxZphznGCUYj4vhQYEGKmsHGb6ygfPUolfqY9CItajZKT-Zw4yyFa9eZ91HYcZaOgtNDwTjJagJpFeb7h8TiPKvJKDZ7JTaqPiwwqkaB-YyAVBTpxwSSQhQTw4tphAlap2kh4MMwwe8m87uflK2-1bf7YuCIoY8FCaqH2gSTaJpDMEI5yymB4ztk-qK5bb6a2-aOOldy2nSv0AEswPk4JHQY5sbYODFm9qTUVL046W6opmvRlS2VMSp8t7or0PlRU1JMWLBxZCCaMcCjGH-YgbtdTp8y0XfdG5YenZLpoKDqWjtvu_fWUFK832ESbTvsdzQUode6Nn0VMmS1Y7EeeB1Zx4esFyTJBaStN11CncBuqKVKCbU09oqyDSAXq9Vatyv2_Nx3WK20sVuqppXdR903mW1dJXy9bUK90rNe7L15E8gZiHWe9-1Pgn2G0olGqpRhn2FpKFOvhrrwZygCOF6hTv5k1tx8ub6_MNqL590r9o_Df4XD_7D-e02z8P5JJ22ZotuKU4AzgPM_zv58Zx_4Y9wJ6FZLP9vytM-6f9z-y9w-7PQEwbMFYyiPyKwoFUVRHTk3HK2wC9jGwi6eLyjCyvR3X1DsV8-BgeTPguIXLCjSGet1EYkZ2J35b0bZIXvHQxlwjCizGcpMFBVshK2N3Zas38P9_vbcPnW5DbWCrxp_uJX9YFrLxM3aAnK1o30WKK8r7MkzJe1t42-o1BdG13I9kVHAydM3klY-N47WZLK598WsJaPqXrhW-Un7_iTDivrAlMMBAOd721st_9OKV7bfiK2xL-dtXfdBvu_PRU1b5VdcKOHF-2P2Zdj7Hij2m_eMKlVR9riq9cHbY0LSj_ryp9szoruUVAnm78VaOm9fXgfH9wLg1bJNGb3-XEu-45m_CM_iIDwjQlCaTAx3jZK-1PzOGiac22H9JUH3N5wS3-0xffbgrdTr7oTxneZjJd84Cy7eJ1883-uMsgS_Hfm_27w92tssUDYSOt86jSgi7xI6FBhsQ_tSovxoWPwVG0e0kqJxgxjjuZUsej9sPmLlp5nDoonTyOFhV4ZzXsMtlfpYh2tVkDjqmx1V4ZQXHzz7wgUv0CgwmQsUMYKrVRizcp5av5pY88MqRDxRkc45ikkCe-HHYykmQ24qq-7aSZDMjBXdmbTgs1swJ_yM8IIU9EScRVmMEY4zHJ1szlicswzlEUqRyCLEK4bymCWooDlmdVKdyDOMcIJIlKAsTnC0oElUsRxHouCs4ISAGIktlWrR3R0xdn3SHaSfRSSKSXKiaCWU625J9ZdFAMYguTyxZ53NVbt2IEZKOu9GCV561d2sCsUmSC4hSNHpmyfaKYINdQ4qQbmD3kC6v1JQU6laK378asFJa9XZ_35tYDD46Qz_NwAA___kAddQ">