GCC Middle and Back End API Reference
gimple-ssa-pta-constraints.cc File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "rtl.h"
#include "tree.h"
#include "gimple.h"
#include "alloc-pool.h"
#include "tree-pass.h"
#include "ssa.h"
#include "cgraph.h"
#include "tree-pretty-print.h"
#include "diagnostic-core.h"
#include "fold-const.h"
#include "stor-layout.h"
#include "stmt.h"
#include "gimple-iterator.h"
#include "tree-into-ssa.h"
#include "tree-dfa.h"
#include "gimple-walk.h"
#include "varasm.h"
#include "stringpool.h"
#include "attribs.h"
#include "tree-ssa.h"
#include "tree-cfg.h"
#include "gimple-range.h"
#include "ipa-modref-tree.h"
#include "ipa-modref.h"
#include "attr-fnspec.h"
#include "tree-ssa-structalias.h"
#include "gimple-ssa-pta-constraints.h"
Include dependency graph for gimple-ssa-pta-constraints.cc:

Data Structures

struct  fieldoff

Namespaces

namespace  pointer_analysis

Typedefs

typedef struct fieldoff fieldoff_s

Functions

static unsigned int create_variable_info_for (tree, const char *, bool)
static bool type_can_have_subvars (const_tree)
static void make_param_constraints (varinfo_t)
static varinfo_t get_call_vi (gcall *call)
static varinfo_t get_call_use_vi (gcall *call)
static varinfo_t get_call_clobber_vi (gcall *call)
static void get_constraint_for_1 (tree, vec< ce_s > *, bool, bool)
static void get_constraint_for (tree, vec< ce_s > *)
static void get_constraint_for_rhs (tree, vec< ce_s > *)
static void do_deref (vec< ce_s > *)
static constraint_t new_constraint (const struct constraint_expr lhs, const struct constraint_expr rhs)
static void insert_vi_for_tree (tree t, varinfo_t vi)
static const char * alias_get_name (tree decl)
static varinfo_t get_vi_for_tree (tree t)
static struct constraint_expr new_scalar_tmp_constraint_exp (const char *name, bool add_id)
static void get_constraint_for_ssa_var (tree t, vec< ce_s > *results, bool address_p)
static void process_constraint (constraint_t t)
static unsigned HOST_WIDE_INT bitpos_of_field (const tree fdecl)
static void get_constraint_for_ptr_offset (tree ptr, tree offset, vec< ce_s > *results)
static void get_constraint_for_component_ref (tree t, vec< ce_s > *results, bool address_p, bool lhs_p)
static void get_constraint_for_address_of (tree t, vec< ce_s > *results)
static void process_all_all_constraints (const vec< ce_s > &lhsc, const vec< ce_s > &rhsc)
static void do_structure_copy (tree lhsop, tree rhsop)
static void make_constraints_to (unsigned id, const vec< ce_s > &rhsc)
static void make_constraint_to (unsigned id, tree op)
static void make_constraint_from (varinfo_t vi, int from)
static void make_copy_constraint (varinfo_t vi, int from)
static void make_escape_constraint (tree op)
static void make_indirect_escape_constraint (varinfo_t vi)
static void make_transitive_closure_constraints (varinfo_t vi)
static void make_any_offset_constraints (varinfo_t vi)
static tree build_fake_var_decl (tree type)
static varinfo_t make_heapvar (const char *name, bool add_id)
static varinfo_t make_constraint_from_restrict (varinfo_t lhs, const char *name, bool add_id)
static varinfo_t make_constraint_from_global_restrict (varinfo_t lhs, const char *name, bool add_id)
static struct constraint_expr get_function_part_constraint (varinfo_t fi, unsigned part)
static void handle_call_arg (gcall *stmt, tree arg, vec< ce_s > *results, int flags, int callescape_id, bool writes_global_memory)
static void handle_rhs_call (gcall *stmt, vec< ce_s > *results, int implicit_eaf_flags, bool writes_global_memory, bool reads_global_memory)
static void handle_lhs_call (gcall *stmt, tree lhs, int flags, vec< ce_s > &rhsc, tree fndecl)
static void find_func_aliases_for_call_arg (varinfo_t fi, unsigned index, tree arg)
static bool find_func_aliases_for_builtin_call (struct function *fn, gcall *t)
static void find_func_aliases_for_call (struct function *fn, gcall *t)
static void find_func_aliases (struct function *fn, gimple *origt)
static void process_ipa_clobber (varinfo_t fi, tree ptr)
static void find_func_clobbers (struct function *fn, gimple *origt)
static int fieldoff_compare (const void *pa, const void *pb)
static void sort_fieldstack (vec< fieldoff_s > &fieldstack)
static bool var_can_have_subvars (const_tree v)
static bool type_must_have_pointers (tree type)
static bool field_must_have_pointers (tree t)
static bool push_fields_onto_fieldstack (tree type, vec< fieldoff_s > *fieldstack, unsigned HOST_WIDE_INT offset)
static unsigned int count_num_arguments (tree decl, bool *is_varargs)
static varinfo_t create_function_info_for (tree decl, const char *name, bool add_id, bool nonlocal_p)
static bool check_for_overlaps (const vec< fieldoff_s > &fieldstack)
static varinfo_t create_variable_info_for_1 (tree decl, const char *name, bool add_id, bool handle_param, bitmap handled_struct_type, bool add_restrict=false)
static void intra_create_variable_infos (struct function *fn)
static void init_base_vars (void)
static bool associate_varinfo_to_alias (struct cgraph_node *node, void *data)
static bool refered_from_nonlocal_fn (struct cgraph_node *node, void *data)
static bool refered_from_nonlocal_var (struct varpool_node *node, void *data)
static void ipa_create_function_infos (void)
static void ipa_create_global_variable_infos (void)
varinfo_t pointer_analysis::lookup_vi_for_tree (tree t)
varinfo_t pointer_analysis::lookup_call_use_vi (gcall *call)
varinfo_t pointer_analysis::lookup_call_clobber_vi (gcall *call)
varinfo_t pointer_analysis::get_fi_for_callee (gcall *call)
void pointer_analysis::init_constraint_builder (void)
void pointer_analysis::delete_constraint_builder (void)
void pointer_analysis::intra_build_constraints (void)
void pointer_analysis::ipa_build_constraints (void)

Variables

static hash_map< tree, varinfo_t > * vi_for_tree
static hash_map< gimple *, varinfo_t > * call_stmt_vars
static object_allocator< constraintconstraint_pool ("Constraint pool")
struct obstack fake_var_decl_obstack

Typedef Documentation

◆ fieldoff_s

typedef struct fieldoff fieldoff_s

Function Documentation

◆ alias_get_name()

◆ associate_varinfo_to_alias()

bool associate_varinfo_to_alias ( struct cgraph_node * node,
void * data )
static
Associate node with varinfo DATA.  Worker for
cgraph_for_symbol_thunks_and_aliases.   

References symtab_node::alias, symtab_node::analyzed, symtab_node::decl, symtab_node::ifunc_resolver, cgraph_node::inlined_to, insert_vi_for_tree(), and cgraph_node::thunk.

Referenced by ipa_create_function_infos().

◆ bitpos_of_field()

unsigned HOST_WIDE_INT bitpos_of_field ( const tree fdecl)
static
Return the position, in bits, of FIELD_DECL from the beginning of its
structure.   

References DECL_FIELD_BIT_OFFSET, DECL_FIELD_OFFSET, tree_fits_uhwi_p(), and tree_to_uhwi().

Referenced by push_fields_onto_fieldstack().

◆ build_fake_var_decl()

tree build_fake_var_decl ( tree type)
static

◆ check_for_overlaps()

bool check_for_overlaps ( const vec< fieldoff_s > & fieldstack)
static
Return true if FIELDSTACK contains fields that overlap.
FIELDSTACK is assumed to be sorted by offset.   

References FOR_EACH_VEC_ELT, i, NULL, and fieldoff::offset.

Referenced by create_variable_info_for_1().

◆ count_num_arguments()

unsigned int count_num_arguments ( tree decl,
bool * is_varargs )
static
Count the number of arguments DECL has, and set IS_VARARGS to true
if it is a varargs function.   

References DECL_ARGUMENTS, DECL_CHAIN, TREE_CHAIN, TREE_TYPE, TREE_VALUE, TYPE_ARG_TYPES, and void_type_node.

Referenced by create_function_info_for().

◆ create_function_info_for()

varinfo_t create_function_info_for ( tree decl,
const char * name,
bool add_id,
bool nonlocal_p )
static

◆ create_variable_info_for()

◆ create_variable_info_for_1()

varinfo_t create_variable_info_for_1 ( tree decl,
const char * name,
bool add_id,
bool handle_param,
bitmap handled_struct_type,
bool add_restrict = false )
static
Create a varinfo structure for NAME and DECL, and add it to VARMAP.
This will also create any varinfo structures necessary for fields
of DECL.  DECL is a function parameter if HANDLE_PARAM is set.
HANDLED_STRUCT_TYPE is used to register struct types reached by following
restrict pointers.  This is needed to prevent infinite recursion.
If ADD_RESTRICT, pretend that the pointer NAME is restrict even if DECL
does not advertise it.   

References bitmap_bit_p, bitmap_clear_bit(), bitmap_set_bit, build_fake_var_decl(), check_for_overlaps(), create_variable_info_for_1(), DECL_EXTERNAL, DECL_P, DECL_SIZE, dump_file, free(), pointer_analysis::variable_info::fullsize, ggc_strdup, fieldoff::has_unknown_size, pointer_analysis::variable_info::head, HOST_WIDE_INT_PRINT_DEC, i, pointer_analysis::variable_info::id, pointer_analysis::in_ipa_mode, insert_vi_for_tree(), pointer_analysis::variable_info::is_full_var, is_global_var(), pointer_analysis::variable_info::is_restrict_var, pointer_analysis::variable_info::is_unknown_size_var, make_constraint_from(), make_param_constraints(), fieldoff::may_have_pointers, pointer_analysis::variable_info::may_have_pointers, pointer_analysis::variable_info::name, pointer_analysis::new_var_info(), pointer_analysis::variable_info::next, NULL, fieldoff::offset, pointer_analysis::variable_info::offset, fieldoff::only_restrict_pointers, pointer_analysis::variable_info::only_restrict_pointers, POINTER_TYPE_P, push_fields_onto_fieldstack(), fieldoff::restrict_pointed_type, fieldoff::size, pointer_analysis::variable_info::size, sort_fieldstack(), tree_fits_uhwi_p(), tree_to_uhwi(), TREE_TYPE, type_contains_placeholder_p(), TYPE_RESTRICT, TYPE_SIZE, TYPE_UID, pointer_analysis::use_field_sensitive, var_can_have_subvars(), and pointer_analysis::vi_next().

Referenced by create_variable_info_for(), create_variable_info_for_1(), and intra_create_variable_infos().

◆ do_deref()

void do_deref ( vec< ce_s > * constraints)
static
Dereference the constraint expression CONS, and return the result.
DEREF (ADDRESSOF) = SCALAR
DEREF (SCALAR) = DEREF
DEREF (DEREF) = (temp = DEREF1; result = DEREF (temp))
This is needed so that we can handle dereferencing DEREF constraints.   

References pointer_analysis::ADDRESSOF, pointer_analysis::constraints, pointer_analysis::DEREF, FOR_EACH_VEC_ELT, gcc_unreachable, i, new_constraint(), new_scalar_tmp_constraint_exp(), process_constraint(), SCALAR, and pointer_analysis::constraint_expr::var.

Referenced by find_func_aliases_for_builtin_call(), find_func_aliases_for_call(), get_constraint_for_1(), and get_constraint_for_component_ref().

◆ do_structure_copy()

◆ field_must_have_pointers()

bool field_must_have_pointers ( tree t)
static

◆ fieldoff_compare()

int fieldoff_compare ( const void * pa,
const void * pb )
static
qsort comparison function for two fieldoff's PA and PB.   

References fieldoff::offset, and fieldoff::size.

Referenced by sort_fieldstack().

◆ find_func_aliases()

void find_func_aliases ( struct function * fn,
gimple * origt )
static
Walk statement T setting up aliasing constraints according to the
references found in T.  This function is the main part of the
constraint builder.  AI points to auxiliary alias information used
when building alias sets and computing alias grouping heuristics.   

References AGGREGATE_TYPE_P, as_a(), CONVERT_EXPR_CODE_P, function::decl, DECL_P, do_structure_copy(), dyn_cast(), pointer_analysis::escaped_id, pointer_analysis::escaped_return_id, pointer_analysis::fi_result, find_func_aliases_for_call(), FOR_EACH_VEC_ELT, get_base_address(), get_constraint_for(), get_constraint_for_address_of(), get_constraint_for_ptr_offset(), get_constraint_for_rhs(), get_function_part_constraint(), get_vi_for_tree(), gimple_asm_input_op(), gimple_asm_ninputs(), gimple_asm_noutputs(), gimple_asm_output_op(), gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_assign_rhs3(), gimple_assign_rhs_code(), gimple_assign_single_p(), gimple_num_ops(), gimple_op(), gimple_phi_arg_def(), gimple_phi_num_args(), gimple_phi_result(), gimple_return_retval(), i, pointer_analysis::in_ipa_mode, is_gimple_assign(), is_gimple_call(), pointer_analysis::variable_info::is_global_var, pointer_analysis::variable_info::is_ipa_escape_point, pointer_analysis::lookup_vi_for_tree(), make_constraint_to(), make_constraints_to(), make_escape_constraint(), new_constraint(), pointer_analysis::nonlocal_id, NULL, NULL_TREE, pointer_analysis::constraint_expr::offset, parse_input_constraint(), parse_output_constraint(), process_all_all_constraints(), process_constraint(), SCALAR, TREE_CLOBBER_P, TREE_CODE, TREE_PURPOSE, TREE_STRING_POINTER, TREE_TYPE, TREE_VALUE, truth_value_p(), pointer_analysis::constraint_expr::type, and pointer_analysis::constraint_expr::var.

Referenced by pointer_analysis::intra_build_constraints(), and pointer_analysis::ipa_build_constraints().

◆ find_func_aliases_for_builtin_call()

bool find_func_aliases_for_builtin_call ( struct function * fn,
gcall * t )
static
Create constraints for the builtin call T.  Return true if the call
was handled, otherwise false.   

References pointer_analysis::ADDRESSOF, pointer_analysis::anything_id, BUILT_IN_NORMAL, CASE_BUILT_IN_TM_LOAD, CASE_BUILT_IN_TM_STORE, function::decl, pointer_analysis::variable_info::decl, DECL_EXTERNAL, DECL_FUNCTION_CODE(), do_deref(), ERF_NOALIAS, pointer_analysis::escaped_id, pointer_analysis::fi_result, pointer_analysis::fi_static_chain, find_func_aliases_for_call_arg(), pointer_analysis::fndecl_maybe_in_other_partition(), FOR_EACH_VEC_ELT, gcc_assert, gcc_unreachable, get_call_clobber_vi(), get_call_use_vi(), get_constraint_for(), get_constraint_for_ptr_offset(), get_function_part_constraint(), pointer_analysis::get_varinfo(), get_vi_for_tree(), gimple_call_arg(), gimple_call_builtin_p(), gimple_call_fndecl(), gimple_call_lhs(), gimple_call_return_flags(), handle_lhs_call(), i, pointer_analysis::variable_info::id, pointer_analysis::in_ipa_mode, pointer_analysis::integer_id, integer_zerop(), pointer_analysis::variable_info::is_global_var, pointer_analysis::variable_info::is_heap_var, pointer_analysis::lookup_vi_for_tree(), make_any_offset_constraints(), make_constraint_from(), make_constraint_to(), make_heapvar(), new_constraint(), pointer_analysis::nonlocal_id, pointer_analysis::nothing_id, NULL, NULL_TREE, pointer_analysis::constraint_expr::offset, process_all_all_constraints(), process_constraint(), SCALAR, TREE_CODE, TREE_OPERAND, pointer_analysis::constraint_expr::type, and pointer_analysis::constraint_expr::var.

Referenced by find_func_aliases_for_call().

◆ find_func_aliases_for_call()

◆ find_func_aliases_for_call_arg()

void find_func_aliases_for_call_arg ( varinfo_t fi,
unsigned index,
tree arg )
static
Create constraints for assigning call argument ARG to the incoming parameter
INDEX of function FI.   

References pointer_analysis::fi_parm_base, FOR_EACH_VEC_ELT, get_constraint_for_rhs(), get_function_part_constraint(), new_constraint(), and process_constraint().

Referenced by find_func_aliases_for_builtin_call(), and find_func_aliases_for_call().

◆ find_func_clobbers()

void find_func_clobbers ( struct function * fn,
gimple * origt )
static

◆ get_call_clobber_vi()

varinfo_t get_call_clobber_vi ( gcall * call)
static
Lookup or create the variable for the call statement CALL representing
the clobbers.   

References get_call_vi(), and pointer_analysis::vi_next().

Referenced by find_func_aliases_for_builtin_call(), and handle_call_arg().

◆ get_call_use_vi()

varinfo_t get_call_use_vi ( gcall * call)
static
Lookup or create the variable for the call statement CALL representing
the uses.   

References get_call_vi().

Referenced by find_func_aliases_for_builtin_call(), handle_call_arg(), and handle_rhs_call().

◆ get_call_vi()

◆ get_constraint_for()

void get_constraint_for ( tree t,
vec< ce_s > * results )
static

◆ get_constraint_for_1()

◆ get_constraint_for_address_of()

void get_constraint_for_address_of ( tree t,
vec< ce_s > * results )
static
Given a tree T, return the constraint expression for taking the
address of it.   

References pointer_analysis::ADDRESSOF, pointer_analysis::DEREF, FOR_EACH_VEC_ELT, get_constraint_for_1(), i, and SCALAR.

Referenced by find_func_aliases(), find_func_aliases_for_call(), find_func_clobbers(), get_constraint_for_1(), and handle_rhs_call().

◆ get_constraint_for_component_ref()

◆ get_constraint_for_ptr_offset()

◆ get_constraint_for_rhs()

void get_constraint_for_rhs ( tree t,
vec< ce_s > * results )
static
Given a gimple tree T, return the constraint expression vector for it
to be used as the rhs of a constraint.   

References gcc_assert, and get_constraint_for_1().

Referenced by do_structure_copy(), find_func_aliases(), find_func_aliases_for_call_arg(), get_constraint_for_ptr_offset(), make_constraint_to(), and process_ipa_clobber().

◆ get_constraint_for_ssa_var()

◆ get_function_part_constraint()

◆ get_vi_for_tree()

◆ handle_call_arg()

◆ handle_lhs_call()

◆ handle_rhs_call()

void handle_rhs_call ( gcall * stmt,
vec< ce_s > * results,
int implicit_eaf_flags,
bool writes_global_memory,
bool reads_global_memory )
static

◆ init_base_vars()

◆ insert_vi_for_tree()

void insert_vi_for_tree ( tree t,
varinfo_t vi )
static

◆ intra_create_variable_infos()

