void foo (int *p) { int a = -1, b = -1, c = -1, d = -1, e = -1, f = -1, g = -1, h = -1; int i; #pragma omp teams { #pragma omp distribute lastprivate (conditional: a) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */ for (i = 0; i < 32; i++) if (p[i]) a = i; #pragma omp distribute simd lastprivate (conditional: b) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */ for (i = 0; i < 32; i++) if (p[i]) b = i; #pragma omp distribute parallel for lastprivate (conditional: c) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */ for (i = 0; i < 32; i++) if (p[i]) c = i; #pragma omp distribute parallel for simd lastprivate (conditional: d) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */ for (i = 0; i < 32; i++) if (p[i]) d = i; } #pragma omp teams distribute parallel for lastprivate (conditional: e) /* { dg-error "conditional 'lastprivate' clause on 'distribute' construct" } */ for (i = 0; i < 32; i++) if (p[i]) e = i; #pragma omp parallel { #pragma omp master #pragma omp taskloop lastprivate (conditional: f) /* { dg-error "conditional 'lastprivate' clause on 'taskloop' construct" } */ for (i = 0; i < 32; i++) if (p[i]) f = i; #pragma omp master taskloop simd lastprivate (conditional: g) /* { dg-error "conditional 'lastprivate' clause on 'taskloop' construct" } */ for (i = 0; i < 32; i++) if (p[i]) g = i; } #pragma omp parallel master taskloop simd lastprivate (conditional: h) /* { dg-error "conditional 'lastprivate' clause on 'taskloop' construct" } */ for (i = 0; i < 32; i++) if (p[i]) h = i; } struct S { int a, b; }; void bar (int *p) { struct S s = { -1, -1 }, t = { 1, 2 }; int i; #pragma omp parallel for lastprivate (conditional: s) /* { dg-error "non-scalar variable 's' in conditional 'lastprivate' clause" } */ for (i = 0; i < 32; i++) if (p[i]) { struct S u = t; u.b = i; s = u; } } /* { dg-prune-output "not supported yet" } */