|
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 omp_addr_tokenizer::ACCESS_METHOD, expr, type, and u.
| omp_addr_tokenizer::omp_addr_token::omp_addr_token | ( | token_type | t, |
| structure_base_kinds | k, | ||
| tree | e ) |
| 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(), omp_addr_token(), omp_addr_token(), and omp_addr_token().
| structure_base_kinds omp_addr_tokenizer::omp_addr_token::structure_base_kind |
| enum token_type omp_addr_tokenizer::omp_addr_token::type |
| 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().