]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-core.h (enum omp_clause_depend_kind): Remove OMP_CLAUSE_DEPEND_UNSPECIFIED,...
authorJakub Jelinek <jakub@redhat.com>
Wed, 1 Aug 2018 17:45:51 +0000 (19:45 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 1 Aug 2018 17:45:51 +0000 (19:45 +0200)
* 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

28 files changed:
gcc/ChangeLog.gomp
gcc/c-family/ChangeLog.gomp
gcc/c-family/c-omp.c
gcc/c/ChangeLog.gomp
gcc/c/c-parser.c
gcc/c/c-typeck.c
gcc/cp/ChangeLog.gomp
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/semantics.c
gcc/gimplify.c
gcc/omp-low.c
gcc/testsuite/ChangeLog.gomp
gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c
gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c
gcc/testsuite/c-c++-common/gomp/depobj-1.c
gcc/testsuite/c-c++-common/gomp/taskwait-depend-1.c
gcc/testsuite/g++.dg/gomp/depend-iterator-1.C
gcc/testsuite/g++.dg/gomp/depend-iterator-2.C
gcc/testsuite/g++.dg/gomp/depobj-1.C
gcc/tree-core.h
gcc/tree-pretty-print.c
libgomp/ChangeLog.gomp
libgomp/testsuite/libgomp.c++/depend-iterator-1.C
libgomp/testsuite/libgomp.c++/depobj-1.C
libgomp/testsuite/libgomp.c-c++-common/depend-iterator-1.c
libgomp/testsuite/libgomp.c-c++-common/depend-iterator-2.c
libgomp/testsuite/libgomp.c-c++-common/depobj-1.c

index 95b1ce5969f64fceb720b52bdd982f975ed6288d..0e77a825f849fa77bc27e36a55b468579d18299f 100644 (file)
@@ -1,5 +1,13 @@
 2018-08-01  Jakub Jelinek  <jakub@redhat.com>
 
+       * 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.
index 1aa692a389067d5b17a7b07b383f79059aa25e40..edce73eaef9e06f69459c4c4173623ca4c9de701 100644 (file)
@@ -1,5 +1,10 @@
 2018-08-01  Jakub Jelinek  <jakub@redhat.com>
 
+       * 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  <jakub@redhat.com>
index dc1fde3a1f88703a6cee53308b00b8af50a5d5fb..82ef5924ef513eb212de5b560410e45a578acc6a 100644 (file)
@@ -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 %<depend%> clause "
-                   "on %<depobj%> construct");
+                   "%<depobj%> dependence type specified in %<depend%> "
+                   "clause on %<depobj%> 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;
index fe5ea9616b2cdd6363fbcea6a320865fcb23e404..1a999bb2d90210391773559c0e29a09039cc6168 100644 (file)
@@ -1,5 +1,14 @@
 2018-08-01  Jakub Jelinek  <jakub@redhat.com>
 
+       * 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
index 34261ffa224048b0e4593b296776887fd4c1723f..289c3e1182363a1031439570f0ef5f7a80994472 100644 (file)
@@ -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 %<in%>, %<out%>, %<inout%> 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 %<depend%>, %<destroy%> or %<update%> clause");
index d71a7ed54248b4e41fb9ffea0cc3d14478097188..8d229387c05e5f3c039aad4d42ae9e24b4330f4a 100644 (file)
@@ -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),
-                           "%<depend%> clause without dependence type "
-                           "on array section");
+                           "%<depend%> clause with %<depobj%> 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 %<omp_depend_t%> type in "
-                           "%<depend%> clause without dependence type", t);
+                           "%<depend%> clause with %<depobj%> 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 %<omp_depend_t%> type in "
-                       "%<depend%> clause with dependence type", t);
+                       "%<depend%> clause with dependence type other than "
+                       "%<depobj%>", t);
              remove = true;
            }
          if (!remove)
index fedb96af6aea13c0fa6acc7ac6bf4b27a2940d79..08b50953d905a1c3338d66c67e1d0d6b2382a0e6 100644 (file)
@@ -1,5 +1,16 @@
 2018-08-01  Jakub Jelinek  <jakub@redhat.com>
 
+       * 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
index 8564ad85df5036b51092516471507d85be9f4032..1e386834a2863ace50e65d105710b0220a273739 100644 (file)
@@ -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 %<in%>, %<out%>, %<inout%> 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 %<depend%>, %<destroy%> or %<update%> clause");
index 79394ce1601875ce18e83480753a12342df6aed8..92d7519734dd58be5ed6bdf4b201f10a8e265d3c 100644 (file)
@@ -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;
 
