mirror of git://gcc.gnu.org/git/gcc.git
gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid but unsupported lastprivate with conditional modifier.
* 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. From-SVN: r265987
This commit is contained in:
parent
c4c44802ab
commit
4302dd3dff
|
|
@ -1,3 +1,8 @@
|
|||
2018-11-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gimplify.c (gimplify_scan_omp_clauses): Call sorry_at for valid
|
||||
but unsupported lastprivate with conditional modifier.
|
||||
|
||||
2018-11-09 Jeff Law <law@redhat.com>
|
||||
|
||||
* config/mips/mips.c (mips_loongson_ext2_prefetch_cookie): Handle
|
||||
|
|
|
|||
|
|
@ -8065,6 +8065,10 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p,
|
|||
"%<lastprivate%> clause", decl);
|
||||
OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (c) = 0;
|
||||
}
|
||||
if (OMP_CLAUSE_LASTPRIVATE_CONDITIONAL (c))
|
||||
sorry_at (OMP_CLAUSE_LOCATION (c),
|
||||
"%<conditional%> modifier on %<lastprivate%> clause "
|
||||
"not supported yet");
|
||||
if (outer_ctx
|
||||
&& (outer_ctx->region_type == ORT_COMBINED_PARALLEL
|
||||
|| ((outer_ctx->region_type & ORT_COMBINED_TEAMS)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2018-11-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* 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 <law@redhat.com>
|
||||
|
||||
gcc.dg/torture/stackalign/builtin-apply-2.c: Skip on v850.
|
||||
|
|
|
|||
|
|
@ -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" } */
|
||||
|
|
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue