[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:
parent
5d8c32cb86
commit
87a5ccfb7c
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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.
|
||||
|
43
libgomp/testsuite/libgomp.oacc-c++/this.C
Normal file
43
libgomp/testsuite/libgomp.oacc-c++/this.C
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user