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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits