) // OK   for (i = 0; i < argc; ++i)     foo(); #pragma omp parallel   {     int v = 0;     int i; #pragma omp parallel master taskloop simd firstprivate(i)     for (int k = 0; k < argc; ++k) {       i = k;       v += i;     }   } #pragma omp parallel private(i) #pragma omp parallel master taskloop simd firstprivate(i) // expected-note {{defined as firstprivate}}   for (i = 0; i < argc; ++i) // expected-error {{loop iteration variable in the associated loop of 'omp parallel master taskloop simd' directive may not be firstprivate, predetermined as linear}}     foo(); #pragma omp parallel reduction(+ : i) // expected-note {{defined as reduction}} #pragma omp parallel master taskloop simd firstprivate(i) //expected-error {{argument of a reduction clause of a parallel construct must not appear in a firstprivate clause on a task construct}}   for (i = 0; i < argc; ++i)     foo(); #pragma omp parallel master taskloop simd firstprivate(i) //expected-note {{defined as firstprivate}}   for (i = 0; i < argc; ++i) // expected-error {{loop iteration variable in the associated loop of 'omp parallel master taskloop simd' directive may not be firstprivate, predetermined as linear}}     foo(); #pragma omp parallel #pragma omp parallel master taskloop simd firstprivate(