Fix xfail for 32-bit hppa*-*-* in gcc.dg/pr84877.c
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / lvalue-tofrom-1.C
blob643cfdb6e28be1b3b87b5c91b27d9f59e93e7904
1 #include <cstring>
2 #include <cassert>
4 static int lo()
6   return 30;
9 static int len()
11   return 10;
14 template<typename T>
15 void foo ()
17   T arr[100];
18   T *ptr;
20   memset (arr, '\0', sizeof arr);
22 #pragma omp target enter data map(to: arr[0:100])
24   for (int i = 0; i < 100; i++)
25     arr[i] = i;
27   ptr = &arr[10];
29 #pragma omp target update to(*ptr)
31   for (int i = lo (); i < lo () + len (); i++)
32     arr[i] = i * 2;
34 #pragma omp target update to(arr[lo():len()])
36 #pragma omp target exit data map(from: arr[0:100])
38   assert (arr[10] == 10);
39   for (int i = lo (); i < lo () + len (); i++)
40     assert (arr[i] == i * 2);
43 int
44 main ()
46   char arr[100];
47   char *ptr;
49   memset (arr, '\0', sizeof arr);
51 #pragma omp target enter data map(to: arr[0:100])
53   for (int i = 0; i < 100; i++)
54     arr[i] = i;
56   ptr = &arr[10];
58 #pragma omp target update to(*ptr)
60   for (int i = lo (); i < lo () + len (); i++)
61     arr[i] = i * 2;
63 #pragma omp target update to(arr[lo():len()])
65 #pragma omp target exit data map(from: arr[0:100])
67   assert (arr[10] == 10);
68   for (int i = lo (); i < lo () + len (); i++)
69     assert (arr[i] == i * 2);
71   foo<short> ();
73   return 0;