GCC Middle and Back End API Reference
omp_addr_tokenizer::omp_addr_token Struct 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 
 

Detailed Description

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.   

Constructor & Destructor Documentation

◆ omp_addr_token() [1/3]

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_token() [2/3]

omp_addr_tokenizer::omp_addr_token::omp_addr_token ( access_method_kinds k,
tree e )

References ggc_alloc(), and u.

◆ omp_addr_token() [3/3]

omp_addr_tokenizer::omp_addr_token::omp_addr_token ( token_type t,
structure_base_kinds k,
tree e )

References ggc_alloc(), and u.

Field Documentation

◆ access_kind

access_method_kinds omp_addr_tokenizer::omp_addr_token::access_kind

◆ expr

tree omp_addr_tokenizer::omp_addr_token::expr

◆ structure_base_kind

structure_base_kinds omp_addr_tokenizer::omp_addr_token::structure_base_kind

◆ type

enum token_type omp_addr_tokenizer::omp_addr_token::type

◆ [union]

union { ... } omp_addr_tokenizer::omp_addr_token::u

Referenced by omp_addr_token(), and omp_addr_token().


The documentation for this struct was generated from the following files: