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

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