GCC Middle and Back End API Reference
access Struct Reference
Collaboration diagram for access:

Data Fields

HOST_WIDE_INT offset
 
HOST_WIDE_INT size
 
tree base
 
tree expr
 
tree type
 
gimplestmt
 
struct accessnext_grp
 
struct accessgroup_representative
 
struct accessparent
 
struct accessfirst_child
 
struct accessnext_sibling
 
struct assign_linkfirst_rhs_link
 
struct assign_linklast_rhs_link
 
struct assign_linkfirst_lhs_link
 
struct assign_linklast_lhs_link
 
struct accessnext_rhs_queued
 
struct accessnext_lhs_queued
 
tree replacement_decl
 
unsigned reverse: 1
 
unsigned write: 1
 
unsigned grp_rhs_queued: 1
 
unsigned grp_lhs_queued: 1
 
unsigned grp_write: 1
 
unsigned grp_read: 1
 
unsigned grp_assignment_read: 1
 
unsigned grp_assignment_write: 1
 
unsigned grp_scalar_read: 1
 
unsigned grp_scalar_write: 1
 
unsigned grp_total_scalarization: 1
 
unsigned grp_hint: 1
 
unsigned grp_covered: 1
 
unsigned grp_unscalarizable_region: 1
 
unsigned grp_unscalarized_data: 1
 
unsigned grp_same_access_path: 1
 
unsigned grp_partial_lhs: 1
 
unsigned grp_to_be_replaced: 1
 
unsigned grp_to_be_debug_replaced: 1
 
unsigned grp_no_warning: 1
 
unsigned grp_result_of_prop_from_lhs: 1
 

Detailed Description

ACCESS represents each access to an aggregate variable (as a whole or a
part).  It can also represent a group of accesses that refer to exactly the
same fragment of an aggregate (i.e. those that have exactly the same offset
and size).  Such representatives for a single aggregate, once determined,
are linked in a linked list and have the group fields set.

Moreover, when doing intraprocedural SRA, a tree is built from those
representatives (by the means of first_child and next_sibling pointers), in
which all items in a subtree are "within" the root, i.e. their offset is
greater or equal to offset of the root and offset+size is smaller or equal
to offset+size of the root.  Children of an access are sorted by offset.

Note that accesses to parts of vector and complex number types always
represented by an access to the whole complex number or a vector.  It is a
duty of the modifying functions to replace them appropriately.   

Field Documentation

◆ base

◆ expr

◆ first_child

◆ first_lhs_link

◆ first_rhs_link

◆ group_representative

struct access* access::group_representative

◆ grp_assignment_read

unsigned access::grp_assignment_read

◆ grp_assignment_write

unsigned access::grp_assignment_write

◆ grp_covered

◆ grp_hint

◆ grp_lhs_queued

unsigned access::grp_lhs_queued

◆ grp_no_warning

◆ grp_partial_lhs

◆ grp_read

◆ grp_result_of_prop_from_lhs

unsigned access::grp_result_of_prop_from_lhs

◆ grp_rhs_queued

unsigned access::grp_rhs_queued

◆ grp_same_access_path

◆ grp_scalar_read

unsigned access::grp_scalar_read

◆ grp_scalar_write

unsigned access::grp_scalar_write

◆ grp_to_be_debug_replaced

◆ grp_to_be_replaced

◆ grp_total_scalarization

◆ grp_unscalarizable_region

◆ grp_unscalarized_data

unsigned access::grp_unscalarized_data

◆ grp_write

◆ last_lhs_link

struct assign_link * access::last_lhs_link

◆ last_rhs_link

struct assign_link * access::last_rhs_link

◆ next_grp

◆ next_lhs_queued

struct access * access::next_lhs_queued

◆ next_rhs_queued

struct access* access::next_rhs_queued

◆ next_sibling

◆ offset

◆ parent

◆ replacement_decl

◆ reverse

◆ size

◆ stmt

◆ type

◆ write


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