https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68673

--- Comment #7 from vries at gcc dot gnu.org ---
The constraints generated for the GOMP_task call look ok to me:
...
_Z2f3v._omp_cpyfn.1.arg0 = &OMP_CPFN_TMP.0+64
_Z2f3v._omp_cpyfn.1.arg1 = &.omp_data_o.2.0+64

_Z2f3v._omp_fn.0.arg0 = &OMP_CPFN_TMP.0+64
...

And we seem to be able to conclude that the loads and stores in
_Z2f3v._omp_fn.0 point to a, b and c:
...
_12 = { ESCAPED NONLOCAL a }
_14 = { ESCAPED NONLOCAL b }
_16 = { ESCAPED NONLOCAL c }
...
But AFAIU, the escaped/nonlocal bit causes the optimization to fail.

I'm not sure yet if the escaped/nonlocal bit is:
- too conservative, or
- actually necessary (due to either GOMP_task, or the testcase).

Reply via email to