<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">