mirror of git://gcc.gnu.org/git/gcc.git
[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>
|
2018-10-25 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
* parser.c (cp_parser_sizeof_operand): Remove redundant use of
|
* 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)]);
|
omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
|
||||||
return error_mark_node;
|
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_ARTIFICIAL (t)
|
||||||
&& DECL_NAME (t) == this_identifier)
|
&& 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>
|
2018-09-18 Cesar Philippidis <cesar@codesourcery.com>
|
||||||
|
|
||||||
* plugin/plugin-nvptx.c (struct cuda_map): New.
|
* plugin/plugin-nvptx.c (struct cuda_map): New.
|
||||||
|
|
|
||||||
|
|
@ -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