[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
This commit is contained in:
Joseph Myers 2018-10-29 14:31:20 +00:00 committed by Julian Brown
parent 5d8c32cb86
commit 87a5ccfb7c
4 changed files with 57 additions and 1 deletions

View File

@ -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

View File

@ -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)
{

View File

@ -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.

View File

@ -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;
}