GCC Middle and Back End API Reference
|
Data Fields | |
copy_body_data | cb |
struct omp_context * | outer |
gimple | stmt |
splay_tree | field_map |
tree | record_type |
tree | sender_decl |
tree | receiver_decl |
splay_tree | sfield_map |
tree | srecord_type |
tree | block_vars |
enum omp_clause_default_kind | default_kind |
int | depth |
bool | is_nested |
@verbatim 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 llo@ redha t.co 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 expressions. 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.
Context structure. Used to store information about each parallel directive in the code.
tree omp_context::block_vars |
copy_body_data omp_context::cb |
Referenced by create_omp_child_function(), create_task_copyfn(), delete_omp_context(), fixup_child_record_type(), fixup_remapped_decl(), install_var_local(), lookup_decl(), lower_omp_taskreg(), maybe_lookup_decl(), new_omp_context(), omp_copy_decl(), scan_omp_1_op(), scan_omp_1_stmt(), scan_omp_parallel(), and scan_omp_task().
enum omp_clause_default_kind omp_context::default_kind |
Referenced by scan_omp_parallel(), scan_omp_task(), and scan_sharing_clauses().
int omp_context::depth |
Referenced by new_omp_context().
splay_tree omp_context::field_map |
bool omp_context::is_nested |
Referenced by lookup_decl_in_outer_ctx(), scan_omp_parallel(), scan_omp_task(), and use_pointer_for_field().
struct omp_context* omp_context::outer |
tree omp_context::receiver_decl |
tree omp_context::record_type |
tree omp_context::sender_decl |
Referenced by build_sender_ref(), lower_omp_single_copy(), and lower_omp_taskreg().
splay_tree omp_context::sfield_map |
Referenced by create_task_copyfn(), delete_omp_context(), install_var_field(), lookup_sfield(), and task_copyfn_copy_decl().
tree omp_context::srecord_type |
gimple omp_context::stmt |
Referenced by build_outer_var_ref(), check_omp_nesting_restrictions(), create_omp_child_function(), delete_omp_context(), is_parallel_ctx(), is_task_ctx(), is_taskreg_ctx(), lower_lastprivate_clauses(), lower_rec_input_clauses(), lower_rec_simd_input_clauses(), lower_reduction_clauses(), task_copyfn_remap_type(), and use_pointer_for_field().