https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90573
Bug ID: 90573 Summary: Avoid unnecessary data transfer into OMP construct Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: openacc, openmp Severity: enhancement Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: tschwinge at gcc dot gnu.org CC: jakub at gcc dot gnu.org Target Milestone: --- As mentioned in PR90067: "it might generally be beneficial to have a pass promoting 'firstprivate(x)' with a dominating write operation on 'x' to 'private(x)'". This will avoid unnecessary data transfer for (all too common!) code like: int i; #pragma acc parallel loop // implicit 'firstprivate(i)' for (i = 0; i < N; ++i) [...] Similarly, there are cases where 'copy(x)' can be optimized to 'copyout(x)', or 'copyin(x)' to 'create(x)'. This need not apply to implicit clauses only, but also to explicit ones, when the user can't observe any difference. The same applies to certain OpenMP clauses too, I suppose.