From: jakub Date: Fri, 9 Nov 2018 20:19:58 +0000 (+0000) Subject: * gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a25ce2830f2629cd8d33f91c0f535c0097658f56;p=thirdparty%2Fgcc.git * gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid but unsupported lastprivate with conditional modifier. * c-c++-common/gomp/lastprivate-conditional-1.c: New test. * c-c++-common/gomp/lastprivate-conditional-2.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265987 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7f3b71d8970..45629bbfc777 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-11-09 Jakub Jelinek + + * gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid + but unsupported lastprivate with conditional modifier. + 2018-11-09 Jeff Law * config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 61dca240db6d..d7cb7840a5dd 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -8065,6 +8065,10 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p, "% clause", decl); OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (c) = 0; } + if (OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (c)) + sorry_at (OMP_CLAUSE_LOCATION (c), + "% modifier on % clause " + "not supported yet"); if (outer_ctx && (outer_ctx->region_type == ORT_COMBINED_PARALLEL || ((outer_ctx->region_type & ORT_COMBINED_TEAMS) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 285d0e1384cd..0661f2f42a99 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-11-09 Jakub Jelinek + + * c-c++-common/gomp/lastprivate-conditional-1.c: New test. + * c-c++-common/gomp/lastprivate-conditional-2.c: New test. + 2018-11-09 Jeff Law gcc.dg/torture/stackalign/builtin-apply-2.c: Skip on v850. diff --git a/gcc/testsuite/c-c++-common/gomp/lastprivate-conditional-1.c b/gcc/testsuite/c-c++-common/gomp/lastprivate-conditional-1.c new file mode 100644 index 000000000000..722aba79a52d --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/lastprivate-conditional-1.c @@ -0,0 +1,64 @@ +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" } */ diff --git a/gcc/testsuite/c-c++-common/gomp/lastprivate-conditional-2.c b/gcc/testsuite/c-c++-common/gomp/lastprivate-conditional-2.c new file mode 100644 index 000000000000..4b1d2ca91639 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/lastprivate-conditional-2.c @@ -0,0 +1,28 @@ +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 parallel + #pragma omp for lastprivate (conditional: a) /* { dg-message "not supported yet" } */ + for (i = 0; i < 32; i++) + if (p[i]) + a = i; + #pragma omp simd lastprivate (conditional: b) /* { dg-message "not supported yet" } */ + for (i = 0; i < 32; i++) + if (p[i]) + b = i; + #pragma omp parallel + #pragma omp for simd lastprivate (conditional: c) /* { dg-message "not supported yet" } */ + for (i = 0; i < 32; i++) + if (p[i]) + c = i; + #pragma omp parallel for lastprivate (conditional: d) /* { dg-message "not supported yet" } */ + for (i = 0; i < 32; i++) + if (p[i]) + d = i; + #pragma omp parallel for simd lastprivate (conditional: e) /* { dg-message "not supported yet" } */ + for (i = 0; i < 32; i++) + if (p[i]) + e = i; +}