int v; extern void foo (int); void bar (void) { int i; #pragma omp for reduction (task, +: v) for (i = 0; i < 64; i++) foo (i); #pragma omp sections reduction (task, +: v) { foo (-2); #pragma omp section foo (-3); } #pragma omp parallel reduction (task, +: v) foo (-1); #pragma omp parallel for reduction (task, +: v) for (i = 0; i < 64; i++) foo (i); #pragma omp parallel sections reduction (task, +: v) { foo (-2); #pragma omp section foo (-3); } #pragma omp teams distribute parallel for reduction (task, +: v) for (i = 0; i < 64; i++) foo (i); #pragma omp for reduction (default, +: v) for (i = 0; i < 64; i++) foo (i); #pragma omp sections reduction (default, +: v) { foo (-2); #pragma omp section foo (-3); } #pragma omp parallel reduction (default, +: v) foo (-1); #pragma omp parallel for reduction (default, +: v) for (i = 0; i < 64; i++) foo (i); #pragma omp parallel sections reduction (default, +: v) { foo (-2); #pragma omp section foo (-3); } #pragma omp teams distribute parallel for reduction (default, +: v) for (i = 0; i < 64; i++) foo (i); #pragma omp for reduction (default, +: v) nowait for (i = 0; i < 64; i++) foo (i); #pragma omp sections nowait reduction (default, +: v) { foo (-2); #pragma omp section foo (-3); } #pragma omp simd reduction (default, +: v) for (i = 0; i < 64; i++) v++; #pragma omp for simd reduction (default, +: v) for (i = 0; i < 64; i++) v++; #pragma omp parallel for simd reduction (default, +: v) for (i = 0; i < 64; i++) v++; #pragma omp teams distribute parallel for simd reduction (default, +: v) for (i = 0; i < 64; i++) v++; #pragma omp taskloop reduction (default, +: v) for (i = 0; i < 64; i++) foo (i); #pragma omp taskloop simd reduction (default, +: v) for (i = 0; i < 64; i++) v++; #pragma omp teams reduction (default, +: v) foo (i); #pragma omp teams distribute reduction (default, +: v) for (i = 0; i < 64; i++) foo (i); }