aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/c-family/c-common.h1
-rw-r--r--gcc/c-family/c-omp.cc33
-rw-r--r--gcc/c/c-typeck.cc4
-rw-r--r--gcc/cp/semantics.cc4
-rw-r--r--gcc/tree-core.h1
-rw-r--r--gcc/tree.cc36
6 files changed, 41 insertions, 38 deletions
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index a8d6f82..5f0b5d9 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -1250,7 +1250,6 @@ extern enum omp_clause_default_kind c_omp_predetermined_sharing (tree);
extern enum omp_clause_defaultmap_kind c_omp_predetermined_mapping (tree);
extern tree c_omp_check_context_selector (location_t, tree);
extern void c_omp_mark_declare_variant (location_t, tree, tree);
-extern const char *c_omp_map_clause_name (tree, bool);
extern void c_omp_adjust_map_clauses (tree, bool);
enum c_omp_directive_kind {
diff --git a/gcc/c-family/c-omp.cc b/gcc/c-family/c-omp.cc
index cd9d866..777cdc6 100644
--- a/gcc/c-family/c-omp.cc
+++ b/gcc/c-family/c-omp.cc
@@ -2996,39 +2996,6 @@ c_omp_predetermined_mapping (tree decl)
}
-/* For OpenACC, the OMP_CLAUSE_MAP_KIND of an OMP_CLAUSE_MAP is used internally
- to distinguish clauses as seen by the user. Return the "friendly" clause
- name for error messages etc., where possible. See also
- c/c-parser.cc:c_parser_oacc_data_clause and
- cp/parser.cc:cp_parser_oacc_data_clause. */
-
-const char *
-c_omp_map_clause_name (tree clause, bool oacc)
-{
- if (oacc && OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_MAP)
- switch (OMP_CLAUSE_MAP_KIND (clause))
- {
- case GOMP_MAP_FORCE_ALLOC:
- case GOMP_MAP_ALLOC: return "create";
- case GOMP_MAP_FORCE_TO:
- case GOMP_MAP_TO: return "copyin";
- case GOMP_MAP_FORCE_FROM:
- case GOMP_MAP_FROM: return "copyout";
- case GOMP_MAP_FORCE_TOFROM:
- case GOMP_MAP_TOFROM: return "copy";
- case GOMP_MAP_RELEASE: return "delete";
- case GOMP_MAP_FORCE_PRESENT: return "present";
- case GOMP_MAP_ATTACH: return "attach";
- case GOMP_MAP_FORCE_DETACH:
- case GOMP_MAP_DETACH: return "detach";
- case GOMP_MAP_DEVICE_RESIDENT: return "device_resident";
- case GOMP_MAP_LINK: return "link";
- case GOMP_MAP_FORCE_DEVICEPTR: return "deviceptr";
- default: break;
- }
- return omp_clause_code_name[OMP_CLAUSE_CODE (clause)];
-}
-
/* Used to merge map clause information in c_omp_adjust_map_clauses. */
struct map_clause
{
diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc
index 54b0b0d..c0812de 100644
--- a/gcc/c/c-typeck.cc
+++ b/gcc/c/c-typeck.cc
@@ -13373,7 +13373,7 @@ handle_omp_array_sections_1 (tree c, tree t, vec<tree> &types,
{
error_at (OMP_CLAUSE_LOCATION (c),
"expected single pointer in %qs clause",
- c_omp_map_clause_name (c, ort == C_ORT_ACC));
+ user_omp_clause_code_name (c, ort == C_ORT_ACC));
return error_mark_node;
}
}
@@ -14096,7 +14096,7 @@ c_oacc_check_attachments (tree c)
if (TREE_CODE (TREE_TYPE (t)) != POINTER_TYPE)
{
error_at (OMP_CLAUSE_LOCATION (c), "expected pointer in %qs clause",
- c_omp_map_clause_name (c, true));
+ user_omp_clause_code_name (c, true));
return true;
}
}
diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc
index 2174006..da270e8 100644
--- a/gcc/cp/semantics.cc
+++ b/gcc/cp/semantics.cc
@@ -5195,7 +5195,7 @@ handle_omp_array_sections_1 (tree c, tree t, vec<tree> &types,
{
error_at (OMP_CLAUSE_LOCATION (c),
"expected single pointer in %qs clause",
- c_omp_map_clause_name (c, ort == C_ORT_ACC));
+ user_omp_clause_code_name (c, ort == C_ORT_ACC));
return error_mark_node;
}
}
@@ -6653,7 +6653,7 @@ cp_oacc_check_attachments (tree c)
if (TREE_CODE (type) != POINTER_TYPE)
{
error_at (OMP_CLAUSE_LOCATION (c), "expected pointer in %qs clause",
- c_omp_map_clause_name (c, true));
+ user_omp_clause_code_name (c, true));
return true;
}
}
diff --git a/gcc/tree-core.h b/gcc/tree-core.h
index 4530bd8..f1c2b64 100644
--- a/gcc/tree-core.h
+++ b/gcc/tree-core.h
@@ -2283,6 +2283,7 @@ extern const char * built_in_names[(int) END_BUILTINS];
/* Number of operands and names for each OMP_CLAUSE node. */
extern unsigned const char omp_clause_num_ops[];
extern const char * const omp_clause_code_name[];
+extern const char *user_omp_clause_code_name (tree, bool);
/* A vector of all translation-units. */
extern GTY (()) vec<tree, va_gc> *all_translation_units;
diff --git a/gcc/tree.cc b/gcc/tree.cc
index d6f900c..b8017af 100644
--- a/gcc/tree.cc
+++ b/gcc/tree.cc
@@ -69,6 +69,7 @@ along with GCC; see the file COPYING3. If not see
#include "gimple-fold.h"
#include "escaped_string.h"
#include "gimple-range.h"
+#include "gomp-constants.h"
/* Tree code classes. */
@@ -439,6 +440,41 @@ const char * const omp_clause_code_name[] =
"nohost",
};
+/* Unless specific to OpenACC, we tend to internally maintain OpenMP-centric
+ clause names, but for use in diagnostics etc. would like to use the "user"
+ clause names. */
+
+const char *
+user_omp_clause_code_name (tree clause, bool oacc)
+{
+ /* For OpenACC, the 'OMP_CLAUSE_MAP_KIND' of an 'OMP_CLAUSE_MAP' is used to
+ distinguish clauses as seen by the user. See also where front ends do
+ 'build_omp_clause' with 'OMP_CLAUSE_MAP'. */
+ if (oacc && OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_MAP)
+ switch (OMP_CLAUSE_MAP_KIND (clause))
+ {
+ case GOMP_MAP_FORCE_ALLOC:
+ case GOMP_MAP_ALLOC: return "create";
+ case GOMP_MAP_FORCE_TO:
+ case GOMP_MAP_TO: return "copyin";
+ case GOMP_MAP_FORCE_FROM:
+ case GOMP_MAP_FROM: return "copyout";
+ case GOMP_MAP_FORCE_TOFROM:
+ case GOMP_MAP_TOFROM: return "copy";
+ case GOMP_MAP_RELEASE: return "delete";
+ case GOMP_MAP_FORCE_PRESENT: return "present";
+ case GOMP_MAP_ATTACH: return "attach";
+ case GOMP_MAP_FORCE_DETACH:
+ case GOMP_MAP_DETACH: return "detach";
+ case GOMP_MAP_DEVICE_RESIDENT: return "device_resident";
+ case GOMP_MAP_LINK: return "link";
+ case GOMP_MAP_FORCE_DEVICEPTR: return "deviceptr";
+ default: break;
+ }
+
+ return omp_clause_code_name[OMP_CLAUSE_CODE (clause)];
+}
+
/* Return the tree node structure used by tree code CODE. */