diff options
Diffstat (limited to 'gcc/c')
-rw-r--r-- | gcc/c/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/c/c-parser.c | 6 |
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 5161f7d..f02fbdb 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,11 @@ +2016-04-29 Cesar Philippidis <cesar@codesourcery.com> + + PR middle-end/70626 + * c-parser.c (c_parser_oacc_loop): Don't augment mask with + OACC_LOOP_CLAUSE_MASK. + (c_parser_oacc_kernels_parallel): Update call to + c_oacc_split_loop_clauses. + 2016-04-28 Andrew MacLeod <amacleod@redhat.com> * c-array-notation.c (fix_builtin_array_notation_fn): Fix final diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 36c44ab..832b8dd 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -13828,6 +13828,8 @@ static tree c_parser_oacc_loop (location_t loc, c_parser *parser, char *p_name, omp_clause_mask mask, tree *cclauses, bool *if_p) { + bool is_parallel = ((mask >> PRAGMA_OACC_CLAUSE_REDUCTION) & 1) == 1; + strcat (p_name, " loop"); mask |= OACC_LOOP_CLAUSE_MASK; @@ -13835,7 +13837,7 @@ c_parser_oacc_loop (location_t loc, c_parser *parser, char *p_name, cclauses == NULL); if (cclauses) { - clauses = c_oacc_split_loop_clauses (clauses, cclauses); + clauses = c_oacc_split_loop_clauses (clauses, cclauses, is_parallel); if (*cclauses) *cclauses = c_finish_omp_clauses (*cclauses, false); if (clauses) @@ -13930,8 +13932,6 @@ c_parser_oacc_kernels_parallel (location_t loc, c_parser *parser, if (strcmp (p, "loop") == 0) { c_parser_consume_token (parser); - mask |= OACC_LOOP_CLAUSE_MASK; - tree block = c_begin_omp_parallel (); tree clauses; c_parser_oacc_loop (loc, parser, p_name, mask, &clauses, if_p); |