diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-02-06 10:34:53 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-02-06 10:34:53 +0000 |
commit | b8214689c515ec4e8ed76edefa3bfd80b8826902 (patch) | |
tree | 091d383fc8916e747be9e17db128fffaa6963396 /libgomp/testsuite/libgomp.c++ | |
parent | 21bb8f31d2af6f9d357aed1bd66114826bea041a (diff) | |
download | gcc-b8214689c515ec4e8ed76edefa3bfd80b8826902.tar.gz |
PR middle-end/56217
* omp-low.c (use_pointer_for_field): Return false if
lower_send_shared_vars doesn't generate any copy-out code.
* g++.dg/gomp/pr56217.C: New test.
* testsuite/libgomp.c++/pr56217.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195796 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp/testsuite/libgomp.c++')
-rw-r--r-- | libgomp/testsuite/libgomp.c++/pr56217.C | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.c++/pr56217.C b/libgomp/testsuite/libgomp.c++/pr56217.C new file mode 100644 index 00000000000..19da9185350 --- /dev/null +++ b/libgomp/testsuite/libgomp.c++/pr56217.C @@ -0,0 +1,36 @@ +// PR middle-end/56217 +// { dg-do run } +// { dg-options "-std=c++0x" } + +extern "C" void abort (); + +template <typename T> +struct ptr { + T *p; + ptr () : p () {} + ptr (ptr &) = delete; + ptr (ptr &&o) : p(o) {} + operator T * () { return p; } +}; + +int a[6] = { 100, 101, 102, 103, 104, 105 }; + +static ptr<int> +f () +{ + ptr<int> pt; + #pragma omp task shared (pt) + pt.p = a + 2; + #pragma omp taskwait + return pt; +} + +int +main () +{ + ptr<int> pt; + #pragma omp parallel + #pragma omp single + if (f () != a + 2 || *f () != 102) + abort (); +} |