Add OMP_STANDALONE_CLAUSES.
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 29 Apr 2015 15:44:41 +0000 (17:44 +0200)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Wed, 29 Apr 2015 15:44:41 +0000 (17:44 +0200)
gcc/
* tree.h (OMP_STANDALONE_CLAUSES): New macro.
* gimplify.c (gimplify_omp_workshare): Use it.
gcc/c/
* c-parser.c (c_parser_oacc_enter_exit_data): Use
OMP_STANDALONE_CLAUSES.
gcc/cp/
* parser.c (cp_parser_oacc_enter_exit_data): Use
OMP_STANDALONE_CLAUSES.

From-SVN: r222580

gcc/ChangeLog
gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/gimplify.c
gcc/tree.h

index 4fb54903d61c5219aefdd9caed869cc09e4d2f32..11cb62ae7bbafee11055fc196d264cb06f86490d 100644 (file)
@@ -1,3 +1,8 @@
+2015-04-29  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * tree.h (OMP_STANDALONE_CLAUSES): New macro.
+       * gimplify.c (gimplify_omp_workshare): Use it.
+
 2015-04-29  Richard Sandiford  <richard.sandiford@arm.com>
 
        * Makefile.in (build/genrecog.o): Depend on inchash.h.
index 9c769ca6d9332e4d919199095e0edf7a8cfcf07c..6d8dbb1b1356c137813da566e13e0853f7c73acc 100644 (file)
@@ -1,3 +1,8 @@
+2015-04-29  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * c-parser.c (c_parser_oacc_enter_exit_data): Use
+       OMP_STANDALONE_CLAUSES.
+
 2015-04-28  Marek Polacek  <polacek@redhat.com>
 
        * c-parser.c (c_parser_binary_expression): Remove duplicate line.
index cc8a4e36a2719097a4535ca928977c1247d4a770..bf0e4c577cc085cc4b3c75ba89b7191554669fdc 100644 (file)
@@ -12154,10 +12154,7 @@ c_parser_oacc_enter_exit_data (c_parser *parser, bool enter)
 
   stmt = enter ? make_node (OACC_ENTER_DATA) : make_node (OACC_EXIT_DATA);
   TREE_TYPE (stmt) = void_type_node;
-  if (enter)
-    OACC_ENTER_DATA_CLAUSES (stmt) = clauses;
-  else
-    OACC_EXIT_DATA_CLAUSES (stmt) = clauses;
+  OMP_STANDALONE_CLAUSES (stmt) = clauses;
   SET_EXPR_LOCATION (stmt, loc);
   add_stmt (stmt);
 }
index 3ee050ce7536bb80922088e72bf44a373de1c786..9442faa9c40722203f20d1cf925a7134d80e6438 100644 (file)
@@ -1,3 +1,8 @@
+2015-04-29  Thomas Schwinge  <thomas@codesourcery.com>
+
+       * parser.c (cp_parser_oacc_enter_exit_data): Use
+       OMP_STANDALONE_CLAUSES.
+
 2015-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/64667
index 4ea2ca2db4ac8feb6b0198749996b878cb10a27c..cfb512be8e745cff6c0b670d5f5edb5f64c36a52 100644 (file)
@@ -31606,10 +31606,7 @@ cp_parser_oacc_enter_exit_data (cp_parser *parser, cp_token *pragma_tok,
 
   stmt = enter ? make_node (OACC_ENTER_DATA) : make_node (OACC_EXIT_DATA);
   TREE_TYPE (stmt) = void_type_node;
-  if (enter)
-    OACC_ENTER_DATA_CLAUSES (stmt) = clauses;
-  else
-    OACC_EXIT_DATA_CLAUSES (stmt) = clauses;
+  OMP_STANDALONE_CLAUSES (stmt) = clauses;
   SET_EXPR_LOCATION (stmt, pragma_tok->location);
   add_stmt (stmt);
   return stmt;
index 1d5341eec5b19028c7397a5f6a2f912a4c721620..9ce3dd973ccb84ebedc28d47d9c713374398e07f 100644 (file)
@@ -7411,34 +7411,31 @@ gimplify_omp_workshare (tree *expr_p, gimple_seq *pre_p)
 static void
 gimplify_omp_target_update (tree *expr_p, gimple_seq *pre_p)
 {
-  tree expr = *expr_p, clauses;
+  tree expr = *expr_p;
   int kind;
   gomp_target *stmt;
 
   switch (TREE_CODE (expr))
     {
     case OACC_ENTER_DATA:
-      clauses = OACC_ENTER_DATA_CLAUSES (expr);
       kind = GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA;
       break;
     case OACC_EXIT_DATA:
-      clauses = OACC_EXIT_DATA_CLAUSES (expr);
       kind = GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA;
       break;
     case OACC_UPDATE:
-      clauses = OACC_UPDATE_CLAUSES (expr);
       kind = GF_OMP_TARGET_KIND_OACC_UPDATE;
       break;
     case OMP_TARGET_UPDATE:
-      clauses = OMP_TARGET_UPDATE_CLAUSES (expr);
       kind = GF_OMP_TARGET_KIND_UPDATE;
       break;
     default:
       gcc_unreachable ();
     }
-  gimplify_scan_omp_clauses (&clauses, pre_p, ORT_WORKSHARE);
-  gimplify_adjust_omp_clauses (pre_p, &clauses);
-  stmt = gimple_build_omp_target (NULL, kind, clauses);
+  gimplify_scan_omp_clauses (&OMP_STANDALONE_CLAUSES (expr), pre_p,
+                            ORT_WORKSHARE);
+  gimplify_adjust_omp_clauses (pre_p, &OMP_STANDALONE_CLAUSES (expr));
+  stmt = gimple_build_omp_target (NULL, kind, OMP_STANDALONE_CLAUSES (expr));
 
   gimplify_seq_add_stmt (pre_p, stmt);
   *expr_p = NULL_TREE;
index 2ec970884b6d3230490398329f63fae6d259db09..e17bd9b1109bcbbef8ce918655e7d21b4d3aae5e 100644 (file)
@@ -1197,11 +1197,17 @@ extern void protected_set_expr_location (tree, location_t);
 
 /* OpenMP and OpenACC directive and clause accessors.  */
 
+/* Generic accessors for OMP nodes that keep the body as operand 0, and clauses
+   as operand 1.  */
 #define OMP_BODY(NODE) \
   TREE_OPERAND (TREE_RANGE_CHECK (NODE, OACC_PARALLEL, OMP_CRITICAL), 0)
 #define OMP_CLAUSES(NODE) \
   TREE_OPERAND (TREE_RANGE_CHECK (NODE, OACC_PARALLEL, OMP_SINGLE), 1)
 
+/* Generic accessors for OMP nodes that keep clauses as operand 0.  */
+#define OMP_STANDALONE_CLAUSES(NODE) \
+  TREE_OPERAND (TREE_RANGE_CHECK (NODE, OACC_CACHE, OMP_TARGET_UPDATE), 0)
+
 #define OACC_PARALLEL_BODY(NODE) \
   TREE_OPERAND (OACC_PARALLEL_CHECK (NODE), 0)
 #define OACC_PARALLEL_CLAUSES(NODE) \