◆ ipa_create_function_infos()

◆ ipa_create_global_variable_infos()

◆ make_any_offset_constraints()

void make_any_offset_constraints ( varinfo_t vi)
static
Add constraints to that the solution of VI has all subvariables added.   

References pointer_analysis::variable_info::id, new_constraint(), process_constraint(), SCALAR, and UNKNOWN_OFFSET.

Referenced by find_func_aliases_for_builtin_call(), and handle_call_arg().

◆ make_constraint_from()

◆ make_constraint_from_global_restrict()

varinfo_t make_constraint_from_global_restrict ( varinfo_t lhs,
const char * name,
bool add_id )
static
Create a new artificial heap variable with NAME and make a
constraint from it to LHS.  Set flags according to a tag used
for tracking restrict pointers and make the artificial heap
point to global memory.   

References make_constraint_from_restrict(), make_copy_constraint(), and pointer_analysis::nonlocal_id.

Referenced by create_variable_info_for().

◆ make_constraint_from_restrict()

varinfo_t make_constraint_from_restrict ( varinfo_t lhs,
const char * name,
bool add_id )
static
Create a new artificial heap variable with NAME and make a
constraint from it to LHS.  Set flags according to a tag used
for tracking restrict pointers.   

References pointer_analysis::variable_info::id, pointer_analysis::variable_info::is_global_var, pointer_analysis::variable_info::is_restrict_var, make_constraint_from(), make_heapvar(), and pointer_analysis::variable_info::may_have_pointers.

Referenced by make_constraint_from_global_restrict().

◆ make_constraint_to()

void make_constraint_to ( unsigned id,
tree op )
static

◆ make_constraints_to()

void make_constraints_to ( unsigned id,
const vec< ce_s > & rhsc )
static
Create constraints ID = { rhsc }.   

References FOR_EACH_VEC_ELT, new_constraint(), process_constraint(), and SCALAR.

Referenced by find_func_aliases(), handle_rhs_call(), and make_constraint_to().

◆ make_copy_constraint()

◆ make_escape_constraint()

void make_escape_constraint ( tree op)
static
Make constraints necessary to make OP escape.   

References pointer_analysis::escaped_id, and make_constraint_to().

Referenced by find_func_aliases(), and handle_call_arg().

◆ make_heapvar()

◆ make_indirect_escape_constraint()

void make_indirect_escape_constraint ( varinfo_t vi)
static
Make constraint necessary to make all indirect references
from VI escape.   

References pointer_analysis::DEREF, pointer_analysis::escaped_id, pointer_analysis::variable_info::id, new_constraint(), process_constraint(), SCALAR, and UNKNOWN_OFFSET.

Referenced by handle_call_arg().

◆ make_param_constraints()

◆ make_transitive_closure_constraints()

void make_transitive_closure_constraints ( varinfo_t vi)
static
Add constraints to that the solution of VI is transitively closed.   

References pointer_analysis::DEREF, pointer_analysis::variable_info::id, new_constraint(), process_constraint(), SCALAR, and UNKNOWN_OFFSET.

Referenced by handle_call_arg().

◆ new_constraint()

◆ new_scalar_tmp_constraint_exp()

◆ process_all_all_constraints()

void process_all_all_constraints ( const vec< ce_s > & lhsc,
const vec< ce_s > & rhsc )
static
Efficiently generates constraints from all entries in *RHSC to all
entries in *LHSC.   

References FOR_EACH_VEC_ELT, i, new_constraint(), new_scalar_tmp_constraint_exp(), and process_constraint().

Referenced by do_structure_copy(), find_func_aliases(), find_func_aliases_for_builtin_call(), and handle_lhs_call().

◆ process_constraint()

◆ process_ipa_clobber()

void process_ipa_clobber ( varinfo_t fi,
tree ptr )
static
Create a constraint adding to the clobber set of FI the memory
pointed to by PTR.   

