blob: bf72fda0a89f1b347e48aa141c52ef4140e7f4ea [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-fopenmp" } */
#pragma omp declare target
int a[] = { 1, 2, 3 };
extern int b[]; /* { dg-error "'b' in declare target directive does not have mappable type" } */
extern int c[]; /* { dg-error "'c' in declare target directive does not have mappable type" } */
extern int d[]; /* { dg-error "'d' in declare target directive does not have mappable type" } */
int d[3];
#pragma omp end declare target
int c[3];
int e[] = { 1, 2, 3 };
#pragma omp declare target to (e)
extern int f[];
#pragma omp declare target to (f) /* { dg-error "'f' does not have a mappable type in 'to' clause" } */
extern int g[];
#pragma omp declare target to (g) /* { dg-error "'g' does not have a mappable type in 'to' clause" } */
int g[3];
extern int h[];
int h[3];
#pragma omp declare target to (h)
int i[] = { 1, 2, 3 };
int j[] = { 1, 2, 3 };
extern int k[];
extern int l[];
extern int m[];
extern int n[];
extern int o[];
extern int p[];
int k[3];
int l[3];
int q;
void
foo (void)
{
#pragma omp target update to (q) to (i)
#pragma omp target map (tofrom: j)
;
#pragma omp target update from (q) from (k)
#pragma omp target map (to: l)
;
#pragma omp target update from (q) from (m) /* { dg-error "'m' does not have a mappable type in 'from' clause" } */
#pragma omp target map (from: n) /* { dg-error "'n' does not have a mappable type in 'map' clause" } */
;
#pragma omp target update to (q) to (o) /* { dg-error "'o' does not have a mappable type in 'to' clause" } */
#pragma omp target map (from: p) /* { dg-error "'p' does not have a mappable type in 'map' clause" } */
;
}
int o[3];
int p[3];