The MLIR inliner pass seems to go into an infinite loop on this test:
subroutine s3
call s1
call s2
end subroutine s3
subroutine s2
call s1
call s3
end subroutine s2
subroutine s1
call s2
call s3
end subroutine s1
Compile with: flang-new -O2 inline.f90 -mllvm -inline-all
The -mllvm -inline-all option just instructs the FIRInlinerInterface that all fir.call ops are legal to inline. It seems to be the MLIR inliner pass' job to prevent the infinite inlining.