References pointer_analysis::fi_clobbers, FOR_EACH_VEC_ELT, get_constraint_for_rhs(), get_function_part_constraint(), i, new_constraint(), process_constraint(), and vNULL.

Referenced by find_func_clobbers().

◆ push_fields_onto_fieldstack()

bool push_fields_onto_fieldstack ( tree type,
vec< fieldoff_s > * fieldstack,
unsigned HOST_WIDE_INT offset )
static
Given a TYPE, and a vector of field offsets FIELDSTACK, push all
the fields of TYPE onto fieldstack, recording their offsets along
the way.

OFFSET is used to keep track of the offset in this entire
structure, rather than just the immediately containing structure.
Returns false if the caller is supposed to handle the field we
recursed for.   

References bitpos_of_field(), DECL_CHAIN, DECL_SIZE, empty_p(), field_must_have_pointers(), field_type(), fieldoff::has_unknown_size, integer_zerop(), NULL, NULL_TREE, fieldoff::offset, POINTER_TYPE_P, push_fields_onto_fieldstack(), TREE_CODE, tree_fits_uhwi_p(), tree_to_uhwi(), TREE_TYPE, TYPE_FIELDS, TYPE_RESTRICT, and var_can_have_subvars().

Referenced by create_variable_info_for_1(), and push_fields_onto_fieldstack().

◆ refered_from_nonlocal_fn()

bool refered_from_nonlocal_fn ( struct cgraph_node * node,
void * data )
static
Compute whether node is refered to non-locally.  Worker for
cgraph_for_symbol_thunks_and_aliases.   

References symtab_node::decl, DECL_ATTRIBUTES, DECL_EXTERNAL, symtab_node::force_output, lookup_attribute(), TREE_PUBLIC, and symtab_node::used_from_other_partition.

Referenced by ipa_create_function_infos().

◆ refered_from_nonlocal_var()

bool refered_from_nonlocal_var ( struct varpool_node * node,
void * data )
static

◆ sort_fieldstack()

void sort_fieldstack ( vec< fieldoff_s > & fieldstack)
static
Sort a fieldstack according to the field offset and sizes.   

References fieldoff_compare().

Referenced by create_variable_info_for_1().

◆ type_can_have_subvars()

bool type_can_have_subvars ( const_tree t)
inlinestatic
Return true if T is a type that can have subvars.   

References TREE_CODE.

Referenced by get_constraint_for_1(), and var_can_have_subvars().

◆ type_must_have_pointers()

bool type_must_have_pointers ( tree type)
static
Return true if T is a type that does contain pointers.   

References FUNC_OR_METHOD_TYPE_P, POINTER_TYPE_P, TREE_CODE, TREE_TYPE, and type_must_have_pointers().

Referenced by field_must_have_pointers(), and type_must_have_pointers().

◆ var_can_have_subvars()

bool var_can_have_subvars ( const_tree v)
inlinestatic
Return true if V is a tree that we can have subvars for.
Normally, this is any aggregate type.  Also complex
types which are not gimple registers can have subvars.   

References DECL_P, TREE_THIS_VOLATILE, TREE_TYPE, and type_can_have_subvars().

Referenced by create_variable_info_for_1(), and push_fields_onto_fieldstack().

Variable Documentation

◆ call_stmt_vars

hash_map<gimple *, varinfo_t>* call_stmt_vars
static
A map mapping call statements to per-stmt variables for uses
and clobbers specific to the call.   

Referenced by pointer_analysis::delete_constraint_builder(), get_call_vi(), pointer_analysis::init_constraint_builder(), and pointer_analysis::lookup_call_use_vi().

◆ constraint_pool

object_allocator< constraint > constraint_pool("Constraint pool") ( "Constraint pool" )
static
Allocator for 'constraints' vector.   

Referenced by pointer_analysis::delete_constraint_builder(), and new_constraint().

◆ fake_var_decl_obstack

struct obstack fake_var_decl_obstack

◆ vi_for_tree