GCC Middle and Back End API Reference
|
#include <gimple.h>
Data Fields | |
tree | copy_fn |
tree | arg_size |
tree | arg_align |
tree | clauses |
tree | child_fn |
tree | data_arg |
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 |
code == GIMPLE_OMP_TASK:
GIMPLE_OMP_TASK <BODY, CLAUSES, CHILD_FN, DATA_ARG, COPY_FN, ARG_SIZE, ARG_ALIGN> represents
#pragma omp task [CLAUSES] BODY
BODY is a the sequence of statements to be executed by all threads.
CLAUSES is an OMP_CLAUSE chain with all the clauses.
CHILD_FN is set when outlining the body of the explicit task region. All the statements in BODY are moved into this newly created function when converting OMP constructs into low-GIMPLE.
DATA_ARG is a local variable in the parent function containing data to be shared with CHILD_FN. This is used to implement all the data sharing clauses.
COPY_FN is set when outlining the firstprivate var initialization. All the needed statements are emitted into the newly created function, or when only memcpy is needed, it is NULL.
ARG_SIZE and ARG_ALIGN are the size and alignment of the incoming data area allocated by GOMP_task and passed to CHILD_FN.
tree gimple_statement_omp_task::arg_align |
tree gimple_statement_omp_task::arg_size |
[ WORD 12-13 ] Size and alignment in bytes of the argument data block.
|
inherited |
[ WORD 3 ] Basic block holding this statement.
Referenced by gimple_call_arg_flags().
|
inherited |
[ WORD 1-6 ] : base class [ WORD 7 ]
|
inherited |
[ WORD 9 ] Child function holding the body of the parallel region.
|
inherited |
[ WORD 1-7 ] : base class [ WORD 8 ] Clauses.
tree gimple_statement_omp_task::copy_fn |
[ WORD 1-10 ] : base class [ WORD 11 ] Child function holding firstprivate initialization if needed.
|
inherited |
[ WORD 10 ] Shared data argument.
|
inherited |
Nonzero if this statement contains volatile operands.
|
inherited |
[ WORD 2 ] Locus information for debug info.
|
inherited |
Nonzero if this statement has been modified and needs to have its operands rescanned.
|
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().
|
inherited |
[ WORD 1 ] Main identifying code for a tuple. Nonzero if a warning should not be emitted on this tuple.
|
inherited |
Nonzero if this tuple represents a non-temporal move.
|
inherited |
Number of operands in this tuple.
|
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.
|
inherited |
Referenced by gsi_insert_seq_before(), gsi_insert_seq_nodes_after(), gsi_set_stmt(), and gsi_split_seq_after().
|
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().
|
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.
|
inherited |
Nonzero if this tuple has been visited. Passes are responsible for clearing this bit before using it.