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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR]`-test-ir-visitors` triggers Assertion Failure `mayHaveSSADominance(region) && "graph regions are not allowed"'
        </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/dca2ed31278c444f839e3e04fde0c21b62451d4a
steps to reproduce:
```
mlir-opt test.mlir -test-ir-visitors
```
test case:
```
module {
  func.func @parallel_matrix_mul(%A: tensor<?x?xf32>, %B: tensor<?x?xf32>, %dim: index,%tileSize: index) -> () {

    %out = tensor.empty(%dim, %dim) : tensor<?x?xf32>
    %result = scf.forall (%i, %j) = (0, 0) to (%dim, %dim)
        step (%tileSize, %tileSize) shared_outs(%o = %out) -> (tensor<?x?xf32>) {
    }
    return
  }
}
```
crash trace:
```
mlir-opt: /home/workdir/llvm-project-19/mlir/include/mlir/IR/Iterators.h:56: static auto mlir::ForwardDominanceIterator<true>::makeIterable(Region &) [NoGraphRegions = true]: Assertion `mayHaveSSADominance(region) && "graph regions are not allowed"' 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-ir-visitors
 #0 0x000058d6fbf85258 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./mlir-opt+0x10b5258)
 #1 0x000058d6fbf82d7e llvm::sys::RunSignalHandlers() (./mlir-opt+0x10b2d7e)
 #2 0x000058d6fbf85c68 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007735d0705520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007735d07599fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x00007735d0705476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x00007735d06eb7f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x00007735d06eb71b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x00007735d06fce96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x000058d6ff266e60 mlir::ForwardDominanceIterator<true>::makeIterable(mlir::Region&) (./mlir-opt+0x4396e60)
#10 0x000058d6ff266802 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396802)
#11 0x000058d6ff266ac2 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396ac2)
#12 0x000058d6ff266ac2 void mlir::detail::walk<mlir::ForwardDominanceIterator<true>>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x4396ac2)
#13 0x000058d6ff266439 void llvm::function_ref<void (mlir::Operation*)>::callback_fn<std::enable_if<!llvm::is_one_of<mlir::FunctionOpInterface, mlir::Operation*, mlir::Region*, mlir::Block*>::value && std::is_same<void, void>::value, void>::type mlir::detail::walk<(mlir::WalkOrder)1, mlir::ForwardIterator, testPureCallbacks(mlir::Operation*)::$_3, mlir::FunctionOpInterface, void>(mlir::Operation*, testPureCallbacks(mlir::Operation*)::$_3&&)::'lambda'(mlir::Operation*)>(long, mlir::Operation*) TestVisitors.cpp:0:0
#14 0x000058d6fc09904e void mlir::detail::walk<mlir::ForwardIterator>(mlir::Operation*, llvm::function_ref<void (mlir::Operation*)>, mlir::WalkOrder) (./mlir-opt+0x11c904e)
#15 0x000058d6ff265281 (anonymous namespace)::TestIRVisitorsPass::runOnOperation() TestVisitors.cpp:0:0
#16 0x000058d6ff37abcf mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (./mlir-opt+0x44aabcf)
#17 0x000058d6ff37b352 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (./mlir-opt+0x44ab352)
#18 0x000058d6ff37dade mlir::PassManager::run(mlir::Operation*) (./mlir-opt+0x44adade)
#19 0x000058d6ff37662b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#20 0x000058d6ff376283 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
#21 0x000058d6ff41f9e5 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+0x454f9e5)
#22 0x000058d6ff36fee2 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (./mlir-opt+0x449fee2)
#23 0x000058d6ff370193 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a0193)
#24 0x000058d6ff3703a2 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (./mlir-opt+0x44a03a2)
#25 0x000058d6fbf64477 main (./mlir-opt+0x1094477)
#26 0x00007735d06ecd90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#27 0x00007735d06ece40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#28 0x000058d6fbf63fe5 _start (./mlir-opt+0x1093fe5)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWV1z4yjW_jXkhooLgz4vfOE47XdSNXmTSrp2L11IOrKZINACSif767eQZEtWYne7Z7Z2drarY8uI85znfIIQt1ZsFcAChTcovL3ijdtps3gTlqstucp08b74CtZhrXCuq0o4xJZ451xtEVsiukZ0vRVu12SzXFeIrqV83X9d10b_BrlDdN2L0nWRcwoFm9M4yYMgKBOWAgMSlAWQnM6ziAbhvAg4IkvroLbYaWygNrpocvAayRJFpP9PlpUU5lrXDjuwbuZ_4Wt_eS3M9auwwmljJyL-Ns65_QxNF40EjOIbRJYYl43KZ_4Do4DU3HApQW4q7ox421SNRDRBNFx6hzhQVhvEVoit3_xfyShiXxBdYUTDm-9PKUTlJwlVwBuiK0RDJyQ8i3_CaDjF14h9wa3etKfZMsUeQjcOI3bbK5pBVbv3jqIHH9R40TN8DngGbCM7SJuXs1J7B3TKQ9Hj_dah3fph4seIH3Aaf664B_f_fHT7WQdLu6nDzxTbHTdQbHTjbDdX99q8tWOHnPRueggnxii-7a8MuMao9kc32H-OkiE33O6wM_xc3nlHIrre6QoQXX_T5qUQZpL-1_MU0bWXQHQtVC6bAoaBuyf_4cBwn6uzHWLLMPKw1nEncswbp3E7l_lMW2vzjZviVldCcZXDXhKxlTMNeJPbeRV_6e5lEhBNnmArtMKIRq1Hwpv_1_9neL3rxm2XN14-vPW6l9aCca1ERCr-_gt_hefn5UEroolpJVs0DxphROnWQ2LTY3IDWGmHuZT6GxSIUkRjXHIhoZghsnz89cvy-Qu2TVYJhznOmq0vdW2cT6CLW4ywtgGL6BpzVeDez9jtAHeRzHj-0kbT6352PH_BRVPVXWzJrMvKR6O3hleYm21TgXKeAZ710WobzWfRPt98MKKMYPJGCCFhUkRlViYhDRPc2tFGy77b7uLRCOVacl_bxKPJMMnwbxttnQFetS5fYaFcF4BkTBHRG_I2J5nX0dccomw-YUCLGD5j8NSoZ7FVXP7CVSHB2H23-VyJhxmU0KmZeZTgIzhEk551N2xnee1jQNq_DoX1KHHMwoLEJAwp6VrFWooM0fVbEm2i4FoK1bxdb1XT3chnVs-illhAQ0oGWsExYJimZY5rtzPAi82L2He1H0VPo7TMB_RwSjeII7y1rXmX0g7iaACOjoAjyOKSYZ75ArkIliZxyQbY-APsPLsYcJ4NgMkxYJlDGl0GyFJIR4an4zQqaRRBRH5_DxwAnvreFZ1K7IClXmfHyBcPmTJKCMWvWhQjWgU4LmR3_Y3LF8RWl3H-ckTyofYzWp5LX-xDrfotib-xMVAitmppnBFN-13GcP_vXL48mMJX42n7E0IH--dT-3n-V7ef5yP76f-4_Wxqf8DSzv7fR6sdz7mUfnXelAqxlXVFNwzKF-5GeDBE54MiYTdawUaXxx7u1T_Ud8qBKdvlc2z11KEf-8Fk-Ebq_MWP7om-ctnAfr9z4CnsxvIKepM9RPt9JPRh1L3XcD53jlw3jtj8mGWfWYeEoqv2YeixMbDqHWvPh2HZbrOCDZsAf-7QvRnncvXnCURdV96PxZJXWcERjb-b4InUansu4in2D7J_6zdmk32HT_JgnOQ5SVMSwM8U-VDbf56Kns9zb85Q0eGkokOazL0kV1q9V7qxWPEKbN1GvY-H99_d096Dj9z2e0bTqAc1opj8gLOjI_0s5llenvDzQ_1VP9Re3bLgdevYXuuRj1o-0xo-XfRLxeW7FfaeK76Ftm4yraX_blR7KFKc22AHAfeUB4fGE4MyFtKLDXoUNUihYBJ8P_XAM_rDLRwLeVV3yjrTPv_4frI8N6HT3N3ouT9yA8rdqVLjXCvr-uI74UTvpsGJycSJBS9gontvzac5MK34E0o97KA0nSiNIprhGkypTbVs69J-50HssBb05xW18wv7IPGsG5PD_da3hL1TJmG8__XuaaWVgzf3weX3UpiH2t1zoVZalWI7wkjx6O7HOqNkahxN2Kjz_Kq3IufyqTvrOdmRTgkgmhxsb5T4RwMfbL-HSpv3m6YsuxQ8zC-g5I10mwIkODgt02-Nxv1yGoFTe4lPXfijsfy32zOwuxVcQu78PsQ68_4xOc4lwLB-kuOF8E8Rme-k5_GDRTAvUwhHhttaCrdUxaPROVi75_ofSbr_wpI4O2N879kZobZPUJ4cPtFLw8BH7NBL6fGDEotKAPp5Iv_VyvDEWpN6Dwz-YZN2TOYpO-mffnHOd7xbhpeXBu17xp1cID2tgXQwJc346aBeQvpn2TE-cml4fOgYBUEc44oLdeLMMvUTBvHpKVtepBeeNtK0SIezIjo9X8shIHiz8TIb67hxmz25S1RAMFKRTExmJYS4Az9ltJ_SASwzbRy0Dxi5NtCegkPRg-_fcVwVC1akLOVXsJjHAaFzFrHkarcIaM6LOA9JxOdpVsYsjOYMSEGjiKQkDK_EghIaEkopSQLCkllA8hIyAKBlzArGUECg4kLOfFLMtNletUf3izlNGIuuJM9A2vZ9JKXdSxKKwtsrs2gP_LNma1FApLDODghOONm-w_TbKBTeooh8PIqPCHZGbLdg7OgNx5oL2Rj4w990XDVGLn7-LUbvjdcF_VcAAAD__5r37Uc">