]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-flow.h (struct omp_region): Move to omp-low.c.
authorAndrew MacLeod <amacleod@redhat.com>
Thu, 17 Oct 2013 17:41:07 +0000 (17:41 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Thu, 17 Oct 2013 17:41:07 +0000 (17:41 +0000)
* tree-flow.h (struct omp_region): Move to omp-low.c.
Remove omp_ prototypes and variables.
* gimple.h (omp_reduction_init): Move prototype to omp-low.h.
(copy_var_decl): Relocate prototype from tree-flow.h.
* gimple.c (copy_var_decl): Relocate from omp-low.c.
* tree.h: Move prototype to omp-low.h.
* omp-low.h: New File.  Relocate prototypes here.
* omp-low.c (struct omp_region): Make local here.
(root_omp_region): Make static.
(copy_var_decl) Move to gimple.c.
(new_omp_region): Make static.
(make_gimple_omp_edges): New.  Refactored from tree-cfg.c make_edges.
* tree-cfg.c: Include omp-low.h.
(make_edges): Factor out OMP specific bits to make_gimple_omp_edges.
* gimplify.c: Include omp-low.h.
* tree-parloops.c: Likewise.

c
* c-parser.c: Include omp-low.h.
* c-typeck.c: Likewise.

cp
* parser.c: Include omp-low.h.
* semantics.c: Likewise.

fortran
* trans-openmp.c: Include omp-low.h.

From-SVN: r203786

18 files changed:
gcc/ChangeLog
gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/c/c-typeck.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/cp/semantics.c
gcc/fortran/ChangeLog
gcc/fortran/trans-openmp.c
gcc/gimple.c
gcc/gimple.h
gcc/gimplify.c
gcc/omp-low.c
gcc/omp-low.h [new file with mode: 0644]
gcc/tree-cfg.c
gcc/tree-flow.h
gcc/tree-parloops.c
gcc/tree.h

index fdf943d6d0dffb68ae72dc742c1947910a02b4de..2e1db73c24a8047f7ed5298b70abc323244b725c 100644 (file)
@@ -1,3 +1,22 @@
+2013-10-17  Andrew MacLeod  <amacleod@redhat.com>
+
+       * tree-flow.h (struct omp_region): Move to omp-low.c.
+       Remove omp_ prototypes and variables.
+       * gimple.h (omp_reduction_init): Move prototype to omp-low.h.
+       (copy_var_decl): Relocate prototype from tree-flow.h.
+       * gimple.c (copy_var_decl): Relocate from omp-low.c.
+       * tree.h: Move prototype to omp-low.h.
+       * omp-low.h: New File.  Relocate prototypes here.
+       * omp-low.c (struct omp_region): Make local here.
+       (root_omp_region): Make static.
+       (copy_var_decl) Move to gimple.c.
+       (new_omp_region): Make static.
+       (make_gimple_omp_edges): New.  Refactored from tree-cfg.c make_edges.
+       * tree-cfg.c: Include omp-low.h.
+       (make_edges): Factor out OMP specific bits to make_gimple_omp_edges.
+       * gimplify.c: Include omp-low.h.
+       * tree-parloops.c: Likewise.
+
 2013-10-17  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.c (ix86_fixup_binary_operands): When both source
index 62f3f9f62121345c65c154d013f3d26694e7c154..0e2409aa18236b74dc7bb74e2b2319b1d1618081 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-17  Andrew MacLeod  <amacleod@redhat.com>
+
+       * c-parser.c: Include omp-low.h.
+       * c-typeck.c: Likewise.
+
 2013-10-17  Marek Polacek  <polacek@redhat.com>
 
        PR c/58267
index 7545067a0192516c5f25fe3fdebff0e8d977206f..9b6abe0e95ef5d51f37047bc66e0f25e05313990 100644 (file)
@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "target.h"
 #include "cgraph.h"
 #include "plugin.h"
+#include "omp-low.h"
 
 \f
 /* Initialization routine for this file.  */
index 16e39b2ad7024481db22252e760c62253c88a379..1d83137cd3f65af6e9e1280666c9dc78cf142bb1 100644 (file)
@@ -38,6 +38,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "bitmap.h"
 #include "gimple.h"
 #include "tree-inline.h"
+#include "omp-low.h"
 #include "c-family/c-objc.h"
 #include "c-family/c-common.h"
 #include "c-family/c-ubsan.h"
index 3ce68e8e75c00e548b2d0ba59d75b24d02972a70..4a5043a5f5bdfd2c6d00cf16267cda400507c240 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-17  Andrew MacLeod  <amacleod@redhat.com>
+
+       * parser.c: Include omp-low.h.
+       * semantics.c: Likewise.
+
 2013-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/58596
index e33f5a278ab31705dbf31f971dc9d9a0a36e8eed..54520b414e7874e6da8fcc5f547024be3bd138c7 100644 (file)
@@ -39,6 +39,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-pretty-print.h"
 #include "parser.h"
 #include "type-utils.h"
+#include "omp-low.h"
 
 \f
 /* The lexer.  */
index 41965b643b0a590be13328b14faeb21016ef31a3..e56052d4fda3c987a1b84242e9b41e1f6aa388be 100644 (file)
@@ -44,6 +44,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "bitmap.h"
 #include "hash-table.h"
+#include "omp-low.h"
 
 static bool verify_constant (tree, bool, bool *, bool *);
 #define VERIFY_CONSTANT(X)                                             \
index 068a11d49bb6091d2562021be2e4dd03ceafdf2a..067d1fdca5ba24f5f1ba2879bb925a5cd9e8a7a5 100644 (file)
@@ -1,3 +1,7 @@
+2013-10-17  Andrew MacLeod  <amacleod@redhat.com>
+
+       * trans-openmp.c: Include omp-low.h.
+
 2013-10-16  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/58652
index 1c4ae62a3d99e259f404e188cdb91128d48193f8..bf282498eab6dae4ce552a6a6981dfedc995804f 100644 (file)
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "trans-array.h"
 #include "trans-const.h"
 #include "arith.h"
+#include "omp-low.h"
 
 int ompws_flags;
 
index 9bc62c0026b17f7f92469c4de5c1a9248e502c77..573dbb1fc5bb14150d9c9723100e0e9d2cc873e3 100644 (file)
@@ -4063,3 +4063,24 @@ nonfreeing_call_p (gimple call)
 
   return false;
 }
+
+/* Create a new VAR_DECL and copy information from VAR to it.  */
+
+tree
+copy_var_decl (tree var, tree name, tree type)
+{
+  tree copy = build_decl (DECL_SOURCE_LOCATION (var), VAR_DECL, name, type);
+
+  TREE_ADDRESSABLE (copy) = TREE_ADDRESSABLE (var);
+  TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (var);
+  DECL_GIMPLE_REG_P (copy) = DECL_GIMPLE_REG_P (var);
+  DECL_ARTIFICIAL (copy) = DECL_ARTIFICIAL (var);
+  DECL_IGNORED_P (copy) = DECL_IGNORED_P (var);
+  DECL_CONTEXT (copy) = DECL_CONTEXT (var);
+  TREE_NO_WARNING (copy) = TREE_NO_WARNING (var);
+  TREE_USED (copy) = 1;
+  DECL_SEEN_IN_BIND_EXPR_P (copy) = 1;
+  DECL_ATTRIBUTES (copy) = DECL_ATTRIBUTES (var);
+
+  return copy;
+}
index c0c19ce995a9c29a2a398a650aa6ddecca4f2fa6..ea7858e45247b04c08f05a245f11b7e0f1816949 100644 (file)
@@ -1086,9 +1086,7 @@ extern tree canonicalize_cond_expr_cond (tree);
 extern void dump_decl_set (FILE *, bitmap);
 extern bool gimple_can_coalesce_p (tree, tree);
 extern bool nonfreeing_call_p (gimple);
-
-/* In omp-low.c.  */
-extern tree omp_reduction_init (tree, tree);
+extern tree copy_var_decl (tree, tree, tree);
 
 /* In trans-mem.c.  */
 extern void diagnose_tm_safe_errors (tree);
index 9bc42e46a7d742f0960718a737859ce93d684137..a67f1a3746ec2ae2a6bcb3f10c9704b86b0ad6f7 100644 (file)
@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "pointer-set.h"
 #include "splay-tree.h"
 #include "vec.h"
