GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | pt_solution |
struct | ao_ref_s |
Typedefs | |
typedef struct ao_ref_s | ao_ref |
Variables | |
struct pt_solution | ipa_escaped_pt |
Simplified and cached information about a memory reference tree. Used by the alias-oracle internally and externally in alternate interfaces.
alias_set_type ao_ref_alias_set | ( | ao_ref * | ) |
unsigned int compute_may_aliases | ( | void | ) |
Compute points-to information for every SSA_NAME pointer in the current function and compute the transitive closure of escaped variables to re-initialize the call-clobber states of local variables.
But still dump what we have remaining it.
For each pointer P_i, determine the sets of variables that P_i may point-to. Compute the reachability set of escaped and call-used variables. Debugging dumps.
Deallocate memory used by aliasing data structures and the internal points-to solution.
void debug | ( | pt_solution & | ref | ) |
void debug | ( | pt_solution * | ptr | ) |
void debug_alias_info | ( | void | ) |
Dump alias information on stderr.
void debug_points_to_info_for | ( | tree | ) |
void dump_alias_info | ( | FILE * | ) |
void dump_alias_stats | ( | FILE * | ) |
void dump_points_to_info_for | ( | FILE * | , |
tree | |||
) |
void dump_points_to_solution | ( | FILE * | , |
struct pt_solution * | |||
) |
void dump_pta_stats | ( | FILE * | ) |
tree get_continuation_for_phi | ( | gimple | phi, |
ao_ref * | ref, | ||
unsigned int * | cnt, | ||
bitmap * | visited, | ||
bool | abort_on_visited | ||
) |
Starting from a PHI node for the virtual operand of the memory reference REF find a continuation virtual operand that allows to continue walking statements dominating PHI skipping only statements that cannot possibly clobber REF. Increments *CNT for each alias disambiguation done. Returns NULL_TREE if no suitable virtual operand can be found.
Through a single-argument PHI we can simply look through.
For two or more arguments try to pairwise skip non-aliasing code until we hit the phi argument definition that dominates the other one.
Find a candidate for the virtual operand which definition dominates those of all others.
Then pairwise reduce against the found candidate.
References BITMAP_ALLOC, bitmap_set_bit, gimple_nop_p(), gimple_phi_arg_def(), gimple_phi_num_args(), gimple_vuse(), NULL, SSA_NAME_DEF_STMT, SSA_NAME_VERSION, stmt_may_clobber_ref_p_1(), visited, and walk_aliased_vdefs_1().
Referenced by stmt_kills_ref_p_1().
bool pt_solution_empty_p | ( | struct pt_solution * | ) |
bool pt_solution_includes | ( | struct pt_solution * | , |
const_tree | |||
) |
bool pt_solution_includes_global | ( | struct pt_solution * | ) |
Referenced by debug_solution_for_var().
void pt_solution_reset | ( | struct pt_solution * | ) |
Referenced by set_ptr_info_alignment().
void pt_solution_set | ( | struct pt_solution * | , |
bitmap | , | ||
bool | |||
) |
void pt_solution_set_var | ( | struct pt_solution * | , |
tree | |||
) |
bool pt_solution_singleton_p | ( | struct pt_solution * | , |
unsigned * | |||
) |
bool pt_solutions_intersect | ( | struct pt_solution * | , |
struct pt_solution * | |||
) |
|
inlinestatic |
Return true, if the two ranges [POS1, SIZE1] and [POS2, SIZE2] overlap. SIZE1 and/or SIZE2 can be (unsigned)-1 in which case the range is open-ended. Otherwise return false.
Referenced by fold_builtin_logarithm().
unsigned int walk_aliased_vdefs | ( | ao_ref * | , |
tree | , | ||
bool(*)(ao_ref *, tree, void *) | , | ||
void * | , | ||
bitmap * | |||
) |
Referenced by load_from_unmodified_param().
void* walk_non_aliased_vuses | ( | ao_ref * | , |
tree | , | ||
void * | *)(ao_ref *, tree, unsigned int, void *, | ||
void * | *)(ao_ref *, tree, void *, | ||
void * | |||
) |
struct pt_solution ipa_escaped_pt |
IPA PTA solutions for ESCAPED.