index 4e784936ea35b9605764a3bec33e6a1197ec1596..17bfbd889c2aff8eb18819cb6396caa857f8de06 100644 (file)
@@ -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),
-                           "%<depend%> clause without dependence type "
-                           "on array section");
+                           "%<depend%> clause with %<depobj%> 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 %<omp_depend_t%> type in "
-                           "%<depend%> clause without dependence type", t);
+                           "%<depend%> clause with %<depobj%> 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 %<omp_depend_t%> type in "
-                       "%<depend%> clause with dependence type", t);
+                       "%<depend%> clause with dependence type other than "
+                       "%<depobj%>", t);
              remove = true;
            }
          if (!remove)
index 3cbd08b6733a953be98c75953ac939f69fb718fb..99ccdd33e14ab2fe7ebf311ba3f452e060a9d778 100644 (file)
@@ -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:
index ad1a2dab31bb699013ea873ffca927cf6ad29a29..505ac488498166a92f3abc741f02687cade3523d 100644 (file)
@@ -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;
index f7ac317a3f55ea9cf567f997e89b941160669804..c3627162dfe50533e596005a99de6855150ff8f9 100644 (file)
@@ -1,5 +1,24 @@
 2018-08-01  Jakub Jelinek  <jakub@redhat.com>
 
+       * 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.
 
index 0e0fa00fb0c4c980666a98e6b09aaafc78a05333..4fb01c174ec29fb7abb82b78c94f89a63db14e00 100644 (file)
@@ -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++;
index 22e3894ce99525872407092193366c317918b0d7..855f7c149339e6a7223b0e5f275474f1327b2443 100644 (file)
@@ -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" } */
   ;
 }
index 770f1119c234bf1b10f9cce0f0f7aed815916206..688371b623203c0b8c090f46d5043683fa91c978 100644 (file)
@@ -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" } */
   ;
index 1e55c7a127f18ec8e43992561cbdf20fecdcf01d..1fcce7493ef1eecde6c88b005073585d2e53426b 100644 (file)
@@ -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
index c2c5648a75e935dbf823df0eefd891cd510991c4..6f4aa97ee44620531fd310f3eb1ba8eaeec4d38d 100644 (file)
@@ -8,7 +8,7 @@ template <typename T, typename U, typename V, typename W, int N>
 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++;
index 5189095c916a6be09ff884e858d1e403df9a61fd..deab5db296f9bf03a0ed9917332fd61b632596b2 100644 (file)
@@ -8,48 +8,48 @@ template <typename U, typename V, typename W, W N>
 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 <typename U, typename V, typename W, W N, typename X, typename Y>
 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 <int N>
 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" }
   ;
 }
 
index 2b26daaa1c6e983f826ee0ec14265977df9cd30d..6004f1e6e6d6f4933ff26efa595f2060f8ecf57a 100644 (file)
@@ -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 <int N>
 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" }
   ;
index 6caae520871f56b27d97e838ab78995eec70fd78..ee68f042ef7c24987230ea56c6f97bdc41d258dd 100644 (file)
@@ -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
 };
 
index e29d265b54de479e25719bd2034a7b1d4785ade4..1c81132a8864ab04441e8d494393b87e9d87ba5b 100644 (file)
@@ -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);
       }
index 4c04a388e0523d0aa3b52b65dbb2389ac3d2f370..af0895dd7450c1e3eab3547c0be3dc864c351aa6 100644 (file)
@@ -1,3 +1,15 @@
+2018-08-01  Jakub Jelinek  <jakub@redhat.com>
+
+       * 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  <jakub@redhat.com>
 
        * libgomp.map (OMP_5.0): Export omp_pause_resource{,_all}{,_}.
index 3b99eee687577ed7f08d0b52a04d36d267615110..c0cc55584dada7c1fe7699f3d4c1631d9e2b7178 100644 (file)
@@ -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)
index 59950d379e46599d7b031704285b470848e0703b..91edf8cc34b11209a1637b77b4fe6454d3503308 100644 (file)
@@ -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;
   }
 }
index 72ef4d2c81a113821a944f30582031d535889be2..2400470189fbb4c0ebfca8d7261c0356b793b05b 100644 (file)
@@ -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)
index fb4e5d8a3001a4b099cc6a805c789fcafe4136a4..d9cbfdcbe7942c2c25243ac17803277cccd71059 100644 (file)
@@ -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++;
 }
 
index 484a612acdcc539b6a19886f17aa102d04e3784f..a07a0c889c113a74ebc2c58243ac46b89cbd03ec 100644 (file)
@@ -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;
   }
 }