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).