+#include "omp-low.h"
 
 #include "langhooks-def.h"     /* FIXME: for lhd_set_decl_assembler_name */
 #include "tree-pass.h"         /* FIXME: only for PROP_gimple_any */
index 26f0c35e28596e93051f1f3f6cd8df7b248236e5..208f20c407de0f695904a051f67c7050490fc774 100644 (file)
@@ -43,6 +43,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "optabs.h"
 #include "cfgloop.h"
 #include "target.h"
+#include "omp-low.h"
 
 
 /* Lowering of OpenMP parallel and workshare constructs proceeds in two
@@ -56,6 +57,45 @@ along with GCC; see the file COPYING3.  If not see
    scanned for parallel regions which are then moved to a new
    function, to be invoked by the thread library.  */
 
+/* Parallel region information.  Every parallel and workshare
+   directive is enclosed between two markers, the OMP_* directive
+   and a corresponding OMP_RETURN statement.  */
+
+struct omp_region
+{
+  /* The enclosing region.  */
+  struct omp_region *outer;
+
+  /* First child region.  */
+  struct omp_region *inner;
+
+  /* Next peer region.  */
+  struct omp_region *next;
+
+  /* Block containing the omp directive as its last stmt.  */
+  basic_block entry;
+
+  /* Block containing the OMP_RETURN as its last stmt.  */
+  basic_block exit;
+
+  /* Block containing the OMP_CONTINUE as its last stmt.  */
+  basic_block cont;
+
+  /* If this is a combined parallel+workshare region, this is a list
+     of additional arguments needed by the combined parallel+workshare
+     library call.  */
+  vec<tree, va_gc> *ws_args;
+
+  /* The code for the omp directive of this region.  */
+  enum gimple_code type;
+
+  /* Schedule kind, only used for OMP_FOR type regions.  */
+  enum omp_clause_schedule_kind sched_kind;
+
+  /* True if this is a combined parallel+workshare region.  */
+  bool is_combined_parallel;
+};
+
 /* Context structure.  Used to store information about each parallel
    directive in the code.  */
 
@@ -135,7 +175,7 @@ struct omp_for_data
 static splay_tree all_contexts;
 static int taskreg_nesting_level;
 static int target_nesting_level;
-struct omp_region *root_omp_region;
+static struct omp_region *root_omp_region;
 static bitmap task_shared_vars;
 
 static void scan_omp (gimple_seq *, omp_context *);
@@ -872,27 +912,6 @@ use_pointer_for_field (tree decl, omp_context *shared_ctx)
   return false;
 }
 
-/* Create a new VAR_DECL and copy information from VAR to it.  */
-
-tree
-copy_var_decl (tree var, tree name, tree type)
-{
-  tree copy = build_decl (DECL_SOURCE_LOCATION (var), VAR_DECL, name, type);
-
-  TREE_ADDRESSABLE (copy) = TREE_ADDRESSABLE (var);
-  TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (var);
-  DECL_GIMPLE_REG_P (copy) = DECL_GIMPLE_REG_P (var);
-  DECL_ARTIFICIAL (copy) = DECL_ARTIFICIAL (var);
-  DECL_IGNORED_P (copy) = DECL_IGNORED_P (var);
-  DECL_CONTEXT (copy) = DECL_CONTEXT (var);
-  TREE_NO_WARNING (copy) = TREE_NO_WARNING (var);
-  TREE_USED (copy) = 1;
-  DECL_SEEN_IN_BIND_EXPR_P (copy) = 1;
-  DECL_ATTRIBUTES (copy) = DECL_ATTRIBUTES (var);
-
-  return copy;
-}
-
 /* Construct a new automatic decl similar to VAR.  */
 
 static tree
@@ -1219,7 +1238,7 @@ debug_all_omp_regions (void)
 
 /* Create a new parallel region starting at STMT inside region PARENT.  */
 
