diff options
author | Ben Cheng <bccheng@google.com> | 2014-03-25 22:37:19 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2014-03-25 22:37:19 -0700 |
commit | 1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch) | |
tree | c607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/libgomp/testsuite/libgomp.c++/udr-5.C | |
parent | 283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff) | |
download | toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2 toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip |
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/libgomp/testsuite/libgomp.c++/udr-5.C')
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.c++/udr-5.C | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.c++/udr-5.C b/gcc-4.9/libgomp/testsuite/libgomp.c++/udr-5.C new file mode 100644 index 000000000..91ae2f697 --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.c++/udr-5.C @@ -0,0 +1,49 @@ +// { dg-do run } + +extern "C" void abort (); + +struct S +{ + void foo () + { + S s; + int j = 0; + #pragma omp declare reduction (bar : int : omp_out += omp_in) + #pragma omp parallel reduction (bar : s) reduction(S::operator+ : j) + s.a = 4, j = 1; + if (s.a != 4 * j) abort (); + } + #pragma omp declare reduction (bar : S : baz (omp_out, omp_in)) + static void baz (S &x, S &y) { x.a += y.a; } + S () : a (0) {} + int a; +}; + +template <int N> +struct T +{ + void foo () + { + S s; + T t; + int j = 0; + #pragma omp declare reduction (bar : int : omp_out += omp_in) + #pragma omp parallel reduction (bar : t) reduction (S::bar : s) \ + reduction(T<N>::operator+ : j) + s.a = 4, t.a = 5, j = 1; + if (s.a != 4 * j || t.a != 5 * j) abort (); + } + #pragma omp declare reduction (bar : T<N> : baz (omp_out, omp_in)) + static void baz (T &x, T &y) { x.a += y.a; } + T () : a (N) {} + int a; +}; + +int +main () +{ + S s; + s.foo (); + T<0> t; + t.foo (); +} |