diff options
author | Joseph Myers <joseph@codesourcery.com> | 2018-10-29 14:31:20 +0000 |
---|---|---|
committer | Julian Brown <jules@gcc.gnu.org> | 2018-10-29 14:31:20 +0000 |
commit | 87a5ccfb7cbabcf510f7909387a16cc0f73931f3 (patch) | |
tree | 1427799828cfe5acd429f9f6512bd95c631c1afc | |
parent | 5d8c32cb86043e388fddc9833d9c2cd90ed05284 (diff) | |
download | gcc-87a5ccfb7cbabcf510f7909387a16cc0f73931f3.zip gcc-87a5ccfb7cbabcf510f7909387a16cc0f73931f3.tar.gz gcc-87a5ccfb7cbabcf510f7909387a16cc0f73931f3.tar.bz2 |
[OpenACC] Support C++ "this" in OpenACC directives
2018-10-29 Joseph Myers <joseph@codesourcery.com>
Julian Brown <julian@codesourcery.com>
* semantics.c (handle_omp_array_sections_1): Allow array sections with
"this" pointer for OpenACC.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
From-SVN: r265591
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 3 | ||||
-rw-r--r-- | libgomp/ChangeLog | 5 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-c++/this.C | 43 |
4 files changed, 57 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 27b739c..9130b86 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2018-10-29 Joseph Myers <joseph@codesourcery.com> + Julian Brown <julian@codesourcery.com> + + PR c++/66053 + * semantics.c (handle_omp_array_sections_1): Allow array + sections with "this" pointer for OpenACC. + 2018-10-25 Jason Merrill <jason@redhat.com> * parser.c (cp_parser_sizeof_operand): Remove redundant use of diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index c7f53d1..4c05365 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -4600,7 +4600,8 @@ handle_omp_array_sections_1 (tree c, tree t, vec<tree> &types, omp_clause_code_name[OMP_CLAUSE_CODE (c)]); return error_mark_node; } - else if (TREE_CODE (t) == PARM_DECL + else if (ort == C_ORT_OMP + && TREE_CODE (t) == PARM_DECL && DECL_ARTIFICIAL (t) && DECL_NAME (t) == this_identifier) { diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 9c2ae06..81fae2f 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2018-10-29 Joseph Myers <joseph@codesourcery.com> + Julian Brown <julian@codesourcery.com> + + * testsuite/libgomp.oacc-c++/this.C: New. + 2018-09-18 Cesar Philippidis <cesar@codesourcery.com> * plugin/plugin-nvptx.c (struct cuda_map): New. diff --git a/libgomp/testsuite/libgomp.oacc-c++/this.C b/libgomp/testsuite/libgomp.oacc-c++/this.C new file mode 100644 index 0000000..510c690 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c++/this.C @@ -0,0 +1,43 @@ +#include <cstdlib> +#include <iostream> +using namespace std; + +class test { + public: + int a; + + test () + { + a = -1; +#pragma acc enter data copyin (this[0:1]) + } + + ~test () + { +#pragma acc exit data delete (this[0:1]) + } + + void set (int i) + { + a = i; +#pragma acc update device (this[0:1]) + } + + int get () + { +#pragma acc update host (this[0:1]) + return a; + } +}; + +int +main () +{ + test t; + + t.set (4); + if (t.get () != 4) + abort (); + + return 0; +} |