GCC Middle and Back End API Reference
|
#include <omp-general.h>
Public Member Functions | |
omp_addr_token (token_type, tree) | |
omp_addr_token (access_method_kinds, tree) | |
omp_addr_token (token_type, structure_base_kinds, tree) | |
Data Fields | ||
enum token_type | type | |
tree | expr | |
union { | ||
access_method_kinds access_kind | ||
structure_base_kinds structure_base_kind | ||
} | u | |
The struct that forms a single token of an address expression as parsed by omp_parse_expr. These are typically held in a vec after parsing.
omp_addr_tokenizer::omp_addr_token::omp_addr_token | ( | token_type | t, |
tree | e ) |
We scan an expression by recursive descent, and build a vector of "omp_addr_token *" pointers representing a "parsed" version of the expression. The grammar we use is something like this: expr0:: expr [section-access] expr:: structured-expr access-method | array-base access-method structured-expr:: structure-base component-selector arbitrary-expr:: (anything else) structure-base:: DECL access-method | structured-expr access-method | arbitrary-expr access-method array-base:: DECL | arbitrary-expr access-method:: DIRECT | REF | POINTER | REF_TO_POINTER | POINTER_OFFSET | REF_TO_POINTER_OFFSET | INDEXED_ARRAY | INDEXED_REF_TO_ARRAY | index-expr index-expr:: INDEX_EXPR access-method component-selector:: component-selector COMPONENT_REF | component-selector ARRAY_REF | COMPONENT_REF This tokenized form is then used both in parsing, for OpenMP clause expansion (for C and C++) and in gimplify.cc for sibling-list handling (for C, C++ and Fortran).
omp_addr_tokenizer::omp_addr_token::omp_addr_token | ( | access_method_kinds | k, |
tree | e ) |
References u.
omp_addr_tokenizer::omp_addr_token::omp_addr_token | ( | token_type | t, |
structure_base_kinds | k, | ||
tree | e ) |
References u.
access_method_kinds omp_addr_tokenizer::omp_addr_token::access_kind |
Referenced by omp_accumulate_sibling_list(), and omp_build_struct_sibling_lists().
tree omp_addr_tokenizer::omp_addr_token::expr |
Referenced by omp_accumulate_sibling_list().
structure_base_kinds omp_addr_tokenizer::omp_addr_token::structure_base_kind |
enum token_type omp_addr_tokenizer::omp_addr_token::type |
Referenced by omp_accumulate_sibling_list(), and omp_build_struct_sibling_lists().
union { ... } omp_addr_tokenizer::omp_addr_token::u |
Referenced by omp_accumulate_sibling_list(), omp_addr_token(), omp_addr_token(), and omp_build_struct_sibling_lists().