GCC Middle and Back End API Reference
|
Data Structures | |
struct | omp_addr_token |
Enumerations | |
enum | access_method_kinds { ACCESS_DIRECT , ACCESS_REF , ACCESS_POINTER , ACCESS_REF_TO_POINTER , ACCESS_POINTER_OFFSET , ACCESS_REF_TO_POINTER_OFFSET , ACCESS_INDEXED_ARRAY , ACCESS_INDEXED_REF_TO_ARRAY } |
enum | structure_base_kinds { BASE_DECL , BASE_COMPONENT_EXPR , BASE_ARBITRARY_EXPR } |
enum | token_type { ARRAY_BASE , STRUCTURE_BASE , COMPONENT_SELECTOR , ACCESS_METHOD } |
Functions | |
static bool | omp_parse_component_selector (tree *expr0) |
static bool | omp_parse_ref (tree *expr0) |
static bool | omp_parse_pointer (tree *expr0, bool *has_offset) |
static bool | omp_parse_access_method (tree *expr0, enum access_method_kinds *kind) |
static bool | omp_parse_access_methods (vec< omp_addr_token * > &addr_tokens, tree *expr0) |
static bool | omp_parse_structured_expr (vec< omp_addr_token * > &, tree *) |
static bool | omp_parse_structure_base (vec< omp_addr_token * > &addr_tokens, tree *expr0, structure_base_kinds *kind, vec< omp_addr_token * > &base_access_tokens, bool allow_structured=true) |
static bool | omp_parse_array_expr (vec< omp_addr_token * > &addr_tokens, tree *expr0) |
bool | omp_access_chain_p (vec< omp_addr_token * > &addr_tokens, unsigned i) |
tree | omp_accessed_addr (vec< omp_addr_token * > &addr_tokens, unsigned i, tree expr) |
These are the ways of accessing a variable that have special-case handling in the middle end (gimplify, omp-lower, etc.).
These are the kinds of access that an ACCESS_METHOD token can represent.
Enumerator | |
---|---|
ACCESS_DIRECT | |
ACCESS_REF | |
ACCESS_POINTER | |
ACCESS_REF_TO_POINTER | |
ACCESS_POINTER_OFFSET | |
ACCESS_REF_TO_POINTER_OFFSET | |
ACCESS_INDEXED_ARRAY | |
ACCESS_INDEXED_REF_TO_ARRAY |
bool omp_addr_tokenizer::omp_access_chain_p | ( | vec< omp_addr_token * > & | addr_tokens, |
unsigned | i ) |
Return TRUE if the ACCESS_METHOD token at index 'i' has a further ACCESS_METHOD chained after it (e.g., if we're processing an expression containing multiple pointer indirections).
References ACCESS_METHOD, gcc_assert, and i.
tree omp_addr_tokenizer::omp_accessed_addr | ( | vec< omp_addr_token * > & | addr_tokens, |
unsigned | i, | ||
tree | expr ) |
Return the address of the object accessed by the ACCESS_METHOD token at 'i': either of the next access method's expr, or of EXPR if we're at the end of the list of tokens.
References build_fold_addr_expr, and i.
|
static |
References ACCESS_DIRECT, ACCESS_INDEXED_ARRAY, ACCESS_INDEXED_REF_TO_ARRAY, ACCESS_POINTER, ACCESS_POINTER_OFFSET, ACCESS_REF, ACCESS_REF_TO_POINTER, ACCESS_REF_TO_POINTER_OFFSET, expr, omp_parse_pointer(), omp_parse_ref(), STRIP_NOPS, TREE_CODE, and TREE_OPERAND.
Referenced by omp_parse_access_methods().
|
static |
References expr, omp_parse_access_method(), omp_parse_access_methods(), and TREE_CODE.
Referenced by omp_parse_access_methods(), and omp_parse_structure_base().
|
static |
References ARRAY_BASE, expr, omp_parse_structure_base(), and s_kind.
References expr, NULL_TREE, TREE_CODE, TREE_OPERAND, and TREE_TYPE.
Referenced by omp_parse_structured_expr().
References expr, integer_zerop(), STRIP_NOPS, TREE_CODE, TREE_OPERAND, and TREE_TYPE.
Referenced by omp_parse_access_method().
This handles references that have had convert_from_reference called on them, and also those that haven't.
References integer_zerop(), TREE_CODE, TREE_OPERAND, and TREE_TYPE.
Referenced by omp_parse_access_method().
|
static |
References BASE_ARBITRARY_EXPR, BASE_COMPONENT_EXPR, BASE_DECL, DECL_P, expr, omp_parse_access_methods(), and omp_parse_structured_expr().
Referenced by omp_parse_array_expr(), and omp_parse_structured_expr().
|
static |
References COMPONENT_SELECTOR, expr, gcc_assert, NULL_TREE, omp_parse_component_selector(), omp_parse_structure_base(), STRUCTURE_BASE, TREE_CODE, and TREE_OPERAND.
Referenced by omp_parse_structure_base().