comparison libgomp/testsuite/libgomp.c/target-39.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
comparison
equal deleted inserted replaced
145:1830386684a0 152:2b5abeee2509
1 /* { dg-do run } */
2 /* { dg-options "-O0" } */
3
4 extern void abort (void);
5 volatile int v;
6 #pragma omp declare target to (v)
7 typedef void (*fnp1) (void);
8 typedef fnp1 (*fnp2) (void);
9 void f1 (void) { v++; }
10 void f2 (void) { v += 4; }
11 void f3 (void) { v += 16; f1 (); }
12 fnp1 f4 (void) { v += 64; return f2; }
13 int a = 1;
14 int *b = &a;
15 int **c = &b;
16 fnp2 f5 (void) { f3 (); return f4; }
17 #pragma omp declare target to (c, f5)
18
19 int
20 main ()
21 {
22 int err = 0;
23 #pragma omp target map(from:err)
24 {
25 volatile int xa;
26 int *volatile xb;
27 int **volatile xc;
28 fnp2 xd;
29 fnp1 xe;
30 err = 0;
31 xa = a;
32 err |= xa != 1;
33 xb = b;
34 err |= xb != &a;
35 xc = c;
36 err |= xc != &b;
37 xd = f5 ();
38 err |= v != 17;
39 xe = xd ();
40 err |= v != 81;
41 xe ();
42 err |= v != 85;
43 }
44 if (err)
45 abort ();
46 return 0;
47 }