-struct omp_region *
+static struct omp_region *
 new_omp_region (basic_block bb, enum gimple_code type,
                struct omp_region *parent)
 {
@@ -10312,6 +10331,121 @@ diagnose_sb_2 (gimple_stmt_iterator *gsi_p, bool *handled_ops_p,
   return NULL_TREE;
 }
 
+/* Called from tree-cfg.c::make_edges to create cfg edges for all GIMPLE_OMP
+   codes.  */
+bool
+make_gimple_omp_edges (basic_block bb, struct omp_region **region)
+{
+  gimple last = last_stmt (bb);
+  enum gimple_code code = gimple_code (last);
+  struct omp_region *cur_region = *region;
+  bool fallthru = false;
+
+  switch (code)
+    {
+    case GIMPLE_OMP_PARALLEL:
+    case GIMPLE_OMP_TASK:
+    case GIMPLE_OMP_FOR:
+    case GIMPLE_OMP_SINGLE:
+    case GIMPLE_OMP_TEAMS:
+    case GIMPLE_OMP_MASTER:
+    case GIMPLE_OMP_TASKGROUP:
+    case GIMPLE_OMP_ORDERED:
+    case GIMPLE_OMP_CRITICAL:
+    case GIMPLE_OMP_SECTION:
+      cur_region = new_omp_region (bb, code, cur_region);
+      fallthru = true;
+      break;
+
+    case GIMPLE_OMP_TARGET:
+      cur_region = new_omp_region (bb, code, cur_region);
+      fallthru = true;
+      if (gimple_omp_target_kind (last) == GF_OMP_TARGET_KIND_UPDATE)
+       cur_region = cur_region->outer;
+      break;
+
+    case GIMPLE_OMP_SECTIONS:
+      cur_region = new_omp_region (bb, code, cur_region);
+      fallthru = true;
+      break;
+
+    case GIMPLE_OMP_SECTIONS_SWITCH:
+      fallthru = false;
+      break;
+
+    case GIMPLE_OMP_ATOMIC_LOAD:
+    case GIMPLE_OMP_ATOMIC_STORE:
+       fallthru = true;
+       break;
+
+    case GIMPLE_OMP_RETURN:
+      /* In the case of a GIMPLE_OMP_SECTION, the edge will go
+        somewhere other than the next block.  This will be
+        created later.  */
+      cur_region->exit = bb;
+      fallthru = cur_region->type != GIMPLE_OMP_SECTION;
+      cur_region = cur_region->outer;
+      break;
+
+    case GIMPLE_OMP_CONTINUE:
+      cur_region->cont = bb;
+      switch (cur_region->type)
+       {
+       case GIMPLE_OMP_FOR:
+         /* Mark all GIMPLE_OMP_FOR and GIMPLE_OMP_CONTINUE
+            succs edges as abnormal to prevent splitting
+            them.  */
+         single_succ_edge (cur_region->entry)->flags |= EDGE_ABNORMAL;
+         /* Make the loopback edge.  */
+         make_edge (bb, single_succ (cur_region->entry),
+                    EDGE_ABNORMAL);
+
+         /* Create an edge from GIMPLE_OMP_FOR to exit, which
+            corresponds to the case that the body of the loop
+            is not executed at all.  */
+         make_edge (cur_region->entry, bb->next_bb, EDGE_ABNORMAL);
+         make_edge (bb, bb->next_bb, EDGE_FALLTHRU | EDGE_ABNORMAL);
+         fallthru = false;
+         break;
+
+       case GIMPLE_OMP_SECTIONS:
+         /* Wire up the edges into and out of the nested sections.  */
+         {
+           basic_block switch_bb = single_succ (cur_region->entry);
+
+           struct omp_region *i;
+           for (i = cur_region->inner; i ; i = i->next)
+             {
+               gcc_assert (i->type == GIMPLE_OMP_SECTION);
+               make_edge (switch_bb, i->entry, 0);
+               make_edge (i->exit, bb, EDGE_FALLTHRU);
+             }
+
+           /* Make the loopback edge to the block with
+              GIMPLE_OMP_SECTIONS_SWITCH.  */
+           make_edge (bb, switch_bb, 0);
+
+           /* Make the edge from the switch to exit.  */
+           make_edge (switch_bb, bb->next_bb, 0);
+           fallthru = false;
+         }
+         break;
+
+       default:
+         gcc_unreachable ();
+       }
+      break;
+
+    default:
+      gcc_unreachable ();
+    }
+
+  if (*region != cur_region)
+    *region = cur_region;
+
+  return fallthru;
+}
+
 static unsigned int
 diagnose_omp_structured_block_errors (void)
 {
diff --git a/gcc/omp-low.h b/gcc/omp-low.h
new file mode 100644 (file)
index 0000000..6b5a2ff
--- /dev/null
@@ -0,0 +1,31 @@
+/* Header file for openMP lowering directives.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_OMP_LOW_H
+#define GCC_OMP_LOW_H
+
+struct omp_region;
+
+extern tree find_omp_clause (tree, enum omp_clause_code);
+extern void omp_expand_local (basic_block);
+extern void free_omp_regions (void);
+extern tree omp_reduction_init (tree, tree);
+extern bool make_gimple_omp_edges (basic_block, struct omp_region **);
+
+#endif /* GCC_OMP_LOW_H */
index 8b6679177473eef0a0723d3139578b2545929606..9268615395abbd6a0c0cb8555d8cf6524850d567 100644 (file)
@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-inline.h"
 #include "target.h"
 #include "tree-ssa-live.h"
+#include "omp-low.h"
 
 /* This file contains functions for building the Control Flow Graph (CFG)
    for a function tree.  */
@@ -607,97 +608,8 @@ make_edges (void)
              fallthru = true;
              break;
 
-           case GIMPLE_OMP_PARALLEL:
-           case GIMPLE_OMP_TASK:
-           case GIMPLE_OMP_FOR:
-           case GIMPLE_OMP_SINGLE:
-           case GIMPLE_OMP_TEAMS:
-           case GIMPLE_OMP_MASTER:
-           case GIMPLE_OMP_TASKGROUP:
-           case GIMPLE_OMP_ORDERED:
-           case GIMPLE_OMP_CRITICAL:
-           case GIMPLE_OMP_SECTION:
-             cur_region = new_omp_region (bb, code, cur_region);
-             fallthru = true;
-             break;
-
-           case GIMPLE_OMP_TARGET:
-             cur_region = new_omp_region (bb, code, cur_region);
-             fallthru = true;
-             if (gimple_omp_target_kind (last) == GF_OMP_TARGET_KIND_UPDATE)
-               cur_region = cur_region->outer;
-             break;
-
-           case GIMPLE_OMP_SECTIONS:
-             cur_region = new_omp_region (bb, code, cur_region);
-             fallthru = true;
-             break;
-
-           case GIMPLE_OMP_SECTIONS_SWITCH:
-             fallthru = false;
-             break;
-
-            case GIMPLE_OMP_ATOMIC_LOAD:
-            case GIMPLE_OMP_ATOMIC_STORE:
-               fallthru = true;
-               break;
-
-           case GIMPLE_OMP_RETURN:
-             /* In the case of a GIMPLE_OMP_SECTION, the edge will go
-                somewhere other than the next block.  This will be
-                created later.  */
-             cur_region->exit = bb;
-             fallthru = cur_region->type != GIMPLE_OMP_SECTION;
-             cur_region = cur_region->outer;
-             break;
-
-           case GIMPLE_OMP_CONTINUE:
-             cur_region->cont = bb;
-             switch (cur_region->type)
-               {
-               case GIMPLE_OMP_FOR:
-                 /* Mark all GIMPLE_OMP_FOR and GIMPLE_OMP_CONTINUE
-                    succs edges as abnormal to prevent splitting
-                    them.  */
-                 single_succ_edge (cur_region->entry)->flags |= EDGE_ABNORMAL;
-                 /* Make the loopback edge.  */
-                 make_edge (bb, single_succ (cur_region->entry),
-                            EDGE_ABNORMAL);
-
-                 /* Create an edge from GIMPLE_OMP_FOR to exit, which
-                    corresponds to the case that the body of the loop
-                    is not executed at all.  */
-                 make_edge (cur_region->entry, bb->next_bb, EDGE_ABNORMAL);
-                 make_edge (bb, bb->next_bb, EDGE_FALLTHRU | EDGE_ABNORMAL);
-                 fallthru = false;
-                 break;
-
-               case GIMPLE_OMP_SECTIONS:
-                 /* Wire up the edges into and out of the nested sections.  */
-                 {
-                   basic_block switch_bb = single_succ (cur_region->entry);
-
-                   struct omp_region *i;
-                   for (i = cur_region->inner; i ; i = i->next)
-                     {
-                       gcc_assert (i->type == GIMPLE_OMP_SECTION);
-                       make_edge (switch_bb, i->entry, 0);
-                       make_edge (i->exit, bb, EDGE_FALLTHRU);
-                     }
-
-                   /* Make the loopback edge to the block with
-                      GIMPLE_OMP_SECTIONS_SWITCH.  */
-                   make_edge (bb, switch_bb, 0);
-
-                   /* Make the edge from the switch to exit.  */
-                   make_edge (switch_bb, bb->next_bb, 0);
-                   fallthru = false;
-                 }
-                 break;
-
-               default:
-                 gcc_unreachable ();
-               }
+           CASE_GIMPLE_OMP:
+             fallthru = make_gimple_omp_edges (bb, &cur_region);
              break;
 
            case GIMPLE_TRANSACTION:
@@ -721,8 +633,7 @@ make_edges (void)
        make_edge (bb, bb->next_bb, EDGE_FALLTHRU);
     }
 
-  if (root_omp_region)
-    free_omp_regions ();
+  free_omp_regions ();
 
   /* Fold COND_EXPR_COND of each COND_EXPR.  */
   fold_cond_expr_cond ();
index 5ea5d06c4b33b9d0609503b2af47af10dadefbfc..d849c2944bc5e90060e3ceee4f7626c94e396eca 100644 (file)
@@ -37,56 +37,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-into-ssa.h"
 #include "tree-ssa-loop.h"
 
-/*---------------------------------------------------------------------------
-                             OpenMP Region Tree
----------------------------------------------------------------------------*/
-
-/* Parallel region information.  Every parallel and workshare
-   directive is enclosed between two markers, the OMP_* directive
-   and a corresponding OMP_RETURN statement.  */
-
-struct omp_region
-{
-  /* The enclosing region.  */
-  struct omp_region *outer;
-
-  /* First child region.  */
-  struct omp_region *inner;
-
-  /* Next peer region.  */
-  struct omp_region *next;
-
-  /* Block containing the omp directive as its last stmt.  */
-  basic_block entry;
-
-  /* Block containing the OMP_RETURN as its last stmt.  */
-  basic_block exit;
-
-  /* Block containing the OMP_CONTINUE as its last stmt.  */
-  basic_block cont;
-
-  /* If this is a combined parallel+workshare region, this is a list
-     of additional arguments needed by the combined parallel+workshare
-     library call.  */
-  vec<tree, va_gc> *ws_args;
-
-  /* The code for the omp directive of this region.  */
-  enum gimple_code type;
-
-  /* Schedule kind, only used for OMP_FOR type regions.  */
-  enum omp_clause_schedule_kind sched_kind;
-
-  /* True if this is a combined parallel+workshare region.  */
-  bool is_combined_parallel;
-};
-
-extern struct omp_region *root_omp_region;
-extern struct omp_region *new_omp_region (basic_block, enum gimple_code,
-                                         struct omp_region *);
-extern void free_omp_regions (void);
-void omp_expand_local (basic_block);
-tree copy_var_decl (tree, tree, tree);
-
 /* Location to track pending stmt for edge insertion.  */
 #define PENDING_STMT(e)        ((e)->insns.g)
 
index 056950dd066b185eca15b4237a151ac1a8065945..cdef5c62fbed7ca9f38810b18cf71b90e2a0f1a5 100644 (file)
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-vectorizer.h"
 #include "tree-hasher.h"
 #include "tree-parloops.h"
+#include "omp-low.h"
 
 /* This pass tries to distribute iterations of loops into several threads.
    The implementation is straightforward -- for each loop we test whether its
index 2b6e762cbe8455c40c88173824c3b3ad9ed57279..2f4514d6a74417c92a726419424b042085d4921b 100644 (file)
@@ -3553,7 +3553,6 @@ extern tree build_translation_unit_decl (tree);
 extern tree build_block (tree, tree, tree, tree);
 extern tree build_empty_stmt (location_t);
 extern tree build_omp_clause (location_t, enum omp_clause_code);
-extern tree find_omp_clause (tree, enum omp_clause_code);
 
 extern tree build_vl_exp_stat (enum tree_code, int MEM_STAT_DECL);
 #define build_vl_exp(c, n) build_vl_exp_stat (c, n MEM_STAT_INFO)