aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c/c-parser.c1
-rw-r--r--gcc/cp/parser.c1
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr100902-1.c17
3 files changed, 19 insertions, 0 deletions
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index c491b12..add3353 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -20133,6 +20133,7 @@ c_parser_omp_target (c_parser *parser, enum pragma_context context, bool *if_p)
tree stmt = make_node (OMP_TARGET);
TREE_TYPE (stmt) = void_type_node;
OMP_TARGET_CLAUSES (stmt) = cclauses[C_OMP_CLAUSE_SPLIT_TARGET];
+ c_omp_adjust_map_clauses (OMP_TARGET_CLAUSES (stmt), true);
OMP_TARGET_BODY (stmt) = block;
OMP_TARGET_COMBINED (stmt) = 1;
SET_EXPR_LOCATION (stmt, loc);
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 4a46828..0649bf9 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -42233,6 +42233,7 @@ cp_parser_omp_target (cp_parser *parser, cp_token *pragma_tok,
tree stmt = make_node (OMP_TARGET);
TREE_TYPE (stmt) = void_type_node;
OMP_TARGET_CLAUSES (stmt) = cclauses[C_OMP_CLAUSE_SPLIT_TARGET];
+ c_omp_adjust_map_clauses (OMP_TARGET_CLAUSES (stmt), true);
OMP_TARGET_BODY (stmt) = body;
OMP_TARGET_COMBINED (stmt) = 1;
SET_EXPR_LOCATION (stmt, pragma_tok->location);
diff --git a/gcc/testsuite/c-c++-common/gomp/pr100902-1.c b/gcc/testsuite/c-c++-common/gomp/pr100902-1.c
new file mode 100644
index 0000000..babd01a
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr100902-1.c
@@ -0,0 +1,17 @@
+/* PR c/100902 */
+
+void
+foo (int *ptr)
+{
+ #pragma omp target map (ptr, ptr[:4])
+ #pragma omp parallel master
+ ptr[0] = 1;
+}
+
+void
+bar (int *ptr)
+{
+ #pragma omp target parallel map (ptr[:4], ptr)
+ #pragma omp master
+ ptr[0] = 1;
+}