2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
[official-gcc.git] / libgomp / testsuite / libgomp.c++ / pr63248.C
blob48d3f0af797d85ced1baa7511bcf83f7557e0dfb
1 // PR c++/63248
2 // { dg-do run }
4 int *v;
6 template <typename T>
8 foo (T A, T B)
10   T a = 2;
11   T b = 4;
13 #pragma omp target map(v[a:b])
14   v[a] = 1;
16 #pragma omp target map(v[A:B])
17   v[a] = 2;
19 #pragma omp target map(A)
20   A = 19;
21   return A;
24 template <int N>
25 int
26 bar (int A, int B)
28 #pragma omp target map(A)
29   A = 8;
30   if (A != 8)
31     __builtin_abort ();
32 #pragma omp target map(A, B)
33   {
34     A = 1;
35     B = 2;
36   }
37   return A + B;
40 int
41 baz (int A, int B)
43 #pragma omp target map(A)
44   A = 8;
45   if (A != 8)
46     __builtin_abort ();
47 #pragma omp target map(A, B)
48   {
49     A = 1;
50     B = 2;
51   }
52   return A + B;
55 int
56 main ()
58   int a[10] = { 0 };
59   v = a;
60   if (foo (1, 5) != 19 || v[2] != 2 || bar<0> (5, 7) != 3 || baz (5, 7) != 3)
61     __builtin_abort ();