2015-11-12 Nathan Sidwell <nathan@codesourcery.com>
* langhooks-def.h (omp_mappable_type): Remove oacc arg.
* langhooks.h (lhd_omp_mappable_type): Likewise.
* langhooks.c (lhd_omp_mappable_type): Likswise.
* gimplify.c (omp_notice_variable): Adjust omp_mappable_type call.
c/
* c-typeck.c (c_finish_omp_clauses): Adjust omp_mappable_type calls.
* c-decl.c (c_decl_attributes): Likewise.
testsuite/
* g++.dg/goacc/reference.C: Adjust.
cp/
* semantics.c (finish_ommp_clauses): Adjust omp_mappable_type calls.
* decl2.c (cp_omp_mappable_type): Remove oacc arg and processing.
* cp-tree.h (cp_omp_mappable_type): Remove oacc arg.
oIndex: gimplify.c
===================================================================
@@ -6106,9 +6106,7 @@ omp_notice_variable (struct gimplify_omp
&& lang_hooks.decls.omp_privatize_by_reference (decl))
type = TREE_TYPE (type);
if (nflags == flags
- && !lang_hooks.types.omp_mappable_type (type,
- (ctx->region_type
- & ORT_ACC) != 0))
+ && !lang_hooks.types.omp_mappable_type (type))
{
error ("%qD referenced in target region does not have "
"a mappable type", decl);
===================================================================
@@ -525,7 +525,7 @@ lhd_omp_firstprivatize_type_sizes (struc
/* Return true if TYPE is an OpenMP mappable type. */
bool
-lhd_omp_mappable_type (tree type, bool oacc ATTRIBUTE_UNUSED)
+lhd_omp_mappable_type (tree type)
{
/* Mappable type has to be complete. */
if (type == error_mark_node || !COMPLETE_TYPE_P (type))
===================================================================
@@ -112,7 +112,7 @@ struct lang_hooks_for_types
void (*omp_firstprivatize_type_sizes) (struct gimplify_omp_ctx *, tree);
/* Return true if TYPE is a mappable type. */
- bool (*omp_mappable_type) (tree type, bool oacc);
+ bool (*omp_mappable_type) (tree type);
/* Return TRUE if TYPE1 and TYPE2 are identical for type hashing purposes.
Called only after doing all language independent checks.
===================================================================
@@ -4,7 +4,7 @@
int
test1 (int &ref)
{
-#pragma acc kernels copy (ref) // { dg-error "reference types are not supported in OpenACC" }
+#pragma acc kernels copy (ref)
{
ref = 10;
}
@@ -16,12 +16,12 @@ test2 (int &ref)
int b;
#pragma acc kernels copyout (b)
{
- b = ref + 10; // { dg-error "referenced in target region does not have a mappable type" }
+ b = ref + 10;
}
#pragma acc parallel copyout (b)
{
- b = ref + 10; // { dg-error "referenced in target region does not have a mappable type" }
+ b = ref + 10;
}
ref = b;
@@ -33,7 +33,7 @@ main()
int a = 0;
int &ref_a = a;
- #pragma acc parallel copy (a, ref_a) // { dg-error "reference types are not supported in OpenACC" }
+ #pragma acc parallel copy (a, ref_a)
{
ref_a = 5;
}
===================================================================
@@ -12863,8 +12863,7 @@ c_finish_omp_clauses (tree clauses, bool
else
{
t = OMP_CLAUSE_DECL (c);
- if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t),
- is_oacc))
+ if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t)))
{
error_at (OMP_CLAUSE_LOCATION (c),
"array section does not have mappable type "
@@ -12916,8 +12915,7 @@ c_finish_omp_clauses (tree clauses, bool
t, omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
remove = true;
}
- else if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t),
- is_oacc))
+ else if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t)))
{
error_at (OMP_CLAUSE_LOCATION (c),
"%qE does not have a mappable type in %qs clause",
@@ -12967,8 +12965,7 @@ c_finish_omp_clauses (tree clauses, bool
|| (OMP_CLAUSE_MAP_KIND (c)
== GOMP_MAP_FORCE_DEVICEPTR)))
&& t == OMP_CLAUSE_DECL (c)
- && !lang_hooks.types.omp_mappable_type (TREE_TYPE (t),
- is_oacc))
+ && !lang_hooks.types.omp_mappable_type (TREE_TYPE (t)))
{
error_at (OMP_CLAUSE_LOCATION (c),
"%qD does not have a mappable type in %qs clause", t,
@@ -13044,7 +13041,7 @@ c_finish_omp_clauses (tree clauses, bool
omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
remove = true;
}
- else if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t), is_oacc))
+ else if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t)))
{
error_at (OMP_CLAUSE_LOCATION (c),
"%qD does not have a mappable type in %qs clause", t,
===================================================================
@@ -4411,7 +4411,7 @@ c_decl_attributes (tree *node, tree attr
|| TREE_CODE (*node) == FUNCTION_DECL))
{
if (VAR_P (*node)
- && !lang_hooks.types.omp_mappable_type (TREE_TYPE (*node), false))
+ && !lang_hooks.types.omp_mappable_type (TREE_TYPE (*node)))
error ("%q+D in declare target directive does not have mappable type",
*node);
else
===================================================================
@@ -79,7 +79,7 @@ extern void lhd_omp_finish_clause (tree,
struct gimplify_omp_ctx;
extern void lhd_omp_firstprivatize_type_sizes (struct gimplify_omp_ctx *,
tree);
-extern bool lhd_omp_mappable_type (tree, bool);
+extern bool lhd_omp_mappable_type (tree);
#define LANG_HOOKS_NAME "GNU unknown"
#define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct lang_identifier)
===================================================================
@@ -6523,7 +6523,7 @@ finish_omp_clauses (tree clauses, bool i
t = OMP_CLAUSE_DECL (c);
if (TREE_CODE (t) != TREE_LIST
&& !type_dependent_expression_p (t)
- && !cp_omp_mappable_type (TREE_TYPE (t), is_oacc))
+ && !cp_omp_mappable_type (TREE_TYPE (t)))
{
error_at (OMP_CLAUSE_LOCATION (c),
"array section does not have mappable type "
@@ -6588,7 +6588,7 @@ finish_omp_clauses (tree clauses, bool i
t, omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
remove = true;
}
- else if (!cp_omp_mappable_type (TREE_TYPE (t), is_oacc))
+ else if (!cp_omp_mappable_type (TREE_TYPE (t)))
{
error_at (OMP_CLAUSE_LOCATION (c),
"%qE does not have a mappable type in %qs clause",
@@ -6658,7 +6658,7 @@ finish_omp_clauses (tree clauses, bool i
&& !cp_omp_mappable_type (((TREE_CODE (TREE_TYPE (t))
== REFERENCE_TYPE)
? TREE_TYPE (TREE_TYPE (t))
- : TREE_TYPE (t)), is_oacc))
+ : TREE_TYPE (t))))
{
error_at (OMP_CLAUSE_LOCATION (c),
"%qD does not have a mappable type in %qs clause", t,
@@ -6781,7 +6781,7 @@ finish_omp_clauses (tree clauses, bool i
omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
remove = true;
}
- else if (!cp_omp_mappable_type (TREE_TYPE (t), is_oacc))
+ else if (!cp_omp_mappable_type (TREE_TYPE (t)))
{
error_at (OMP_CLAUSE_LOCATION (c),
"%qD does not have a mappable type in %qs clause", t,
===================================================================
@@ -1403,7 +1403,7 @@ cp_check_const_attributes (tree attribut
/* Return true if TYPE is an OpenMP mappable type. */
bool
-cp_omp_mappable_type (tree type, bool oacc)
+cp_omp_mappable_type (tree type)
{
/* Mappable type has to be complete. */
if (type == error_mark_node || !COMPLETE_TYPE_P (type))
@@ -1423,11 +1423,9 @@ cp_omp_mappable_type (tree type, bool oa
return false;
/* All fields must have mappable types. */
else if (TREE_CODE (field) == FIELD_DECL
- && !cp_omp_mappable_type (TREE_TYPE (field), oacc))
+ && !cp_omp_mappable_type (TREE_TYPE (field)))
return false;
}
- if (oacc && TREE_CODE (type) == REFERENCE_TYPE)
- return false;
return true;
}
@@ -1452,7 +1450,7 @@ cplus_decl_attributes (tree *decl, tree
*decl);
else if (!processing_template_decl
&& VAR_P (*decl)
- && !cp_omp_mappable_type (TREE_TYPE (*decl), false))
+ && !cp_omp_mappable_type (TREE_TYPE (*decl)))
error ("%q+D in declare target directive does not have mappable type",
*decl);
else
===================================================================
@@ -5790,7 +5790,7 @@ extern bool possibly_inlined_p (tree);
extern int parm_index (tree);
extern tree vtv_start_verification_constructor_init_function (void);
extern tree vtv_finish_verification_constructor_init_function (tree);
-extern bool cp_omp_mappable_type (tree, bool);
+extern bool cp_omp_mappable_type (tree);
/* in error.c */
extern const char *type_as_string (tree, int);