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
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
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

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
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
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

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: