<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVM1ymzAQfhq47NgDkrHhwMGJ45lc-wIdgQTejpBcSThNn74rsGsncSfTlhGwkvZP37erxsrXem-1ti9oenj-AuEgAngcjvoVRq88LSjwQYIw9DoMB5AotGoDvKDW0I7OKRNI240G0JAefTs0GBRoa48J30Kyzs4j2yXZdv52o2khWWVB-ZCwMmGFcH0GUR85S1gFi4Q_RRmSzcNsA_SQYtTazdksW2t8ECbA1fRWNb9VHY4I6nvCHuEc7SzeMSW38mvjJheTVvGkfmA4i0Ggvj3LZZdvrx6cCqMzd9z_Npm83JqQLp_ybQVBS9igkegI6ys-EZcJUla-Q-leZP4u8mZ3j4GPUf6dhfxTFvzY4Of40yp7A8W1TPK_w4D9CYO3RflohyHWeLBke3RWjq061-6g0S3sMUDMYRlnsECj0SjaXMJsv5UythCtLBZSNWNPUnQW-wfNybYioKX20D4GOCkS5mZDGj7GVKRheuqkyXd0Fm3j-c95fKgKijAHT2XNZcUrkYoxHKyrfypnq3xTpqPT9SGEo4-FxvY0eiJhbIixgSZany6_BR3621QFe_R-VJ6Egq8qlh5qUZTlppKFaMuua0rFG1ZmeVE2q3XFy6ZLtWiU9nVSPCTFLv3_kFizjLEs51leFXSwZbkus5avctnyUm26imBQA_XPMvpZWtenrp5cEvKeNjX64K-bwnvsjVKXDAMGPU0im7QAzxOfDg7C9B46GylydMXRfddaqWbpAjyxRfeeJz7TKe96SvoXxyWGWQ>53492</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [mlir] Inliner hangs forever with code with indirect recursion
        </td>
    </tr>

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

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

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

<pre>
    Following IR that simply uses the std and arith dialect will currently run in an infinite loop: ```

func @test(%arg0 : i32) -> i32 {
    %0 = arith.constant 0 : i32
    %1 = arith.cmpi eq, %arg0, %0 : i32
    cond_br %1, ^exit, ^tail

^exit:
    return %0 : i32

^tail:
    %3 = call @indirect(%arg0) : (i32) -> i32
    return %3 : i32
}

func @indirect(%arg0 : i32) -> i32 {
    %0 = arith.constant 1 : i32
    %1 = arith.subi %arg0, %0 : i32
    %2 = call @test(%1) : (i32) -> i32
    return %2 : i32
}
```
Command to reproduce: `mlir-opt test.mlir -inline`. 
Adding `--debug` to the invocation also reveals that it is repeatingly inlining the call: `call @indirect` 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydU8FymzAQ_Rq47NgDkjFw4ODE8Uyu_YGOQDLejpBcSThNv74rsGsncSbTMkIs0tvdp6fd1srXZme1ti9oenj-BuEgAngcjvoVRq88LSjwQYIw9DoMB5AotOoCvKDW0I3OKRMI7UYDaAhH8x4NBgXa2mPCN5Css_PItkm2mef9aDpIVllQPiSsSlghXJ9BxCNnCathkfCnaENSPsw-QA8BI2o7s1l21vggTICr6y00v4UORwT1M2GPcM52Nu-4Ulj5vXVTiAlVPKlfGM5mEKhvz3LZ5ZtrBKfC6Myd8H9dpii3LoTlE99OkLSkDRqJjrS-6hN1mSRl1TuV7mXm7zKX23s38DHL_99C_uUt-LHFr_WnVfZGimuZ5P-mAftMg7dF-WiHIdZ4sOR7dFaOnTrX7qDRLewxQOSwjH-wQKPRKNpcwuy_kTK2EK0sFlK1Y09WDBb7B83JdiKgpfbQPiY4KTLmZkMaPuZUhDA9ddIUOwaLvvH8Zx4fqoIyzMlT2XBZ81qkAYNWTVI8RJpJsYXniaiDgzC9h72NuR31LjVyZ6WarUtEokEN7YloOjrdHEI4-lihbEejJ-TY0lUP9KP16fJZkFo_pvLZofej8mQUfFWz9NDIgkle7euyzdedEKuyZoxnrBYlW5dqnadatEr7SJjIptiwjLEs51leF3SeZbWuso6vctnxSpX7mk6vBmqbZUy8tK5PXTNxIME9bWr0wV83hffYG6Uu8cUYDtY1v5WzdV5W6cS3mcj-AQBScD8">