diff options
Diffstat (limited to 'gcc/tree-flow.h')
-rw-r--r-- | gcc/tree-flow.h | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 479996d..25d3e5a 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -138,7 +138,26 @@ enum mem_tag_kind { TYPE_TAG, /* This variable is a name memory tag (NMT). */ - NAME_TAG + NAME_TAG, + + /* This variable represents a structure field. */ + STRUCT_FIELD +}; +struct subvar; +typedef struct subvar *subvar_t; + +/* This structure represents a fake sub-variable for a structure field. */ + +struct subvar GTY(()) +{ + /* Fake variable name */ + tree var; + /* Offset inside structure. */ + HOST_WIDE_INT offset; + /* Size of field. */ + HOST_WIDE_INT size; + /* Next subvar for this structure. */ + subvar_t next; }; struct var_ann_d GTY(()) @@ -211,6 +230,8 @@ struct var_ann_d GTY(()) live at the same time and this can happen for each call to the dominator optimizer. */ tree current_def; + + subvar_t subvars; }; @@ -556,6 +577,9 @@ extern tree make_rename_temp (tree, const char *); extern void record_vars (tree); extern bool block_may_fallthru (tree block); +typedef tree tree_on_heap; +DEF_VEC_MALLOC_P (tree_on_heap); + /* In tree-ssa-alias.c */ extern void dump_may_aliases_for (FILE *, tree); extern void debug_may_aliases_for (tree); @@ -567,13 +591,15 @@ extern void dump_points_to_info_for (FILE *, tree); extern void debug_points_to_info_for (tree); extern bool may_be_aliased (tree); extern struct ptr_info_def *get_ptr_info (tree); - +static inline subvar_t get_subvars_for_var (tree); +static inline bool ref_contains_array_ref (tree); +extern tree okay_component_ref_for_subvars (tree, HOST_WIDE_INT *, + HOST_WIDE_INT *); +static inline bool var_can_have_subvars (tree); /* Call-back function for walk_use_def_chains(). At each reaching definition, a function with this prototype is called. */ typedef bool (*walk_use_def_chains_fn) (tree, tree, void *); -typedef tree tree_on_heap; -DEF_VEC_MALLOC_P (tree_on_heap); /* In tree-ssa.c */ extern void init_tree_ssa (void); |