|
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 void | omp_parse_access_method (tree *expr0, enum access_method_kinds *kind) |
| static void | 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.
Referenced by gimplify_scan_omp_clauses().
| 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, omp_parse_pointer(), omp_parse_ref(), STRIP_NOPS, TREE_CODE, and TREE_OPERAND.
Referenced by omp_parse_access_methods().
|
static |
References omp_parse_access_method(), omp_parse_access_methods(), and TREE_CODE.
Referenced by omp_parse_access_methods(), omp_parse_expr(), and omp_parse_structure_base().
|
static |
References ARRAY_BASE, omp_parse_structure_base(), and s_kind.
Referenced by omp_parse_expr().
References NULL_TREE, TREE_CODE, TREE_OPERAND, and TREE_TYPE.
Referenced by omp_parse_structured_expr().
References 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, omp_parse_access_methods(), and omp_parse_structured_expr().
Referenced by omp_parse_array_expr(), and omp_parse_structured_expr().
|
static |
References COMPONENT_SELECTOR, gcc_assert, NULL_TREE, omp_parse_component_selector(), omp_parse_structure_base(), STRUCTURE_BASE, TREE_CODE, and TREE_OPERAND.
Referenced by omp_parse_expr(), and omp_parse_structure_base().