GCC Middle and Back End API Reference
omp_region Struct Reference
Collaboration diagram for omp_region:

Data Fields

struct omp_regionouter
struct omp_regioninner
struct omp_regionnext
basic_block entry
basic_block exit
basic_block cont
vec< tree, va_gc > * ws_args
enum gimple_code type
enum omp_clause_schedule_kind sched_kind
bool is_combined_parallel

Detailed Description


Lowering pass for OpenMP directives. Converts OpenMP directives into explicit calls to the runtime library (libgomp) and data marshalling to implement data sharing and copying clauses. Contributed by Diego Novillo dnovi.nosp@m.llo@.nosp@m.redha.nosp@m.t.co.nosp@m.m

Copyright (C) 2005-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/.

   Lowering of OpenMP parallel and workshare constructs proceeds in two
   phases.  The first phase scans the function looking for OMP statements
   and then for variables that must be replaced to satisfy data sharing
   clauses.  The second phase expands code for the constructs, as well as
   re-gimplifying things when variables have been replaced with complex

   Final code generation is done by pass_expand_omp.  The flowgraph is
   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.  

Field Documentation

basic_block omp_region::cont
     Block containing the OMP_CONTINUE as its last stmt.  

Referenced by expand_omp_for_init_vars().

basic_block omp_region::entry
     Block containing the omp directive as its last stmt.  
basic_block omp_region::exit
     Block containing the OMP_RETURN as its last stmt.  

Referenced by expand_omp_target().

struct omp_region* omp_region::inner
     First child region.  

Referenced by dump_omp_region(), and lower_send_clauses().

bool omp_region::is_combined_parallel
     True if this is a combined parallel+workshare region.  

Referenced by is_parallel_ctx().

struct omp_region* omp_region::next
     Next peer region.  

Referenced by dump_omp_region().

struct omp_region* omp_region::outer
     The enclosing region.  
enum omp_clause_schedule_kind omp_region::sched_kind
     Schedule kind, only used for OMP_FOR type regions.  

Referenced by lower_send_clauses().

enum gimple_code omp_region::type
     The code for the omp directive of this region.  

Referenced by lower_send_clauses().

vec<tree, va_gc>* omp_region::ws_args
     If this is a combined parallel+workshare region, this is a list
     of additional arguments needed by the combined parallel+workshare
     library call.  

The documentation for this struct was generated from the following file: