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

Reply via email to