diff options
Diffstat (limited to 'gcc-4.9/libgomp/testsuite/libgomp.c++')
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.c++/pr63248.C | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c++/pr63248.C b/gcc-4.9/libgomp/testsuite/libgomp.c++/pr63248.C new file mode 100644 index 0000000..48d3f0a --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.c++/pr63248.C @@ -0,0 +1,62 @@ +// PR c++/63248 +// { dg-do run } + +int *v; + +template <typename T> +T +foo (T A, T B) +{ + T a = 2; + T b = 4; + +#pragma omp target map(v[a:b]) + v[a] = 1; + +#pragma omp target map(v[A:B]) + v[a] = 2; + +#pragma omp target map(A) + A = 19; + return A; +} + +template <int N> +int +bar (int A, int B) +{ +#pragma omp target map(A) + A = 8; + if (A != 8) + __builtin_abort (); +#pragma omp target map(A, B) + { + A = 1; + B = 2; + } + return A + B; +} + +int +baz (int A, int B) +{ +#pragma omp target map(A) + A = 8; + if (A != 8) + __builtin_abort (); +#pragma omp target map(A, B) + { + A = 1; + B = 2; + } + return A + B; +} + +int +main () +{ + int a[10] = { 0 }; + v = a; + if (foo (1, 5) != 19 || v[2] != 2 || bar<0> (5, 7) != 3 || baz (5, 7) != 3) + __builtin_abort (); +} |