kiranchandramohan wrote:
There is a separate completeness issue as well. Currently, some do-concurrent
programs with internal branches (eg below) will be treated as unstructured
loops and not modelled as `fir.do_loop`. The conversion pass will miss these.
So having an operation modelling do-concurrent (that is not a single block)
might benefit this as well. Alternatively, if you want to skip these kinds of
loops, please call it out in the document.
```
program internal_branch
integer, parameter :: N = 10
integer :: i, array(N)
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
do concurrent (i = 1:N)
if(mod(array(i),2) .eq. 0) then
cycle
else
array(i) = array(i) - 1
end if
end do
print *, array
end program
```
https://github.com/llvm/llvm-project/pull/127595
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits