Skip gnat.dg/prot7.adb on hppa.
[official-gcc.git] / libgomp / testsuite / libgomp.c-c++-common / target-40.c
blobb46606930556fff174b5e89b48cfa795e0fb4ded
1 /* { dg-do run } */
2 /* { dg-options "-O0" } */
4 extern
5 #ifdef __cplusplus
6 "C"
7 #endif
8 void abort (void);
9 volatile int v;
10 #pragma omp declare target to (v)
11 typedef void (*fnp1) (void);
12 typedef fnp1 (*fnp2) (void);
13 void f1 (void) { v++; }
14 void f2 (void) { v += 4; }
15 void f3 (void) { v += 16; f1 (); }
16 fnp1 f4 (void) { v += 64; return f2; }
17 int a = 1;
18 int *b = &a;
19 int **c = &b;
20 fnp2 f5 (void) { f3 (); return f4; }
21 #pragma omp declare target enter (c)
23 int
24 main ()
26 int err = 0;
27 #pragma omp target map(from:err)
29 volatile int xa;
30 int *volatile xb;
31 int **volatile xc;
32 fnp2 xd;
33 fnp1 xe;
34 err = 0;
35 xa = a;
36 err |= xa != 1;
37 xb = b;
38 err |= xb != &a;
39 xc = c;
40 err |= xc != &b;
41 xd = f5 ();
42 err |= v != 17;
43 xe = xd ();
44 err |= v != 81;
45 xe ();
46 err |= v != 85;
48 if (err)
49 abort ();
50 return 0;