diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c/c-parser.c | 1 | ||||
-rw-r--r-- | gcc/cp/parser.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/gomp/pr100902-1.c | 17 |
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; +} |