[flang-commits] [flang] [flang][PFT-to-MLIR] Wrap unstructured Fortran constructs in scf.execute_region (PR #208635)
Kareem Ergawy via flang-commits
flang-commits at lists.llvm.org
Mon Jul 13 00:12:45 PDT 2026
ergawy wrote:
> Codex found an issue here:
>
> > branchesAreInternal checks only controlSuccessor, which
> > stores only the first multiway-branch target. Computed GOTO or arithmetic IF with a later external
> > target gets wrapped and produces an illegal cross-region branch. The exact-head reproducer fails FIR
> > verification; disabling wrapping succeeds.
>
> It produced this reproducer, which I have verified does successfully lower to HLFIR with the new option disabled but fails with it enabled (as default)
>
> ```
> subroutine computed_goto_exit(n, selector, a)
> integer :: n, selector, i
> real :: a(n)
> do i = 1, n
> go to (10, 99), selector
> 10 a(i) = real(i)
> end do
> a(1) = -1.0
> 99 continue
> end subroutine
>
> subroutine arithmetic_if_exit(n, x, a)
> integer :: n, i
> real :: x, a(n)
> do i = 1, n
> if (x) 10, 10, 99
> 10 a(i) = real(i)
> end do
> a(1) = -1.0
> 99 continue
> end subroutine
> ``ยง
> ```
Thanks Tom, looking into it, and will handle before merging.
https://github.com/llvm/llvm-project/pull/208635
More information about the flang-commits
mailing list