From: Jakub Jelinek Date: Wed, 1 Aug 2018 17:45:51 +0000 (+0200) Subject: tree-core.h (enum omp_clause_depend_kind): Remove OMP_CLAUSE_DEPEND_UNSPECIFIED,... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed6b446b13ea26231840339cea35010e4badb2a3;p=thirdparty%2Fgcc.git tree-core.h (enum omp_clause_depend_kind): Remove OMP_CLAUSE_DEPEND_UNSPECIFIED, add OMP_CLAUSE_DEPEND_DEPOBJ. * tree-core.h (enum omp_clause_depend_kind): Remove OMP_CLAUSE_DEPEND_UNSPECIFIED, add OMP_CLAUSE_DEPEND_DEPOBJ. * gimplify.c (gimplify_omp_depend): Handle OMP_CLAUSE_DEPEND_DEPOBJ instead of OMP_CLAUSE_DEPEND_UNSPECIFIED. * omp-low.c (lower_depend_clauses): Likewise. * tree-pretty-print.c (dump_omp_clause): Likewise, print the dependence type unconditionally. gcc/c-family/ * c-omp.c (c_finish_omp_depobj): Test for OMP_CLAUSE_DEPEND_DEPOBJ on clause instead of OMP_CLAUSE_DEPEND_UNSPECIFIED, adjust diagnostics in that case. Expect kind to be OMP_CLAUSE_DEPEND_SOURCE if clause is specified, rather than OMP_CLAUSE_DEPEND_UNSPECIFIED. gcc/c/ * c-parser.c (c_parser_omp_clause_depend): Adjust parsing for dependence type to be no longer optional and dependence modifier separated from dependence type by comma rather than colon. Parse depobj dependence type. (c_parser_omp_depobj): Use OMP_CLAUSE_DEPEND_SOURCE instead of OMP_CLAUSE_DEPEND_UNSPECIFIED. * c-typeck.c (c_finish_omp_clauses): Handle OMP_CLAUSE_DEPEND_DEPOBJ instead of OMP_CLAUSE_DEPEND_UNSPECIFIED, adjust diagnostics. gcc/cp/ * parser.c (cp_parser_omp_clause_depend): Adjust parsing for dependence type to be no longer optional and dependence modifier separated from dependence type by comma rather than colon. Parse depobj dependence type. (cp_parser_omp_depobj): Use OMP_CLAUSE_DEPEND_SOURCE instead of OMP_CLAUSE_DEPEND_UNSPECIFIED. * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_DEPEND_DEPOBJ instead of OMP_CLAUSE_DEPEND_UNSPECIFIED, adjust diagnostics. * pt.c (tsubst_expr): Use OMP_CLAUSE_DEPEND_SOURCE instead of OMP_CLAUSE_DEPEND_UNSPECIFIED. gcc/testsuite/ * c-c++-common/gomp/depend-iterator-1.c (foo, bar, baz): Separate dependence modifier from type with comma instead of colon. * c-c++-common/gomp/taskwait-depend-1.c (foo): Likewise. * c-c++-common/gomp/depobj-1.c (f1, f2, f3): Likewise. Add depobj: to depend clauses without dependence type. Add an extra test for depobj construct with depobj: type on depend clause and omp_depend_t type of the lvalue. * c-c++-common/gomp/depend-iterator-2.c (f1, f2, f3): Separate dependence modifier from type with comma instead of colon. Adjust diagnostics for dependence type no longer being optional. * g++.dg/gomp/depend-iterator-1.C (foo, bar, baz): Separate dependence modifier from type with comma instead of colon. * g++.dg/gomp/depend-iterator-2.C (f1, f2, f3, f4): Likewise. Adjust diagnostics for dependence type no longer being optional. * g++.dg/gomp/depobj-1.C (f1, f2, f4, f5): Separate dependence modifier from type with comma instead of colon. Add depobj: to depend clauses without dependence type. Add an extra test for depobj construct with depobj: type on depend clause and omp_depend_t type of the lvalue. libgomp/ * testsuite/libgomp.c-c++-common/depend-iterator-1.c (main): Separate dependence modifier from type with comma instead of colon. * testsuite/libgomp.c-c++-common/depend-iterator-2.c (foo): Likewise. * testsuite/libgomp.c-c++-common/depobj-1.c (dep, dep2, dep3, antidep): Add depobj: to depend clauses without dependence type. * testsuite/libgomp.c++/depend-iterator-1.C (bar, baz): Separate dependence modifier from type with comma instead of colon. * testsuite/libgomp.c++/depobj-1.C (dep, dep2, dep3, antidep): Add depobj: to depend clauses without dependence type. From-SVN: r263230 --- diff --git a/gcc/ChangeLog.gomp b/gcc/ChangeLog.gomp index 95b1ce5969f6..0e77a825f849 100644 --- a/gcc/ChangeLog.gomp +++ b/gcc/ChangeLog.gomp @@ -1,5 +1,13 @@ 2018-08-01 Jakub Jelinek + * tree-core.h (enum omp_clause_depend_kind): Remove + OMP_CLAUSE_DEPEND_UNSPECIFIED, add OMP_CLAUSE_DEPEND_DEPOBJ. + * gimplify.c (gimplify_omp_depend): Handle OMP_CLAUSE_DEPEND_DEPOBJ + instead of OMP_CLAUSE_DEPEND_UNSPECIFIED. + * omp-low.c (lower_depend_clauses): Likewise. + * tree-pretty-print.c (dump_omp_clause): Likewise, print the + dependence type unconditionally. + * tree.h (OMP_CLAUSE_REDUCTION_TASK, OMP_CLAUSE_REDUCTION_INSCAN): Define. * tree-pretty-print.c (dump_omp_clause): Print reduction modifiers. diff --git a/gcc/c-family/ChangeLog.gomp b/gcc/c-family/ChangeLog.gomp index 1aa692a38906..edce73eaef9e 100644 --- a/gcc/c-family/ChangeLog.gomp +++ b/gcc/c-family/ChangeLog.gomp @@ -1,5 +1,10 @@ 2018-08-01 Jakub Jelinek + * c-omp.c (c_finish_omp_depobj): Test for OMP_CLAUSE_DEPEND_DEPOBJ + on clause instead of OMP_CLAUSE_DEPEND_UNSPECIFIED, adjust diagnostics + in that case. Expect kind to be OMP_CLAUSE_DEPEND_SOURCE if clause + is specified, rather than OMP_CLAUSE_DEPEND_UNSPECIFIED. + * c-omp.c (c_omp_split_clauses): Handle OMP_CLAUSE_REDUCTION_TASK. 2018-07-18 Jakub Jelinek diff --git a/gcc/c-family/c-omp.c b/gcc/c-family/c-omp.c index dc1fde3a1f88..82ef5924ef51 100644 --- a/gcc/c-family/c-omp.c +++ b/gcc/c-family/c-omp.c @@ -477,10 +477,10 @@ c_finish_omp_depobj (location_t loc, tree depobj, "construct"); switch (OMP_CLAUSE_DEPEND_KIND (clause)) { - case OMP_CLAUSE_DEPEND_UNSPECIFIED: + case OMP_CLAUSE_DEPEND_DEPOBJ: error_at (OMP_CLAUSE_LOCATION (clause), - "dependence type must be specified in % clause " - "on % construct"); + "% dependence type specified in % " + "clause on % construct"); return; case OMP_CLAUSE_DEPEND_SOURCE: case OMP_CLAUSE_DEPEND_SINK: @@ -519,7 +519,7 @@ c_finish_omp_depobj (location_t loc, tree depobj, } } else - gcc_assert (kind != OMP_CLAUSE_DEPEND_UNSPECIFIED); + gcc_assert (kind != OMP_CLAUSE_DEPEND_SOURCE); if (depobj == error_mark_node) return; diff --git a/gcc/c/ChangeLog.gomp b/gcc/c/ChangeLog.gomp index fe5ea9616b2c..1a999bb2d902 100644 --- a/gcc/c/ChangeLog.gomp +++ b/gcc/c/ChangeLog.gomp @@ -1,5 +1,14 @@ 2018-08-01 Jakub Jelinek + * c-parser.c (c_parser_omp_clause_depend): Adjust parsing for + dependence type to be no longer optional and dependence modifier + separated from dependence type by comma rather than colon. Parse + depobj dependence type. + (c_parser_omp_depobj): Use OMP_CLAUSE_DEPEND_SOURCE instead of + OMP_CLAUSE_DEPEND_UNSPECIFIED. + * c-typeck.c (c_finish_omp_clauses): Handle OMP_CLAUSE_DEPEND_DEPOBJ + instead of OMP_CLAUSE_DEPEND_UNSPECIFIED, adjust diagnostics. + * c-parser.c (c_parser_omp_clause_reduction): Add IS_OMP argument, parse reduction modifiers. (c_parser_oacc_all_clauses, c_parser_omp_all_clauses): Adjust diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 34261ffa2240..289c3e118236 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -13940,13 +13940,22 @@ c_parser_omp_iterators (c_parser *parser) OpenMP 4.5: depend ( source ) - depend ( sink : vec ) */ + depend ( sink : vec ) + + OpenMP 5.0: + depend ( depend-modifier , depend-kind: variable-list ) + + depend-kind: + in | out | inout | mutexinoutset | depobj + + depend-modifier: + iterator ( iterators-definition ) */ static tree c_parser_omp_clause_depend (c_parser *parser, tree list) { location_t clause_loc = c_parser_peek_token (parser)->location; - enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_UNSPECIFIED; + enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_LAST; tree nl, c, iterators = NULL_TREE; matching_parens parens; @@ -13956,31 +13965,15 @@ c_parser_omp_clause_depend (c_parser *parser, tree list) do { if (c_parser_next_token_is_not (parser, CPP_NAME)) - break; + goto invalid_kind; const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value); - if (strcmp ("iterator", p) == 0 - && iterators == NULL_TREE - && c_parser_peek_2nd_token (parser)->type == CPP_OPEN_PAREN) - { - /* FIXME: if depend kind remains optional, this is ambiguous - and we'd need to do tentative parsing to distinguish between - valid iterator modifier and just normal expression starting - with iterator ( tokens. Not doing it right now, as I hope - it will become mandatory. */ + if (strcmp ("iterator", p) == 0 && iterators == NULL_TREE) + { iterators = c_parser_omp_iterators (parser); - c_parser_require (parser, CPP_COLON, "expected %<:%>"); + c_parser_require (parser, CPP_COMMA, "expected %<,%>"); continue; } - if (strcmp ("source", p) == 0 - && c_parser_peek_2nd_token (parser)->type == CPP_CLOSE_PAREN) - { - /* FIXME: this is another ambiguity. */ - kind = OMP_CLAUSE_DEPEND_SOURCE; - break; - } - if (c_parser_peek_2nd_token (parser)->type != CPP_COLON) - break; if (strcmp ("in", p) == 0) kind = OMP_CLAUSE_DEPEND_IN; else if (strcmp ("inout", p) == 0) @@ -13989,16 +13982,19 @@ c_parser_omp_clause_depend (c_parser *parser, tree list) kind = OMP_CLAUSE_DEPEND_MUTEXINOUTSET; else if (strcmp ("out", p) == 0) kind = OMP_CLAUSE_DEPEND_OUT; + else if (strcmp ("depobj", p) == 0) + kind = OMP_CLAUSE_DEPEND_DEPOBJ; else if (strcmp ("sink", p) == 0) kind = OMP_CLAUSE_DEPEND_SINK; + else if (strcmp ("source", p) == 0) + kind = OMP_CLAUSE_DEPEND_SOURCE; else goto invalid_kind; break; } while (1); - if (kind != OMP_CLAUSE_DEPEND_UNSPECIFIED) - c_parser_consume_token (parser); + c_parser_consume_token (parser); if (iterators && (kind == OMP_CLAUSE_DEPEND_SOURCE || kind == OMP_CLAUSE_DEPEND_SINK)) @@ -14019,8 +14015,7 @@ c_parser_omp_clause_depend (c_parser *parser, tree list) return c; } - if (kind != OMP_CLAUSE_DEPEND_UNSPECIFIED - && !c_parser_require (parser, CPP_COLON, "expected %<:%>")) + if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) goto resync_fail; if (kind == OMP_CLAUSE_DEPEND_SINK) @@ -16172,7 +16167,7 @@ c_parser_omp_depobj (c_parser *parser) parens.skip_until_found_close (parser); tree clause = NULL_TREE; - enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_UNSPECIFIED; + enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_SOURCE; location_t c_loc = c_parser_peek_token (parser)->location; if (c_parser_next_token_is (parser, CPP_NAME)) { @@ -16209,7 +16204,7 @@ c_parser_omp_depobj (c_parser *parser) else if (!strcmp ("mutexinoutset", p2)) kind = OMP_CLAUSE_DEPEND_MUTEXINOUTSET; } - if (kind == OMP_CLAUSE_DEPEND_UNSPECIFIED) + if (kind == OMP_CLAUSE_DEPEND_SOURCE) { clause = error_mark_node; error_at (c2_loc, "expected %, %, % or " @@ -16221,7 +16216,7 @@ c_parser_omp_depobj (c_parser *parser) clause = error_mark_node; } } - if (!clause && kind == OMP_CLAUSE_DEPEND_UNSPECIFIED) + if (!clause && kind == OMP_CLAUSE_DEPEND_SOURCE) { clause = error_mark_node; error_at (c_loc, "expected %, % or % clause"); diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index d71a7ed54248..8d229387c05e 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -13786,12 +13786,11 @@ c_finish_omp_clauses (tree clauses, enum c_omp_region_type ort) { if (handle_omp_array_sections (c, ort)) remove = true; - else if (OMP_CLAUSE_DEPEND_KIND (c) - == OMP_CLAUSE_DEPEND_UNSPECIFIED) + else if (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_DEPOBJ) { error_at (OMP_CLAUSE_LOCATION (c), - "% clause without dependence type " - "on array section"); + "% clause with % dependence " + "type on array section"); remove = true; } break; @@ -13812,13 +13811,14 @@ c_finish_omp_clauses (tree clauses, enum c_omp_region_type ort) "bit-field %qE in %qs clause", t, "depend"); remove = true; } - else if (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_UNSPECIFIED) + else if (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_DEPOBJ) { if (!c_omp_depend_t_p (TREE_TYPE (t))) { error_at (OMP_CLAUSE_LOCATION (c), "%qE does not have % type in " - "% clause without dependence type", t); + "% clause with % dependence " + "type", t); remove = true; } } @@ -13826,7 +13826,8 @@ c_finish_omp_clauses (tree clauses, enum c_omp_region_type ort) { error_at (OMP_CLAUSE_LOCATION (c), "%qE should not have % type in " - "% clause with dependence type", t); + "% clause with dependence type other than " + "%", t); remove = true; } if (!remove) diff --git a/gcc/cp/ChangeLog.gomp b/gcc/cp/ChangeLog.gomp index fedb96af6aea..08b50953d905 100644 --- a/gcc/cp/ChangeLog.gomp +++ b/gcc/cp/ChangeLog.gomp @@ -1,5 +1,16 @@ 2018-08-01 Jakub Jelinek + * parser.c (cp_parser_omp_clause_depend): Adjust parsing for + dependence type to be no longer optional and dependence modifier + separated from dependence type by comma rather than colon. Parse + depobj dependence type. + (cp_parser_omp_depobj): Use OMP_CLAUSE_DEPEND_SOURCE instead of + OMP_CLAUSE_DEPEND_UNSPECIFIED. + * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_DEPEND_DEPOBJ + instead of OMP_CLAUSE_DEPEND_UNSPECIFIED, adjust diagnostics. + * pt.c (tsubst_expr): Use OMP_CLAUSE_DEPEND_SOURCE instead of + OMP_CLAUSE_DEPEND_UNSPECIFIED. + * parser.c (cp_parser_omp_clause_reduction): Add IS_OMP argument, parse reduction modifiers. (cp_parser_oacc_all_clauses, cp_parser_omp_all_clauses): Adjust diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 8564ad85df50..1e386834a286 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -33771,13 +33771,22 @@ cp_parser_omp_iterators (cp_parser *parser) OpenMP 4.5: depend ( source ) - depend ( sink : vec ) */ + depend ( sink : vec ) + + OpenMP 5.0: + depend ( depend-modifier , depend-kind: variable-list ) + + depend-kind: + in | out | inout | mutexinoutset | depobj + + depend-modifier: + iterator ( iterators-definition ) */ static tree cp_parser_omp_clause_depend (cp_parser *parser, tree list, location_t loc) { tree nlist, c, iterators = NULL_TREE; - enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_UNSPECIFIED; + enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_LAST; matching_parens parens; if (!parens.require_open (parser)) @@ -33786,44 +33795,18 @@ cp_parser_omp_clause_depend (cp_parser *parser, tree list, location_t loc) do { if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME)) - break; + goto invalid_kind; tree id = cp_lexer_peek_token (parser->lexer)->u.value; const char *p = IDENTIFIER_POINTER (id); - if (strcmp ("iterator", p) == 0 - && iterators == NULL_TREE - && cp_lexer_nth_token_is (parser->lexer, 2, CPP_OPEN_PAREN)) - { - cp_lexer_save_tokens (parser->lexer); - cp_lexer_consume_token (parser->lexer); - cp_lexer_consume_token (parser->lexer); - bool is_iter - = (cp_parser_skip_to_closing_parenthesis (parser, false, false, - /*consume_paren=*/true) - && cp_lexer_next_token_is (parser->lexer, CPP_COLON)); - - /* Roll back the tokens we skipped. */ - cp_lexer_rollback_tokens (parser->lexer); - - if (is_iter) - { - begin_scope (sk_omp, NULL); - iterators = cp_parser_omp_iterators (parser); - cp_parser_require (parser, CPP_COLON, RT_COLON); - continue; - } - } - if (strcmp ("source", p) == 0 - && cp_lexer_nth_token_is (parser->lexer, 2, CPP_CLOSE_PAREN)) + if (strcmp ("iterator", p) == 0 && iterators == NULL_TREE) { - /* FIXME: this is ambiguous. */ - kind = OMP_CLAUSE_DEPEND_SOURCE; - break; + begin_scope (sk_omp, NULL); + iterators = cp_parser_omp_iterators (parser); + cp_parser_require (parser, CPP_COMMA, RT_COMMA); + continue; } - - if (!cp_lexer_nth_token_is (parser->lexer, 2, CPP_COLON)) - break; if (strcmp ("in", p) == 0) kind = OMP_CLAUSE_DEPEND_IN; else if (strcmp ("inout", p) == 0) @@ -33832,16 +33815,19 @@ cp_parser_omp_clause_depend (cp_parser *parser, tree list, location_t loc) kind = OMP_CLAUSE_DEPEND_MUTEXINOUTSET; else if (strcmp ("out", p) == 0) kind = OMP_CLAUSE_DEPEND_OUT; + else if (strcmp ("depobj", p) == 0) + kind = OMP_CLAUSE_DEPEND_DEPOBJ; else if (strcmp ("sink", p) == 0) kind = OMP_CLAUSE_DEPEND_SINK; + else if (strcmp ("source", p) == 0) + kind = OMP_CLAUSE_DEPEND_SOURCE; else goto invalid_kind; break; } while (1); - if (kind != OMP_CLAUSE_DEPEND_UNSPECIFIED) - cp_lexer_consume_token (parser->lexer); + cp_lexer_consume_token (parser->lexer); if (iterators && (kind == OMP_CLAUSE_DEPEND_SOURCE || kind == OMP_CLAUSE_DEPEND_SINK)) @@ -33865,8 +33851,7 @@ cp_parser_omp_clause_depend (cp_parser *parser, tree list, location_t loc) return c; } - if (kind != OMP_CLAUSE_DEPEND_UNSPECIFIED - && !cp_parser_require (parser, CPP_COLON, RT_COLON)) + if (!cp_parser_require (parser, CPP_COLON, RT_COLON)) goto resync_fail; if (kind == OMP_CLAUSE_DEPEND_SINK) @@ -35354,7 +35339,7 @@ cp_parser_omp_depobj (cp_parser *parser, cp_token *pragma_tok) /*consume_paren=*/true); tree clause = NULL_TREE; - enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_UNSPECIFIED; + enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_SOURCE; location_t c_loc = cp_lexer_peek_token (parser->lexer)->location; if (cp_lexer_next_token_is (parser->lexer, CPP_NAME)) { @@ -35394,7 +35379,7 @@ cp_parser_omp_depobj (cp_parser *parser, cp_token *pragma_tok) else if (!strcmp ("mutexinoutset", p2)) kind = OMP_CLAUSE_DEPEND_MUTEXINOUTSET; } - if (kind == OMP_CLAUSE_DEPEND_UNSPECIFIED) + if (kind == OMP_CLAUSE_DEPEND_SOURCE) { clause = error_mark_node; error_at (c2_loc, "expected %, %, % or " @@ -35410,7 +35395,7 @@ cp_parser_omp_depobj (cp_parser *parser, cp_token *pragma_tok) clause = error_mark_node; } } - if (!clause && kind == OMP_CLAUSE_DEPEND_UNSPECIFIED) + if (!clause && kind == OMP_CLAUSE_DEPEND_SOURCE) { clause = error_mark_node; error_at (c_loc, "expected %, % or % clause"); diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 79394ce16018..92d7519734dd 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -17359,7 +17359,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, r = RECUR (OMP_DEPOBJ_DEPOBJ (t)); if (OMP_DEPOBJ_CLAUSES (t) && OMP_DEPOBJ_CLAUSES (t) != error_mark_node) { - enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_UNSPECIFIED; + enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_SOURCE; if (TREE_CODE (OMP_DEPOBJ_CLAUSES (t)) == OMP_CLAUSE) { tmp = tsubst_omp_clauses (OMP_DEPOBJ_CLAUSES (t), C_ORT_OMP, @@ -17377,7 +17377,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl, } else finish_omp_depobj (EXPR_LOCATION (t), r, - OMP_CLAUSE_DEPEND_UNSPECIFIED, + OMP_CLAUSE_DEPEND_SOURCE, OMP_DEPOBJ_CLAUSES (t)); break; diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 4e784936ea35..17bfbd889c2a 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -6843,12 +6843,11 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort) { if (handle_omp_array_sections (c, ort)) remove = true; - else if (OMP_CLAUSE_DEPEND_KIND (c) - == OMP_CLAUSE_DEPEND_UNSPECIFIED) + else if (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_DEPOBJ) { error_at (OMP_CLAUSE_LOCATION (c), - "% clause without dependence type " - "on array section"); + "% clause with % dependence " + "type on array section"); remove = true; } break; @@ -6884,7 +6883,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort) "bit-field %qE in %qs clause", t, "depend"); remove = true; } - else if (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_UNSPECIFIED) + else if (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_DEPOBJ) { if (!c_omp_depend_t_p (TYPE_REF_P (TREE_TYPE (t)) ? TREE_TYPE (TREE_TYPE (t)) @@ -6892,7 +6891,8 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort) { error_at (OMP_CLAUSE_LOCATION (c), "%qE does not have % type in " - "% clause without dependence type", t); + "% clause with % dependence " + "type", t); remove = true; } } @@ -6902,7 +6902,8 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort) { error_at (OMP_CLAUSE_LOCATION (c), "%qE should not have % type in " - "% clause with dependence type", t); + "% clause with dependence type other than " + "%", t); remove = true; } if (!remove) diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 3cbd08b6733a..99ccdd33e14a 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -7547,7 +7547,7 @@ gimplify_omp_depend (tree *list_p, gimple_seq *pre_p) case OMP_CLAUSE_DEPEND_MUTEXINOUTSET: i = 1; break; - case OMP_CLAUSE_DEPEND_UNSPECIFIED: + case OMP_CLAUSE_DEPEND_DEPOBJ: i = 3; break; case OMP_CLAUSE_DEPEND_SOURCE: @@ -7761,7 +7761,7 @@ gimplify_omp_depend (tree *list_p, gimple_seq *pre_p) case OMP_CLAUSE_DEPEND_MUTEXINOUTSET: i = 1; break; - case OMP_CLAUSE_DEPEND_UNSPECIFIED: + case OMP_CLAUSE_DEPEND_DEPOBJ: i = 3; break; case OMP_CLAUSE_DEPEND_SOURCE: diff --git a/gcc/omp-low.c b/gcc/omp-low.c index ad1a2dab31bb..505ac4884981 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -7386,7 +7386,7 @@ lower_depend_clauses (tree *pclauses, gimple_seq *iseq, gimple_seq *oseq) case OMP_CLAUSE_DEPEND_MUTEXINOUTSET: cnt[1]++; break; - case OMP_CLAUSE_DEPEND_UNSPECIFIED: + case OMP_CLAUSE_DEPEND_DEPOBJ: cnt[3]++; break; case OMP_CLAUSE_DEPEND_SOURCE: @@ -7443,7 +7443,7 @@ lower_depend_clauses (tree *pclauses, gimple_seq *iseq, gimple_seq *oseq) if (i != 1) continue; break; - case OMP_CLAUSE_DEPEND_UNSPECIFIED: + case OMP_CLAUSE_DEPEND_DEPOBJ: if (i != 3) continue; break; diff --git a/gcc/testsuite/ChangeLog.gomp b/gcc/testsuite/ChangeLog.gomp index f7ac317a3f55..c3627162dfe5 100644 --- a/gcc/testsuite/ChangeLog.gomp +++ b/gcc/testsuite/ChangeLog.gomp @@ -1,5 +1,24 @@ 2018-08-01 Jakub Jelinek + * c-c++-common/gomp/depend-iterator-1.c (foo, bar, baz): Separate + dependence modifier from type with comma instead of colon. + * c-c++-common/gomp/taskwait-depend-1.c (foo): Likewise. + * c-c++-common/gomp/depobj-1.c (f1, f2, f3): Likewise. Add depobj: to + depend clauses without dependence type. Add an extra test for depobj + construct with depobj: type on depend clause and omp_depend_t type of + the lvalue. + * c-c++-common/gomp/depend-iterator-2.c (f1, f2, f3): Separate + dependence modifier from type with comma instead of colon. Adjust + diagnostics for dependence type no longer being optional. + * g++.dg/gomp/depend-iterator-1.C (foo, bar, baz): Separate + dependence modifier from type with comma instead of colon. + * g++.dg/gomp/depend-iterator-2.C (f1, f2, f3, f4): Likewise. Adjust + diagnostics for dependence type no longer being optional. + * g++.dg/gomp/depobj-1.C (f1, f2, f4, f5): Separate dependence modifier + from type with comma instead of colon. Add depobj: to depend clauses + without dependence type. Add an extra test for depobj construct with + depobj: type on depend clause and omp_depend_t type of the lvalue. + * c-c++-common/gomp/reduction-task-1.c: New test. * c-c++-common/gomp/reduction-task-2.c: New test. diff --git a/gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c b/gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c index 0e0fa00fb0c4..4fb01c174ec2 100644 --- a/gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c +++ b/gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c @@ -7,7 +7,7 @@ volatile int v; void foo (unsigned char i, signed char j) { - #pragma omp task depend (iterator (j=6:2:-2) : out : \ + #pragma omp task depend (iterator (j=6:2:-2) , out : \ arr[TEST_EQ (sizeof (j), sizeof (int)), \ TEST_EQ (sizeof (i), sizeof (unsigned char)), \ TEST_EQ (sizeof (k), sizeof (struct S)), j], \ @@ -17,7 +17,7 @@ foo (unsigned char i, signed char j) depend(out: arr[0]) \ depend (iterator (long long i=__LONG_LONG_MAX__ - 4:__LONG_LONG_MAX__ - 2:2, \ unsigned short j=~0U-16:~0U-8:3, \ - short *k=&arr4[1]:&arr4[2]:1) : in : \ + short *k=&arr4[1]:&arr4[2]:1) , in : \ arr[TEST_EQ (sizeof (i), sizeof (long long)), \ TEST_EQ (sizeof (j), sizeof (unsigned short)), \ TEST_EQ (sizeof (k), sizeof (short *)), \ @@ -35,7 +35,7 @@ bar (unsigned char i, signed char j) { int m = j; int n = j + 2; - #pragma omp task depend (iterator (j=6:2:m) : out : \ + #pragma omp task depend (iterator (j=6:2:m) , out : \ arr[TEST_EQ (sizeof (j), sizeof (int)), \ TEST_EQ (sizeof (i), sizeof (unsigned char)), \ TEST_EQ (sizeof (k), sizeof (struct S)), j], \ @@ -45,7 +45,7 @@ bar (unsigned char i, signed char j) depend(out: arr[0]) \ depend (iterator (long long i=__LONG_LONG_MAX__ - 4 - n:__LONG_LONG_MAX__ - 2:2, \ unsigned short j=~0U-16:~0U-8-n:3, \ - short *k=&arr4[1]:&arr4[n + 2]:1) : in : \ + short *k=&arr4[1]:&arr4[n + 2]:1) , in : \ arr[TEST_EQ (sizeof (i), sizeof (long long)), \ TEST_EQ (sizeof (j), sizeof (unsigned short)), \ TEST_EQ (sizeof (k), sizeof (short *)), \ @@ -64,10 +64,10 @@ baz (void) #pragma omp parallel #pragma omp master { - #pragma omp task depend(iterator(unsigned long int k = 0 : 2) : inout : \ + #pragma omp task depend(iterator(unsigned long int k = 0 : 2) , inout : \ arr[TEST_EQ (sizeof (k), sizeof (unsigned long)), \ TEST_EQ (((__typeof (k)) -1) < 0, 0), k]) \ - depend(iterator(signed char s = -3 : -12 : -1) : out : \ + depend(iterator(signed char s = -3 : -12 : -1) , out : \ arr[TEST_EQ (sizeof (s), sizeof (signed char)), \ TEST_EQ (((__typeof (s)) -1) < 0, 1), s + 12]) v++; diff --git a/gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c b/gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c index 22e3894ce995..855f7c149339 100644 --- a/gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c +++ b/gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c @@ -7,70 +7,70 @@ int *h; void f1 (void) { - #pragma omp task depend (iterator : in : a) /* { dg-error "expected|invalid depend kind" } */ + #pragma omp task depend (iterator , in : a) /* { dg-error "expected" } */ ; - #pragma omp task depend (iterator (for = 0 : 2) : in : a) /* { dg-error "expected" } */ + #pragma omp task depend (iterator (for = 0 : 2) , in : a) /* { dg-error "expected" } */ ; - #pragma omp task depend (iterator (5 = 0 : 2) : in : a) /* { dg-error "expected" } */ + #pragma omp task depend (iterator (5 = 0 : 2) , in : a) /* { dg-error "expected" } */ ; - #pragma omp task depend (iterator (i : 0 : 2) : in : a) /* { dg-error "expected '='|name a type|expected" } */ + #pragma omp task depend (iterator (i : 0 : 2) , in : a) /* { dg-error "expected '='|name a type|expected" } */ ; - #pragma omp task depend (iterator (i = 0, 1 : 2) : in : a) /* { dg-error "expected" } */ + #pragma omp task depend (iterator (i = 0, 1 : 2) , in : a) /* { dg-error "expected" } */ ; - #pragma omp task depend (iterator (i = (0, 1) : 2) : in : a) + #pragma omp task depend (iterator (i = (0, 1) : 2) , in : a) ; - #pragma omp task depend (iterator (i = 0 : 1 : 2 : 3) : in : a) /* { dg-error "expected '.'" } */ + #pragma omp task depend (iterator (i = 0 : 1 : 2 : 3) , in : a) /* { dg-error "expected '.'" } */ ; - #pragma omp task depend (iterator (i = 0 : 2, 3) : in : a) /* { dg-error "expected" } */ + #pragma omp task depend (iterator (i = 0 : 2, 3) , in : a) /* { dg-error "expected" } */ ; - #pragma omp task depend (iterator (i = 0 : 10 : 2, 3) : in : a) /* { dg-error "expected" } */ + #pragma omp task depend (iterator (i = 0 : 10 : 2, 3) , in : a) /* { dg-error "expected" } */ ; - #pragma omp task depend (iterator (i = 0:1), iterator (j = 0:1) : in : a) /* { dg-error "expected ':'|invalid depend kind|'iterator' undeclared|was not declared|expected '\\)' before ':' token" } */ + #pragma omp task depend (iterator (i = 0:1), iterator (j = 0:1) , in : a) /* { dg-error "invalid depend kind" } */ ; - #pragma omp task depend (iterator (i = 0:32) : in : b[i*2:2]) + #pragma omp task depend (iterator (i = 0:32) , in : b[i*2:2]) ; - #pragma omp task depend (iterator (struct S i = 0:1): in : a) /* { dg-error "iterator 'i' has neither integral nor pointer type" } */ + #pragma omp task depend (iterator (struct S i = 0:1), in : a) /* { dg-error "iterator 'i' has neither integral nor pointer type" } */ ; - #pragma omp task depend (iterator (void i = 0:1) : in : a) /* { dg-error "iterator 'i' has neither integral nor pointer type" } */ + #pragma omp task depend (iterator (void i = 0:1) , in : a) /* { dg-error "iterator 'i' has neither integral nor pointer type" } */ ; - #pragma omp task depend (iterator (float f = 0.2:0.4) : in : a) /* { dg-error "iterator 'f' has neither integral nor pointer type" } */ + #pragma omp task depend (iterator (float f = 0.2:0.4) , in : a) /* { dg-error "iterator 'f' has neither integral nor pointer type" } */ ; - #pragma omp task depend (iterator (struct S *p = d:e:2) : in : a) + #pragma omp task depend (iterator (struct S *p = d:e:2) , in : a) ; - #pragma omp task depend (iterator (struct T *p = f:g) : in : a) /* { dg-error "invalid use of" } */ + #pragma omp task depend (iterator (struct T *p = f:g) , in : a) /* { dg-error "invalid use of" } */ ; #pragma omp task depend (iterator (int i = 0:4, \ - struct U { int (*p)[i + 2]; } *p = 0:2) : in : a) /* { dg-error "type of iterator 'p' refers to outer iterator 'i'" "" { target c } } */ + struct U { int (*p)[i + 2]; } *p = 0:2) , in : a) /* { dg-error "type of iterator 'p' refers to outer iterator 'i'" "" { target c } } */ ; /* { dg-error "types may not be defined in iterator type|not an integer constant" "" { target c++ } .-1 } */ - #pragma omp task depend (iterator (i = 0:4, j = i:16) : in : a) /* { dg-error "begin expression refers to outer iterator 'i'" } */ + #pragma omp task depend (iterator (i = 0:4, j = i:16) , in : a) /* { dg-error "begin expression refers to outer iterator 'i'" } */ ; - #pragma omp task depend (iterator (i = 0:4, j = 2:i:1) : in : a) /* { dg-error "end expression refers to outer iterator 'i'" } */ + #pragma omp task depend (iterator (i = 0:4, j = 2:i:1) , in : a) /* { dg-error "end expression refers to outer iterator 'i'" } */ ; - #pragma omp task depend (iterator (i = 0:4, j = 2:8:i) : in : a) /* { dg-error "step expression refers to outer iterator 'i'" } */ + #pragma omp task depend (iterator (i = 0:4, j = 2:8:i) , in : a) /* { dg-error "step expression refers to outer iterator 'i'" } */ ; - #pragma omp task depend (iterator (i = *d:2) : in : a) /* { dg-error "aggregate value used where an integer was expected" "" { target c } } */ + #pragma omp task depend (iterator (i = *d:2) , in : a) /* { dg-error "aggregate value used where an integer was expected" "" { target c } } */ ; /* { dg-error "invalid cast from type 'S' to type 'int'" "" { target c++ } .-1 } */ - #pragma omp task depend (iterator (i = 2:*d:2) : in : a) /* { dg-error "aggregate value used where an integer was expected" "" { target c } } */ + #pragma omp task depend (iterator (i = 2:*d:2) , in : a) /* { dg-error "aggregate value used where an integer was expected" "" { target c } } */ ; /* { dg-error "invalid cast from type 'S' to type 'int'" "" { target c++ } .-1 } */ - #pragma omp task depend (iterator (i = 2:4:*d) : in : a) /* { dg-error "aggregate value used where an integer was expected" "" { target c } } */ + #pragma omp task depend (iterator (i = 2:4:*d) , in : a) /* { dg-error "aggregate value used where an integer was expected" "" { target c } } */ ; /* { dg-error "invalid cast from type 'S' to type 'int'" "" { target c++ } .-1 } */ /* { dg-error "iterator 'i' has zero step" "" { target c } .-2 } */ - #pragma omp task depend (iterator (i = 1.25:2.5:3.5) : in : a) + #pragma omp task depend (iterator (i = 1.25:2.5:3.5) , in : a) ; - #pragma omp task depend (iterator (int *p = 23 : h) : in : a) + #pragma omp task depend (iterator (int *p = 23 : h) , in : a) ; - #pragma omp task depend (iterator (short i=1:3:0) : in : a) /* { dg-error "iterator 'i' has zero step" } */ + #pragma omp task depend (iterator (short i=1:3:0) , in : a) /* { dg-error "iterator 'i' has zero step" } */ ; - #pragma omp task depend (iterator (i = 1 : 3 : 3 - 3) : in : a) /* { dg-error "iterator 'i' has zero step" } */ + #pragma omp task depend (iterator (i = 1 : 3 : 3 - 3) , in : a) /* { dg-error "iterator 'i' has zero step" } */ ; - #pragma omp task depend (iterator (int *p = &b[6]:&b[9]:4 - 4) : in : a) /* { dg-error "iterator 'p' has zero step" } */ + #pragma omp task depend (iterator (int *p = &b[6]:&b[9]:4 - 4) , in : a) /* { dg-error "iterator 'p' has zero step" } */ ; - #pragma omp task depend (iterator (const int i = 0 : 2) : in : a) /* { dg-error "const qualified" } */ + #pragma omp task depend (iterator (const int i = 0 : 2) , in : a) /* { dg-error "const qualified" } */ ; - #pragma omp task depend (iterator (const long long unsigned i = 0 : 2) : in : a) /* { dg-error "const qualified" } */ + #pragma omp task depend (iterator (const long long unsigned i = 0 : 2) , in : a) /* { dg-error "const qualified" } */ ; #if !defined (__cplusplus) && __STDC_VERSION__ >= 201112L - #pragma omp task depend (iterator (_Atomic unsigned i = 0 : 2) : in : a) /* { dg-error "_Atomic" "" { target c } } */ + #pragma omp task depend (iterator (_Atomic unsigned i = 0 : 2) , in : a) /* { dg-error "_Atomic" "" { target c } } */ ; #endif } @@ -83,14 +83,14 @@ f2 (void) for (i = 0; i < 64; i++) for (j = 0; j < 64; j++) { - #pragma omp ordered depend (iterator (k=0:1) : sink: i - 1, j - 1) /* { dg-error "'iterator' modifier incompatible with 'sink'" } */ - #pragma omp ordered depend (iterator (int l = 0:2:3) : source) /* { dg-error "'iterator' modifier incompatible with 'source'" } */ + #pragma omp ordered depend (iterator (k=0:1) , sink: i - 1, j - 1) /* { dg-error "'iterator' modifier incompatible with 'sink'" } */ + #pragma omp ordered depend (iterator (int l = 0:2:3) , source) /* { dg-error "'iterator' modifier incompatible with 'source'" } */ } } void f3 (void) { - #pragma omp task depend (iterator (i = 0:1): iterator (j = 0:1) : in : a) /* { dg-error "invalid depend kind|'iterator' undeclared|was not declared|expected '\\)' before ':' token" } */ + #pragma omp task depend (iterator (i = 0:1), iterator (j = 0:1) , in : a) /* { dg-error "invalid depend kind" } */ ; } diff --git a/gcc/testsuite/c-c++-common/gomp/depobj-1.c b/gcc/testsuite/c-c++-common/gomp/depobj-1.c index 770f1119c234..688371b62320 100644 --- a/gcc/testsuite/c-c++-common/gomp/depobj-1.c +++ b/gcc/testsuite/c-c++-common/gomp/depobj-1.c @@ -14,10 +14,10 @@ f1 (void) { #pragma omp depobj(depobj) depend(in : a) #pragma omp depobj(depobj) update(inout) - #pragma omp task depend (depobj) + #pragma omp task depend (depobj: depobj) ; #pragma omp depobj(depobj) destroy - #pragma omp task depend (iterator (i=1:3) : *(depobja + i)) + #pragma omp task depend (iterator (i=1:3) , depobj: *(depobja + i)) ; #pragma omp depobj(pdepobj[0]) depend(mutexinoutset:a) #pragma omp depobj(*pdepobj) destroy @@ -36,7 +36,8 @@ f2 (void) #pragma omp depobj (depobjb) depend(in: a) /* { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } */ #pragma omp depobj (pdepobj) depend(in: a) /* { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } */ #pragma omp depobj (a) destroy /* { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } */ - #pragma omp depobj (depobj) depend(a) /* { dg-error "does not have 'omp_depend_t' type in 'depend' clause without dependence type" } */ + #pragma omp depobj (depobj) depend(depobj:a) /* { dg-error "does not have 'omp_depend_t' type in 'depend' clause with 'depobj' dependence type" } */ + #pragma omp depobj (depobj) depend(depobj:*depobjb) /* { dg-error "'depobj' dependence type specified in 'depend' clause on 'depobj' construct" } */ #pragma omp depobj (depobj) update(foobar) /* { dg-error "expected 'in', 'out', 'inout' or 'mutexinoutset'" } */ #pragma omp depobj (depobj) depend(in: *depobja) /* { dg-error "should not have 'omp_depend_t' type in 'depend' clause with dependence type" } */ #pragma omp depobj (depobj) depend(in: a) depend(in: b) /* { dg-error "expected" } */ @@ -44,7 +45,7 @@ f2 (void) #pragma omp depobj (depobj) depend(in: a, b) /* { dg-error "more than one locator in 'depend' clause on 'depobj' construct" } */ #pragma omp depobj (depobj) depend(source) /* { dg-error "'depend\\(source\\)' is only allowed in 'omp ordered'" } */ #pragma omp depobj (depobj) depend(sink: i + 1, j - 1) /* { dg-error "'depend\\(sink\\)' is only allowed in 'omp ordered'" } */ - #pragma omp depobj (depobj) depend(iterator (i = 0:2) : in : a) /* { dg-error "'iterator' modifier may not be specified on 'depobj' construct" } */ + #pragma omp depobj (depobj) depend(iterator (i = 0:2) , in : a) /* { dg-error "'iterator' modifier may not be specified on 'depobj' construct" } */ if (0) #pragma omp depobj (depobj) destroy /* { dg-error "'#pragma omp depobj' may only be used in compound statements" } */ ; @@ -53,9 +54,9 @@ f2 (void) void f3 (void) { - #pragma omp task depend (depobja[1:2]) /* { dg-error "'depend' clause without dependence type on array section" } */ + #pragma omp task depend (depobj: depobja[1:2]) /* { dg-error "'depend' clause with 'depobj' dependence type on array section" } */ ; - #pragma omp task depend (a) /* { dg-error "'a' does not have 'omp_depend_t' type in 'depend' clause without dependence type" } */ + #pragma omp task depend (depobj: a) /* { dg-error "'a' does not have 'omp_depend_t' type in 'depend' clause with 'depobj' dependence type" } */ ; #pragma omp task depend (in: depobj) /* { dg-error "'depobj' should not have 'omp_depend_t' type in 'depend' clause with dependence type" } */ ; diff --git a/gcc/testsuite/c-c++-common/gomp/taskwait-depend-1.c b/gcc/testsuite/c-c++-common/gomp/taskwait-depend-1.c index 1e55c7a127f1..1fcce7493ef1 100644 --- a/gcc/testsuite/c-c++-common/gomp/taskwait-depend-1.c +++ b/gcc/testsuite/c-c++-common/gomp/taskwait-depend-1.c @@ -1,7 +1,7 @@ void foo (int *p) { - #pragma omp taskwait depend(iterator(i = 0:16) : in : p[i]) depend(out : p[32]) + #pragma omp taskwait depend(iterator(i = 0:16) , in : p[i]) depend(out : p[32]) } void diff --git a/gcc/testsuite/g++.dg/gomp/depend-iterator-1.C b/gcc/testsuite/g++.dg/gomp/depend-iterator-1.C index c2c5648a75e9..6f4aa97ee446 100644 --- a/gcc/testsuite/g++.dg/gomp/depend-iterator-1.C +++ b/gcc/testsuite/g++.dg/gomp/depend-iterator-1.C @@ -8,7 +8,7 @@ template void foo (unsigned char i, signed char j) { - #pragma omp task depend (iterator (T j=6:N:-2) : out : \ + #pragma omp task depend (iterator (T j=6:N:-2) , out : \ arr[TEST_EQ (sizeof (j), sizeof (int)), \ TEST_EQ (sizeof (i), sizeof (unsigned char)), \ TEST_EQ (sizeof (k), sizeof (struct S)), j], \ @@ -18,7 +18,7 @@ foo (unsigned char i, signed char j) depend(out: arr[0]) \ depend (iterator (U i=__LONG_LONG_MAX__ - 4:__LONG_LONG_MAX__ - N:N, \ V j=~0U-16:~0U-8:3, \ - W *k=&arr4[1]:&arr4[2]:1) : in : \ + W *k=&arr4[1]:&arr4[2]:1) , in : \ arr[TEST_EQ (sizeof (i), sizeof (long long)), \ TEST_EQ (sizeof (j), sizeof (unsigned short)), \ TEST_EQ (sizeof (k), sizeof (short *)), \ @@ -37,7 +37,7 @@ bar (unsigned char i, signed char j) { int m = j; int n = j + 2; - #pragma omp task depend (iterator (j=N:2:m) : out : \ + #pragma omp task depend (iterator (j=N:2:m) , out : \ arr[TEST_EQ (sizeof (j), sizeof (int)), \ TEST_EQ (sizeof (i), sizeof (unsigned char)), \ TEST_EQ (sizeof (k), sizeof (struct S)), j], \ @@ -47,7 +47,7 @@ bar (unsigned char i, signed char j) depend(out: arr[0]) \ depend (iterator (U i=__LONG_LONG_MAX__ - 4 - n:__LONG_LONG_MAX__ - 2:2, \ unsigned short j=~0U-16:~0U-8-n:3, \ - W k=&arr4[N-5]:&arr4[n + 2]:1) : in : \ + W k=&arr4[N-5]:&arr4[n + 2]:1) , in : \ arr[TEST_EQ (sizeof (i), sizeof (long long)), \ TEST_EQ (sizeof (j), sizeof (unsigned short)), \ TEST_EQ (sizeof (k), sizeof (short *)), \ @@ -67,10 +67,10 @@ baz (void) #pragma omp parallel #pragma omp master { - #pragma omp task depend(iterator(T k = N : 2) : inout : \ + #pragma omp task depend(iterator(T k = N : 2) , inout : \ arr[TEST_EQ (sizeof (k), sizeof (unsigned long)), \ TEST_EQ (((__typeof (k)) -1) < N, 0), k]) \ - depend(iterator(U s = -3 : -12 : -1 + N) : out : \ + depend(iterator(U s = -3 : -12 : -1 + N) , out : \ arr[TEST_EQ (sizeof (s), sizeof (signed char)), \ TEST_EQ (((__typeof (s)) -1) < 0, 1), s + 12]) v++; diff --git a/gcc/testsuite/g++.dg/gomp/depend-iterator-2.C b/gcc/testsuite/g++.dg/gomp/depend-iterator-2.C index 5189095c916a..deab5db296f9 100644 --- a/gcc/testsuite/g++.dg/gomp/depend-iterator-2.C +++ b/gcc/testsuite/g++.dg/gomp/depend-iterator-2.C @@ -8,48 +8,48 @@ template void f1 () { - #pragma omp task depend (iterator : in : a) // { dg-error "expected|invalid depend kind" } + #pragma omp task depend (iterator , in : a) // { dg-error "expected" } ; - #pragma omp task depend (iterator (for = 0 : 2) : in : a) // { dg-error "expected" } + #pragma omp task depend (iterator (for = 0 : 2) , in : a) // { dg-error "expected" } ; - #pragma omp task depend (iterator (5 = 0 : 2) : in : a) // { dg-error "expected" } + #pragma omp task depend (iterator (5 = 0 : 2) , in : a) // { dg-error "expected" } ; - #pragma omp task depend (iterator (i : N : 2) : in : a) // { dg-error "expected '='|name a type|expected" } + #pragma omp task depend (iterator (i : N : 2) , in : a) // { dg-error "expected '='|name a type|expected" } ; - #pragma omp task depend (iterator (i = 0, 1 : 2) : in : a) // { dg-error "expected" } + #pragma omp task depend (iterator (i = 0, 1 : 2) , in : a) // { dg-error "expected" } ; - #pragma omp task depend (iterator (i = (0, 1) : 2) : in : a) + #pragma omp task depend (iterator (i = (0, 1) : 2) , in : a) ; - #pragma omp task depend (iterator (i = 0 : 1 : 2 : 3) : in : a) // { dg-error "expected '.'" } + #pragma omp task depend (iterator (i = 0 : 1 : 2 : 3) , in : a) // { dg-error "expected '.'" } ; - #pragma omp task depend (iterator (i = 0 : 2, 3) : in : a) // { dg-error "expected" } + #pragma omp task depend (iterator (i = 0 : 2, 3) , in : a) // { dg-error "expected" } ; - #pragma omp task depend (iterator (i = N : 10 : 2, 3) : in : a) // { dg-error "expected" } + #pragma omp task depend (iterator (i = N : 10 : 2, 3) , in : a) // { dg-error "expected" } ; - #pragma omp task depend (iterator (i = 0:1), iterator (j = 0:1) : in : a) // { dg-error "expected ':'|invalid depend kind|was not declared|expected '\\)' before ':' token" } + #pragma omp task depend (iterator (i = 0:1), iterator (j = 0:1) , in : a) // { dg-error "invalid depend kind" } ; - #pragma omp task depend (iterator (i = N:32) : in : b[i*2:2]) + #pragma omp task depend (iterator (i = N:32) , in : b[i*2:2]) ; - #pragma omp task depend (iterator (void i = 0:1) : in : a) // { dg-error "iterator 'i' has neither integral nor pointer type" } + #pragma omp task depend (iterator (void i = 0:1) , in : a) // { dg-error "iterator 'i' has neither integral nor pointer type" } ; - #pragma omp task depend (iterator (U *p = d:e:2) : in : a) + #pragma omp task depend (iterator (U *p = d:e:2) , in : a) ; #pragma omp task depend (iterator (W i = N:4, \ - struct U2 { W *p; } *p = 0:2) : in : a) // { dg-error "types may not be defined in iterator type" } + struct U2 { W *p; } *p = 0:2) , in : a) // { dg-error "types may not be defined in iterator type" } ; - #pragma omp task depend (iterator (i = 0:4, j = i:16) : in : a) // { dg-error "begin expression refers to outer iterator 'i'" } + #pragma omp task depend (iterator (i = 0:4, j = i:16) , in : a) // { dg-error "begin expression refers to outer iterator 'i'" } ; - #pragma omp task depend (iterator (i = N:4, j = 2:i:1) : in : a) // { dg-error "end expression refers to outer iterator 'i'" } + #pragma omp task depend (iterator (i = N:4, j = 2:i:1) , in : a) // { dg-error "end expression refers to outer iterator 'i'" } ; - #pragma omp task depend (iterator (i = 0:4, j = 2:8:i) : in : a) // { dg-error "step expression refers to outer iterator 'i'" } + #pragma omp task depend (iterator (i = 0:4, j = 2:8:i) , in : a) // { dg-error "step expression refers to outer iterator 'i'" } ; - #pragma omp task depend (iterator (i = 1.25:2.5:3.5) : in : a) + #pragma omp task depend (iterator (i = 1.25:2.5:3.5) , in : a) ; - #pragma omp task depend (iterator (W *p = 23 : h) : in : a) + #pragma omp task depend (iterator (W *p = 23 : h) , in : a) ; - #pragma omp task depend (iterator (const int i = N : 2) : in : a) // { dg-error "const qualified" } + #pragma omp task depend (iterator (const int i = N : 2) , in : a) // { dg-error "const qualified" } ; - #pragma omp task depend (iterator (const long long unsigned i = 0 : 2) : in : a) // { dg-error "const qualified" } + #pragma omp task depend (iterator (const long long unsigned i = 0 : 2) , in : a) // { dg-error "const qualified" } ; } @@ -62,8 +62,8 @@ f2 () for (i = 0; i < 64; i++) for (j = 0; j < 64; j++) { - #pragma omp ordered depend (iterator (k=0:N) : sink: i - 1, j - 1) // { dg-error "'iterator' modifier incompatible with 'sink'" } - #pragma omp ordered depend (iterator (W l = 0:2:3) : source) // { dg-error "'iterator' modifier incompatible with 'source'" } + #pragma omp ordered depend (iterator (k=0:N) , sink: i - 1, j - 1) // { dg-error "'iterator' modifier incompatible with 'sink'" } + #pragma omp ordered depend (iterator (W l = 0:2:3) , source) // { dg-error "'iterator' modifier incompatible with 'source'" } } } @@ -71,31 +71,31 @@ template void f3 () { - #pragma omp task depend (iterator (U i = 0:1): in : a) // { dg-error "iterator 'i' has neither integral nor pointer type" } + #pragma omp task depend (iterator (U i = 0:1), in : a) // { dg-error "iterator 'i' has neither integral nor pointer type" } ; - #pragma omp task depend (iterator (V f = 0.2:0.4) : in : a) // { dg-error "iterator 'f' has neither integral nor pointer type" } + #pragma omp task depend (iterator (V f = 0.2:0.4) , in : a) // { dg-error "iterator 'f' has neither integral nor pointer type" } ; - #pragma omp task depend (iterator (struct T *p = f:g) : in : a) // { dg-error "invalid use of" } + #pragma omp task depend (iterator (struct T *p = f:g) , in : a) // { dg-error "invalid use of" } ; - #pragma omp task depend (iterator (i = *d:2) : in : a) // { dg-error "invalid cast from type 'S' to type 'int'" } + #pragma omp task depend (iterator (i = *d:2) , in : a) // { dg-error "invalid cast from type 'S' to type 'int'" } ; - #pragma omp task depend (iterator (i = 2:*d:2) : in : a) // { dg-error "invalid cast from type 'S' to type 'int'" } + #pragma omp task depend (iterator (i = 2:*d:2) , in : a) // { dg-error "invalid cast from type 'S' to type 'int'" } ; - #pragma omp task depend (iterator (i = 2:4:*d) : in : a) // { dg-error "invalid cast from type 'S' to type 'int'" } + #pragma omp task depend (iterator (i = 2:4:*d) , in : a) // { dg-error "invalid cast from type 'S' to type 'int'" } ; - #pragma omp task depend (iterator (i = 1.25:2.5:3.5) : in : a) + #pragma omp task depend (iterator (i = 1.25:2.5:3.5) , in : a) ; - #pragma omp task depend (iterator (W *p = 23 : h) : in : a) + #pragma omp task depend (iterator (W *p = 23 : h) , in : a) ; - #pragma omp task depend (iterator (short i=1:3:N) : in : a) // { dg-error "iterator 'i' has zero step" } + #pragma omp task depend (iterator (short i=1:3:N) , in : a) // { dg-error "iterator 'i' has zero step" } ; - #pragma omp task depend (iterator (i = 1 : 3 : N + 3 - 3) : in : a) // { dg-error "iterator 'i' has zero step" } + #pragma omp task depend (iterator (i = 1 : 3 : N + 3 - 3) , in : a) // { dg-error "iterator 'i' has zero step" } ; - #pragma omp task depend (iterator (int *p = &b[6]:&b[9]:4 - 4) : in : a) // { dg-error "iterator 'p' has zero step" } + #pragma omp task depend (iterator (int *p = &b[6]:&b[9]:4 - 4) , in : a) // { dg-error "iterator 'p' has zero step" } ; - #pragma omp task depend (iterator (X i = N : 2) : in : a) // { dg-error "const qualified" } + #pragma omp task depend (iterator (X i = N : 2) , in : a) // { dg-error "const qualified" } ; - #pragma omp task depend (iterator (Y i = 0 : 2) : in : a) // { dg-error "const qualified" } + #pragma omp task depend (iterator (Y i = 0 : 2) , in : a) // { dg-error "const qualified" } ; } @@ -103,7 +103,7 @@ template void f4 () { - #pragma omp task depend (iterator (i = 0:1): iterator (j = 0:1) : in : a) // { dg-error "invalid depend kind|was not declared|expected '\\)' before ':' token" } + #pragma omp task depend (iterator (i = 0:1), iterator (j = 0:1) , in : a) // { dg-error "invalid depend kind" } ; } diff --git a/gcc/testsuite/g++.dg/gomp/depobj-1.C b/gcc/testsuite/g++.dg/gomp/depobj-1.C index 2b26daaa1c6e..6004f1e6e6d6 100644 --- a/gcc/testsuite/g++.dg/gomp/depobj-1.C +++ b/gcc/testsuite/g++.dg/gomp/depobj-1.C @@ -15,10 +15,10 @@ f1 (bool x) { #pragma omp depobj(x ? depobj : depobj4) depend(in : x ? a : b) #pragma omp depobj(x ? depobj : depobj4) update(inout) - #pragma omp task depend (depobj) + #pragma omp task depend (depobj:depobj) ; #pragma omp depobj(depobj) destroy - #pragma omp task depend (iterator (i=1:3) : *(depobja + i)) + #pragma omp task depend (iterator (i=1:3) , depobj: *(depobja + i)) ; #pragma omp depobj(pdepobj[0]) depend(mutexinoutset:a) #pragma omp depobj(*pdepobj) destroy @@ -32,24 +32,24 @@ f2 (T &depobj2, T2 depobj3, T *pdepobj) T depobja[4]; #pragma omp depobj(depobj1) depend(in : --a) #pragma omp depobj(depobj1) update(inout) - #pragma omp task depend (depobj1) + #pragma omp task depend (depobj: depobj1) ; #pragma omp depobj(depobj1) destroy #pragma omp depobj(depobj2) depend(in : a) #pragma omp depobj(depobj2) update(inout) - #pragma omp task depend (depobj2) + #pragma omp task depend (depobj :depobj2) ; #pragma omp depobj(depobj2) destroy #pragma omp depobj(depobj3) depend(in : a) #pragma omp depobj(depobj3) update(inout) - #pragma omp task depend (depobj3) + #pragma omp task depend (depobj : depobj3) ; #pragma omp depobj(depobj3) destroy for (int q = 1; q < 3; q++) { #pragma omp depobj(depobja[q]) depend (in:a) } - #pragma omp task depend (iterator (i=1:3) : *(depobja + i)) + #pragma omp task depend (iterator (i=1:3) , depobj : *(depobja + i)) ; for (int q = 1; q < 3; q++) { @@ -81,7 +81,8 @@ f4 (void) #pragma omp depobj (depobjb) depend(in: a) // { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } #pragma omp depobj (pdepobj) depend(in: a) // { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } #pragma omp depobj (a) destroy // { dg-error "type of 'depobj' expression is not 'omp_depend_t'" } - #pragma omp depobj (depobj) depend(a) // { dg-error "does not have 'omp_depend_t' type in 'depend' clause without dependence type" } + #pragma omp depobj (depobj) depend(depobj:a) // { dg-error "does not have 'omp_depend_t' type in 'depend' clause with 'depobj' dependence type" } + #pragma omp depobj (depobj) depend(depobj:*depobjb) // { dg-error "'depobj' dependence type specified in 'depend' clause on 'depobj' construct" } #pragma omp depobj (depobj) update(foobar) // { dg-error "expected 'in', 'out', 'inout' or 'mutexinoutset'" } #pragma omp depobj (depobj) depend(in: *depobja) // { dg-error "should not have 'omp_depend_t' type in 'depend' clause with dependence type" } #pragma omp depobj (depobj) depend(in: a) depend(in: b) // { dg-error "expected" } @@ -89,7 +90,7 @@ f4 (void) #pragma omp depobj (depobj) depend(in: a, b) // { dg-error "more than one locator in 'depend' clause on 'depobj' construct" } #pragma omp depobj (depobj) depend(source) // { dg-error "'depend\\(source\\)' is only allowed in 'omp ordered'" } #pragma omp depobj (depobj) depend(sink: i + 1, j - 1) // { dg-error "'depend\\(sink\\)' is only allowed in 'omp ordered'" } - #pragma omp depobj (depobj) depend(iterator (i = 0:2) : in : a) // { dg-error "'iterator' modifier may not be specified on 'depobj' construct" } + #pragma omp depobj (depobj) depend(iterator (i = 0:2) , in : a) // { dg-error "'iterator' modifier may not be specified on 'depobj' construct" } if (0) #pragma omp depobj (depobj) destroy // { dg-error "'#pragma omp depobj' may only be used in compound statements" } ; @@ -99,9 +100,9 @@ template void f5 (void) { - #pragma omp task depend (depobja[1:2]) // { dg-error "'depend' clause without dependence type on array section" } + #pragma omp task depend (depobj:depobja[1:2]) // { dg-error "'depend' clause with 'depobj' dependence type on array section" } ; - #pragma omp task depend (a) // { dg-error "'a' does not have 'omp_depend_t' type in 'depend' clause without dependence type" } + #pragma omp task depend (depobj : a) // { dg-error "'a' does not have 'omp_depend_t' type in 'depend' clause with 'depobj' dependence type" } ; #pragma omp task depend (in: depobj) // { dg-error "'depobj' should not have 'omp_depend_t' type in 'depend' clause with dependence type" } ; diff --git a/gcc/tree-core.h b/gcc/tree-core.h index 6caae520871f..ee68f042ef7c 100644 --- a/gcc/tree-core.h +++ b/gcc/tree-core.h @@ -1408,13 +1408,13 @@ struct GTY(()) tree_constructor { enum omp_clause_depend_kind { - OMP_CLAUSE_DEPEND_UNSPECIFIED, OMP_CLAUSE_DEPEND_IN, OMP_CLAUSE_DEPEND_OUT, OMP_CLAUSE_DEPEND_INOUT, OMP_CLAUSE_DEPEND_MUTEXINOUTSET, OMP_CLAUSE_DEPEND_SOURCE, OMP_CLAUSE_DEPEND_SINK, + OMP_CLAUSE_DEPEND_DEPOBJ, OMP_CLAUSE_DEPEND_LAST }; diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index e29d265b54de..1c81132a8864 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -681,8 +681,8 @@ dump_omp_clause (pretty_printer *pp, tree clause, int spc, dump_flags_t flags) pp_string (pp, "depend("); switch (OMP_CLAUSE_DEPEND_KIND (clause)) { - case OMP_CLAUSE_DEPEND_UNSPECIFIED: - name = NULL; + case OMP_CLAUSE_DEPEND_DEPOBJ: + name = "depobj"; break; case OMP_CLAUSE_DEPEND_IN: name = "in"; @@ -737,11 +737,8 @@ dump_omp_clause (pretty_printer *pp, tree clause, int spc, dump_flags_t flags) pp_colon (pp); t = TREE_VALUE (t); } - if (name) - { - pp_string (pp, name); - pp_colon (pp); - } + pp_string (pp, name); + pp_colon (pp); dump_generic_node (pp, t, spc, flags, false); pp_right_paren (pp); } diff --git a/libgomp/ChangeLog.gomp b/libgomp/ChangeLog.gomp index 4c04a388e052..af0895dd7450 100644 --- a/libgomp/ChangeLog.gomp +++ b/libgomp/ChangeLog.gomp @@ -1,3 +1,15 @@ +2018-08-01 Jakub Jelinek + + * testsuite/libgomp.c-c++-common/depend-iterator-1.c (main): Separate + dependence modifier from type with comma instead of colon. + * testsuite/libgomp.c-c++-common/depend-iterator-2.c (foo): Likewise. + * testsuite/libgomp.c-c++-common/depobj-1.c (dep, dep2, dep3, + antidep): Add depobj: to depend clauses without dependence type. + * testsuite/libgomp.c++/depend-iterator-1.C (bar, baz): Separate + dependence modifier from type with comma instead of colon. + * testsuite/libgomp.c++/depobj-1.C (dep, dep2, dep3, antidep): Add + depobj: to depend clauses without dependence type. + 2018-07-27 Jakub Jelinek * libgomp.map (OMP_5.0): Export omp_pause_resource{,_all}{,_}. diff --git a/libgomp/testsuite/libgomp.c++/depend-iterator-1.C b/libgomp/testsuite/libgomp.c++/depend-iterator-1.C index 3b99eee68757..c0cc55584dad 100644 --- a/libgomp/testsuite/libgomp.c++/depend-iterator-1.C +++ b/libgomp/testsuite/libgomp.c++/depend-iterator-1.C @@ -51,16 +51,16 @@ bar () { int i; for (i = 0; i < 64; i++) - #pragma omp task depend (iterator (j=i:i+1) : out : foo (1, j, 0)[0]) + #pragma omp task depend (iterator (j=i:i+1) , out : foo (1, j, 0)[0]) arr[i] = i; - #pragma omp task depend (iterator (int k=beg:end:step,long int l=0:4:1) : inout : \ + #pragma omp task depend (iterator (int k=beg:end:step,long int l=0:4:1) , inout : \ foo (2, k, l)[0], foo (3, l, k)[0]) private (i) for (i = 0; i < 64; i++) if (arr[i] != i) abort (); else arr[i] = arr[i] + 1; - #pragma omp task depend (iterator (int *p=&arr3[64]:&arr3[0]:-1) : in : \ + #pragma omp task depend (iterator (int *p=&arr3[64]:&arr3[0]:-1), in : \ foo (4, 0, p - &arr3[0])[0]) depend (in : beg) for (i = 0; i < 64; i++) if (arr[i] != i + 1) @@ -79,16 +79,16 @@ baz (A beg, A end, A step) { int i; for (i = 0; i < 64; i++) - #pragma omp task depend (iterator (A j=i:i+1) : out : foo (1, j, 0)[0]) + #pragma omp task depend (iterator (A j=i:i+1),out : foo (1, j, 0)[0]) arr[i] = i; - #pragma omp task depend (iterator (A k=beg:end:step,B l=0:4:1) : inout : \ + #pragma omp task depend (iterator (A k=beg:end:step,B l=0:4:1), inout : \ foo (2, k, l)[0], foo (3, l, k)[0]) private (i) for (i = 0; i < 64; i++) if (arr[i] != i) abort (); else arr[i] = arr[i] + 1; - #pragma omp task depend (iterator (C p=&arr3[64]:&arr3[0]:-1) : in : \ + #pragma omp task depend (iterator (C p=&arr3[64]:&arr3[0]:-1), in : \ foo (4, 0, p - &arr3[0])[0]) depend (in : beg) for (i = 0; i < 64; i++) if (arr[i] != i + 1) diff --git a/libgomp/testsuite/libgomp.c++/depobj-1.C b/libgomp/testsuite/libgomp.c++/depobj-1.C index 59950d379e46..91edf8cc34b1 100644 --- a/libgomp/testsuite/libgomp.c++/depobj-1.C +++ b/libgomp/testsuite/libgomp.c++/depobj-1.C @@ -12,9 +12,9 @@ dep (omp_depend_t &d1, omp_depend_t *d2) #pragma omp parallel #pragma omp single { - #pragma omp task shared (x) depend(*d2) + #pragma omp task shared (x) depend(depobj:*d2) x = 2; - #pragma omp task shared (x) depend(d1) + #pragma omp task shared (x) depend(depobj : d1) if (x != 2) abort (); } @@ -34,9 +34,9 @@ dep2 (T &d2) #pragma omp depobj (d1) depend(out: x) #pragma omp depobj (*&d2) depend (in:x) #pragma omp depobj(d2)update(in) - #pragma omp task shared (x) depend(d1) + #pragma omp task shared (x) depend(depobj :d1) x = 2; - #pragma omp task shared (x) depend(d2) + #pragma omp task shared (x) depend(depobj: d2) if (x != 2) abort (); #pragma omp taskwait @@ -57,9 +57,9 @@ dep3 (void) { #pragma omp depobj(d[0]) depend(out:x) #pragma omp depobj(d[1]) depend(in: x) - #pragma omp task shared (x) depend(*d) + #pragma omp task shared (x) depend(depobj:*d) x = 2; - #pragma omp task shared (x) depend(*(d + 1)) + #pragma omp task shared (x) depend(depobj:*(d + 1)) if (x != 2) abort (); } @@ -79,10 +79,10 @@ antidep (void) #pragma omp parallel #pragma omp single { - #pragma omp task shared(xx) depend(dd2) + #pragma omp task shared(xx) depend(depobj:dd2) if (xx != 1) abort (); - #pragma omp task shared(xx) depend(dd1) + #pragma omp task shared(xx) depend(depobj:dd1) xx = 2; } } diff --git a/libgomp/testsuite/libgomp.c-c++-common/depend-iterator-1.c b/libgomp/testsuite/libgomp.c-c++-common/depend-iterator-1.c index 72ef4d2c81a1..2400470189fb 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/depend-iterator-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/depend-iterator-1.c @@ -57,16 +57,16 @@ main () { int i; for (i = 0; i < 64; i++) - #pragma omp task depend (iterator (j=i:i+1) : out : foo (1, j, 0)[0]) + #pragma omp task depend (iterator (j=i:i+1) , out : foo (1, j, 0)[0]) arr[i] = i; - #pragma omp task depend (iterator (int k=beg:end:step,long int l=0:4:1) : inout : \ + #pragma omp task depend (iterator (int k=beg:end:step,long int l=0:4:1) , inout : \ foo (2, k, l)[0], foo (3, l, k)[0]) private (i) for (i = 0; i < 64; i++) if (arr[i] != i) abort (); else arr[i] = arr[i] + 1; - #pragma omp task depend (iterator (int *p=&arr3[64]:&arr3[0]:-1) : in : \ + #pragma omp task depend (iterator (int *p=&arr3[64]:&arr3[0]:-1) , in : \ foo (4, 0, p - &arr3[0])[0]) depend (in : beg) for (i = 0; i < 64; i++) if (arr[i] != i + 1) diff --git a/libgomp/testsuite/libgomp.c-c++-common/depend-iterator-2.c b/libgomp/testsuite/libgomp.c-c++-common/depend-iterator-2.c index fb4e5d8a3001..d9cbfdcbe794 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/depend-iterator-2.c +++ b/libgomp/testsuite/libgomp.c-c++-common/depend-iterator-2.c @@ -19,37 +19,37 @@ foo (int *p, int i) v++; #pragma omp task depend (mutexinoutset: p[0]) depend (out: p[1]) v++; - #pragma omp task depend (iterator (j=0:2) : out : p[j]) + #pragma omp task depend (iterator (j=0:2) , out : p[j]) v++; - #pragma omp task depend (iterator (j=0:2) : in : p[j]) + #pragma omp task depend (iterator (j=0:2) , in : p[j]) v++; - #pragma omp task depend (iterator (j=0:2) : inout : p[j]) + #pragma omp task depend (iterator (j=0:2) , inout : p[j]) v++; - #pragma omp task depend (iterator (j=0:2) : mutexinoutset : p[j]) + #pragma omp task depend (iterator (j=0:2) , mutexinoutset : p[j]) v++; - #pragma omp task depend (iterator (j=0:2) : out : p[j]) depend (iterator (j=0:2) : in : p[j + 2]) + #pragma omp task depend (iterator (j=0:2) , out : p[j]) depend (iterator (j=0:2) , in : p[j + 2]) v++; - #pragma omp task depend (iterator (j=0:2) : in : p[j]) depend (iterator (j=0:2) : inout : p[j + 2]) + #pragma omp task depend (iterator (j=0:2) , in : p[j]) depend (iterator (j=0:2) , inout : p[j + 2]) v++; - #pragma omp task depend (iterator (j=0:2) : inout : p[j]) depend (iterator (j=0:2) : mutexinoutset : p[j + 2]) + #pragma omp task depend (iterator (j=0:2) , inout : p[j]) depend (iterator (j=0:2) , mutexinoutset : p[j + 2]) v++; - #pragma omp task depend (iterator (j=0:2) : mutexinoutset : p[j]) depend (iterator (j=0:2) : out : p[j + 2]) + #pragma omp task depend (iterator (j=0:2) , mutexinoutset : p[j]) depend (iterator (j=0:2) , out : p[j + 2]) v++; - #pragma omp task depend (iterator (j=0:i) : out : p[j]) + #pragma omp task depend (iterator (j=0:i) , out : p[j]) v++; - #pragma omp task depend (iterator (j=0:i) : in : p[j]) + #pragma omp task depend (iterator (j=0:i) , in : p[j]) v++; - #pragma omp task depend (iterator (j=0:i) : inout : p[j]) + #pragma omp task depend (iterator (j=0:i) , inout : p[j]) v++; - #pragma omp task depend (iterator (j=0:i) : mutexinoutset : p[j]) + #pragma omp task depend (iterator (j=0:i) , mutexinoutset : p[j]) v++; - #pragma omp task depend (iterator (j=0:i) : out : p[j]) depend (iterator (j=0:i) : in : p[j + 2]) + #pragma omp task depend (iterator (j=0:i) , out : p[j]) depend (iterator (j=0:i) , in : p[j + 2]) v++; - #pragma omp task depend (iterator (j=0:i) : in : p[j]) depend (iterator (j=0:i) : inout : p[j + 2]) + #pragma omp task depend (iterator (j=0:i) , in : p[j]) depend (iterator (j=0:i) , inout : p[j + 2]) v++; - #pragma omp task depend (iterator (j=0:i) : inout : p[j]) depend (iterator (j=0:i) : mutexinoutset : p[j + 2]) + #pragma omp task depend (iterator (j=0:i) , inout : p[j]) depend (iterator (j=0:i) , mutexinoutset : p[j + 2]) v++; - #pragma omp task depend (iterator (j=0:i) : mutexinoutset : p[j]) depend (iterator (j=0:i) : out : p[j + 2]) + #pragma omp task depend (iterator (j=0:i) , mutexinoutset : p[j]) depend (iterator (j=0:i) , out : p[j + 2]) v++; } diff --git a/libgomp/testsuite/libgomp.c-c++-common/depobj-1.c b/libgomp/testsuite/libgomp.c-c++-common/depobj-1.c index 484a612acdcc..a07a0c889c11 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/depobj-1.c +++ b/libgomp/testsuite/libgomp.c-c++-common/depobj-1.c @@ -12,9 +12,9 @@ dep (void) #pragma omp parallel #pragma omp single { - #pragma omp task shared (x) depend(d2) + #pragma omp task shared (x) depend(depobj: d2) x = 2; - #pragma omp task shared (x) depend(d1) + #pragma omp task shared (x) depend(depobj: d1) if (x != 2) abort (); } @@ -33,9 +33,9 @@ dep2 (void) #pragma omp depobj (d1) depend(out: x) #pragma omp depobj (*&d2) depend (in:x) #pragma omp depobj(d2)update(in) - #pragma omp task shared (x) depend(d1) + #pragma omp task shared (x) depend(depobj:d1) x = 2; - #pragma omp task shared (x) depend(d2) + #pragma omp task shared (x) depend(depobj : d2) if (x != 2) abort (); #pragma omp taskwait @@ -55,9 +55,9 @@ dep3 (void) { #pragma omp depobj(d[0]) depend(out:x) #pragma omp depobj(d[1]) depend(in: x) - #pragma omp task shared (x) depend(*d) + #pragma omp task shared (x) depend(depobj: *d) x = 2; - #pragma omp task shared (x) depend(*(d + 1)) + #pragma omp task shared (x) depend(depobj: *(d + 1)) if (x != 2) abort (); } @@ -76,10 +76,10 @@ antidep (void) #pragma omp parallel #pragma omp single { - #pragma omp task shared(xx) depend(dd2) + #pragma omp task shared(xx) depend(depobj:dd2) if (xx != 1) abort (); - #pragma omp task shared(xx) depend(dd1) + #pragma omp task shared(xx) depend(depobj:dd1) xx = 2; } }