GCC Middle and Back End API Reference
gimple_statement_omp_for Struct Reference

#include <gimple.h>

Inheritance diagram for gimple_statement_omp_for:
Collaboration diagram for gimple_statement_omp_for:

Data Fields

tree clauses
size_t collapse
struct gimple_omp_for_iteriter
gimple_seq pre_body
gimple_seq body
ENUM_BITFIELD(gimple_code)
code unsigned int 
no_warning: 1
unsigned int visited: 1
unsigned int nontemporal_move: 1
unsigned int plf: 2
unsigned modified: 1
unsigned has_volatile_ops: 1
unsigned int subcode: 16
unsigned uid
location_t location
unsigned num_ops
basic_block bb
gimple next
gimple prev

Detailed Description

code == GIMPLE_OMP_FOR:

GIMPLE_OMP_FOR <BODY, CLAUSES, INDEX, INITIAL, FINAL, COND, INCR, PRE_BODY> represents

PRE_BODY #pragma omp for [clause1 ... clauseN] for (INDEX = INITIAL; INDEX COND FINAL; INDEX {+=,-=} INCR) BODY

BODY is the loop body.

CLAUSES is the list of clauses.

INDEX must be an integer or pointer variable, which is implicitly thread private. It must be accepted by is_gimple_operand.

INITIAL is the initial value given to INDEX. It must be accepted by is_gimple_operand.

FINAL is the final value that INDEX should take. It must be accepted by is_gimple_operand.

COND is the condition code for the controlling predicate. It must be one of { <, >, <=, >= }

INCR is the loop index increment. It must be tree node of type tcc_constant.

PRE_BODY is a landing pad filled by the gimplifier with things from INIT, COND, and INCR that are technically part of the OMP_FOR structured block, but are evaluated before the loop body begins.

INITIAL, FINAL and INCR are required to be loop invariant integer expressions that are evaluated without any synchronization. The evaluation order, frequency of evaluation and side-effects are unspecified by the standard.


Field Documentation

basic_block gimple_statement_base::bb
inherited

[ WORD 3 ] Basic block holding this statement.

Referenced by gimple_call_arg_flags().

gimple_seq gimple_statement_omp::body
inherited

[ WORD 1-6 ] : base class [ WORD 7 ]

tree gimple_statement_omp_for::clauses

[ WORD 1-7 ] : base class [ WORD 8 ]

size_t gimple_statement_omp_for::collapse

[ WORD 9 ] Number of elements in iter array.

Referenced by gimple_build_debug_bind_stat().

unsigned gimple_statement_base::has_volatile_ops
inherited

Nonzero if this statement contains volatile operands.

struct gimple_omp_for_iter* gimple_statement_omp_for::iter

[ WORD 10 ]

Referenced by gimple_build_debug_bind_stat().

location_t gimple_statement_base::location
inherited

[ WORD 2 ] Locus information for debug info.

unsigned gimple_statement_base::modified
inherited

Nonzero if this statement has been modified and needs to have its operands rescanned.

gimple gimple_statement_base::next
inherited

[ WORD 4-5 ] Linked lists of gimple statements. The next pointers form a NULL terminated list, the prev pointers are a cyclic list. A gimple statement is hence also a double-ended list of statements, with the pointer itself being the first element, and the prev pointer being the last.

Referenced by gsi_insert_seq_nodes_after(), gsi_set_stmt(), and gsi_split_seq_after().

ENUM_BITFIELD (gimple_code) code unsigned int gimple_statement_base::no_warning
inherited

[ WORD 1 ] Main identifying code for a tuple. Nonzero if a warning should not be emitted on this tuple.

unsigned int gimple_statement_base::nontemporal_move
inherited

Nonzero if this tuple represents a non-temporal move.

unsigned gimple_statement_base::num_ops
inherited

Number of operands in this tuple.

unsigned int gimple_statement_base::plf
inherited

Pass local flags. These flags are free for any pass to use as they see fit. Passes should not assume that these flags contain any useful value when the pass starts. Any initial state that the pass requires should be set on entry to the pass. See gimple_set_plf and gimple_plf for usage.

gimple_seq gimple_statement_omp_for::pre_body

[ WORD 11 ] Pre-body evaluated before the loop body begins.

gimple gimple_statement_base::prev
inherited
unsigned int gimple_statement_base::subcode
inherited

The SUBCODE field can be used for tuple-specific flags for tuples that do not require subcodes. Note that SUBCODE should be at least as wide as tree codes, as several tuples store tree codes in there.

Referenced by gimple_build_call_valist().

unsigned gimple_statement_base::uid
inherited

UID of this statement. This is used by passes that want to assign IDs to statements. It must be assigned and used by each pass. By default it should be assumed to contain garbage.

unsigned int gimple_statement_base::visited
inherited

Nonzero if this tuple has been visited. Passes are responsible for clearing this bit before using it.


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