https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67517
Bug ID: 67517 Summary: ICE in gimplify_scan_omp_clauses Product: gcc Version: 5.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org Target Milestone: --- void foo (int x) { int i; #pragma omp parallel for simd linear (x: x) for (i = 0; i < 10; ++i) ; } void bar (int x, int y, int z) { int i; #pragma omp parallel for simd linear (y : x) linear (x : 1) linear (z : x) for (i = 0; i < 10; ++i) ; } ICEs, because the linear step expressions already contain the variable and make it implicitly determined (shared in this case), while linear wants it to be lastprivate on the for or parallel.