[OpenACC] C++ reference mapping

2018-09-09  Cesar Philippidis  <cesar@codesourcery.com>
	    Julian Brown  <julian@codesourcery.com>

	PR middle-end/86336

	gcc/cp/
	* semantics.c (finish_omp_clauses): Treat C++ references the same in
	OpenACC as OpenMP.

	gcc/
	* gimplify.c (gimplify_scan_omp_clauses): Set
	target_firstprivatize_array_bases in OpenACC parallel and kernels
	region contexts.  Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from
	OpenACC data regions.

	libgomp/
	* testsuite/libgomp.oacc-c++/non-scalar-data.C: Remove XFAIL.

Co-Authored-By: Julian Brown <julian@codesourcery.com>

From-SVN: r264244
This commit is contained in:
Cesar Philippidis 2018-09-12 08:21:19 -07:00 committed by Julian Brown
parent c749305900
commit 8e36332cf6
6 changed files with 28 additions and 4 deletions

View File

@ -1,3 +1,12 @@
2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
Julian Brown <julian@codesourcery.com>
PR middle-end/86336
* gimplify.c (gimplify_scan_omp_clauses): Set
target_firstprivatize_array_bases in OpenACC parallel and kernels
region contexts. Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from
OpenACC data regions.
2018-09-12 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (sqrt_extend<mode>xf3_i387): Remove.

View File

@ -1,3 +1,10 @@
2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
Julian Brown <julian@codesourcery.com>
PR middle-end/86336
* semantics.c (finish_omp_clauses): Treat C++ references the same in
OpenACC as OpenMP.
2018-08-28 Martin Liska <mliska@suse.cz>
* constexpr.c (cxx_eval_call_expression): Add quotes

View File

@ -6878,7 +6878,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
handle_map_references:
if (!remove
&& !processing_template_decl
&& (ort & C_ORT_OMP_DECLARE_SIMD) == C_ORT_OMP
&& ort != C_ORT_DECLARE_SIMD
&& TYPE_REF_P (TREE_TYPE (OMP_CLAUSE_DECL (c))))
{
t = OMP_CLAUSE_DECL (c);

View File

@ -7513,6 +7513,8 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p,
case OMP_TARGET_EXIT_DATA:
case OACC_DECLARE:
case OACC_HOST_DATA:
case OACC_PARALLEL:
case OACC_KERNELS:
ctx->target_firstprivatize_array_bases = true;
default:
break;
@ -8556,7 +8558,8 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p,
if (code == OACC_DATA
&& OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
&& OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_FIRSTPRIVATE_POINTER)
&& (OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_FIRSTPRIVATE_POINTER
|| OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_FIRSTPRIVATE_REFERENCE))
remove = true;
if (remove)
*list_p = OMP_CLAUSE_CHAIN (c);

View File

@ -1,3 +1,9 @@
2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
Julian Brown <julian@codesourcery.com>
PR middle-end/86336
* testsuite/libgomp.oacc-c++/non-scalar-data.C: Remove XFAIL.
2018-08-21 Nicolas Koenig <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

View File

@ -1,8 +1,7 @@
// Ensure that a non-scalar dummy arguments which are implicitly used inside
// offloaded regions are properly mapped using present_or_copy semantics.
// { dg-xfail-if "TODO" { *-*-* } }
// { dg-excess-errors "ICE" }
// { dg-do run }
#include <cassert>