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

Data Fields

copy_body_data cb
 
struct omp_contextouter
 
gimplestmt
 
splay_tree field_map
 
tree record_type
 
tree sender_decl
 
tree receiver_decl
 
splay_tree sfield_map
 
tree srecord_type
 
tree block_vars
 
tree cancel_label
 
gimplesimt_stmt
 
vec< treetask_reductions
 
hash_map< tree, unsigned > * task_reduction_map
 
hash_map< tree, tree > * lastprivate_conditional_map
 
hash_map< tree, tree > * allocate_map
 
tree local_reduction_clauses
 
tree outer_reduction_clauses
 
int depth
 
bool is_nested
 
bool cancellable
 
bool combined_into_simd_safelen1
 
bool scan_inclusive
 
bool scan_exclusive
 
bool for_simd_scan_phase
 
bool order_concurrent
 
bool loop_p
 
bool teams_nested_p
 
bool nonteams_nested_p
 
vec< treeoacc_privatization_candidates
 

Detailed Description

Lowering pass for OMP directives.  Converts OMP directives into explicit
   calls to the runtime library (libgomp), data marshalling to implement data
   sharing and copying clauses, offloading to accelerators, and more.

   Contributed by Diego Novillo <dnovillo@redhat.com>

   Copyright (C) 2005-2024 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 OMP 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 regions which are then moved to a new
function, to be invoked by the thread library, or offloaded.   
Context structure.  Used to store information about each parallel
directive in the code.   

Field Documentation

◆ allocate_map

◆ block_vars

◆ cancel_label

tree omp_context::cancel_label

◆ cancellable

◆ cb

◆ combined_into_simd_safelen1

bool omp_context::combined_into_simd_safelen1

◆ depth

int omp_context::depth

Referenced by new_omp_context().

◆ field_map

◆ for_simd_scan_phase

◆ is_nested

◆ lastprivate_conditional_map

◆ local_reduction_clauses

tree omp_context::local_reduction_clauses

◆ loop_p

◆ nonteams_nested_p

bool omp_context::nonteams_nested_p

◆ oacc_privatization_candidates

◆ order_concurrent

bool omp_context::order_concurrent

◆ outer

◆ outer_reduction_clauses

tree omp_context::outer_reduction_clauses

Referenced by scan_omp_for().

◆ receiver_decl

◆ record_type

◆ scan_exclusive

◆ scan_inclusive

◆ sender_decl

◆ sfield_map

◆ simt_stmt

gimple* omp_context::simt_stmt

Referenced by lower_omp_for(), and scan_omp_simd().

◆ srecord_type

◆ stmt

◆ task_reduction_map

hash_map<tree, unsigned>* omp_context::task_reduction_map

◆ task_reductions

vec<tree> omp_context::task_reductions

◆ teams_nested_p

bool omp_context::teams_nested_p

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