GCC Middle and Back End API Reference
omp_addr_tokenizer Namespace 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)
 

Enumeration Type Documentation

◆ access_method_kinds

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 

◆ structure_base_kinds

These are the kinds that a STRUCTURE_BASE or ARRAY_BASE (except
BASE_COMPONENT_EXPR) can represent.   
Enumerator
BASE_DECL 
BASE_COMPONENT_EXPR 
BASE_ARBITRARY_EXPR 

◆ token_type

The coarse type for an address token.  These can have subtypes for
ARRAY_BASE or STRUCTURE_BASE (structure_base_kinds) or ACCESS_METHOD
(access_method_kinds).   
Enumerator
ARRAY_BASE 
STRUCTURE_BASE 
COMPONENT_SELECTOR 
ACCESS_METHOD 

Function Documentation

◆ omp_access_chain_p()

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, ggc_alloc(), and i.

◆ omp_accessed_addr()

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, ggc_alloc(), and i.

◆ omp_parse_access_method()

◆ omp_parse_access_methods()

static bool omp_addr_tokenizer::omp_parse_access_methods ( vec< omp_addr_token * > & addr_tokens,
tree * expr0 )
static

◆ omp_parse_array_expr()

static bool omp_addr_tokenizer::omp_parse_array_expr ( vec< omp_addr_token * > & addr_tokens,
tree * expr0 )
static

◆ omp_parse_component_selector()

static bool omp_addr_tokenizer::omp_parse_component_selector ( tree * expr0)
static

◆ omp_parse_pointer()

static bool omp_addr_tokenizer::omp_parse_pointer ( tree * expr0,
bool * has_offset )
static

◆ omp_parse_ref()

static bool omp_addr_tokenizer::omp_parse_ref ( tree * expr0)
static
This handles references that have had convert_from_reference called on
them, and also those that haven't.   

References ggc_alloc(), integer_zerop(), TREE_CODE, TREE_OPERAND, and TREE_TYPE.

Referenced by omp_parse_access_method().

◆ omp_parse_structure_base()

static bool omp_addr_tokenizer::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

◆ omp_parse_structured_expr()

static bool omp_addr_tokenizer::omp_parse_structured_expr ( vec< omp_addr_token * > & addr_tokens,
tree * expr0 )
static