1 // { dg-do run }
2 // { dg-require-effective-target offload_device_shared_as }
3 
4 #include <stdlib.h>
5 
6 struct typeX
7 {
8   int a;
9 };
10 
11 class typeY
12 {
13 public:
foo()14   int foo () { return a^0x01; }
15   int a;
16 };
17 
18 #pragma omp declare target
19 struct typeX varX;
20 class typeY varY;
21 #pragma omp end declare target
22 
main()23 int main ()
24 {
25   varX.a = 0;
26   varY.a = 0;
27 
28   #pragma omp target
29     {
30       varX.a = 100;
31       varY.a = 100;
32     }
33 
34   if (varX.a != 100 || varY.a != 100)
35     abort ();
36 
37   return 0;
38 }
39