GCC Middle and Back End API Reference
|
#include <store.h>
Public Types | |
typedef hash_map< const region *, binding_cluster * > | cluster_map_t |
Public Member Functions | |
store () | |
store (const store &other) | |
~store () | |
store & | operator= (const store &other) |
bool | operator== (const store &other) const |
bool | operator!= (const store &other) const |
hashval_t | hash () const |
void | dump_to_pp (pretty_printer *pp, bool summarize, bool multiline, store_manager *mgr) const |
void | dump (bool simple) const |
void | summarize_to_pp (pretty_printer *pp, bool simple) const |
void | validate () const |
std::unique_ptr< json::object > | to_json () const |
std::unique_ptr< text_art::tree_widget > | make_dump_widget (const text_art::dump_widget_info &dwi, store_manager *mgr) const |
const svalue * | get_any_binding (store_manager *mgr, const region *reg) const |
bool | called_unknown_fn_p () const |
void | set_value (store_manager *mgr, const region *lhs_reg, const svalue *rhs_sval, uncertainty_t *uncertainty) |
void | clobber_region (store_manager *mgr, const region *reg) |
void | purge_region (store_manager *mgr, const region *reg) |
void | fill_region (store_manager *mgr, const region *reg, const svalue *sval) |
void | zero_fill_region (store_manager *mgr, const region *reg) |
void | mark_region_as_unknown (store_manager *mgr, const region *reg, uncertainty_t *uncertainty, svalue_set *maybe_live_values) |
void | purge_state_involving (const svalue *sval, region_model_manager *sval_mgr) |
const binding_cluster * | get_cluster (const region *base_reg) const |
binding_cluster * | get_cluster (const region *base_reg) |
binding_cluster * | get_or_create_cluster (const region *base_reg) |
void | purge_cluster (const region *base_reg) |
template<typename T > | |
void | for_each_cluster (void(*cb)(const region *base_reg, T user_data), T user_data) const |
void | mark_as_escaped (const region *base_reg) |
void | on_unknown_fncall (const gcall *call, store_manager *mgr, const conjured_purge &p) |
bool | escaped_p (const region *reg) const |
void | get_representative_path_vars (const region_model *model, svalue_set *visited, const svalue *sval, logger *logger, auto_vec< path_var > *out_pvs) const |
cluster_map_t::iterator | begin () const |
cluster_map_t::iterator | end () const |
tristate | eval_alias (const region *base_reg_a, const region *base_reg_b) const |
template<typename BindingVisitor > | |
void | for_each_binding (BindingVisitor &v) |
void | canonicalize (store_manager *mgr) |
void | loop_replay_fixup (const store *other_store, region_model_manager *mgr) |
void | replay_call_summary (call_summary_replay &r, const store &summary) |
void | replay_call_summary_cluster (call_summary_replay &r, const store &summary, const region *base_reg) |
void | on_maybe_live_values (const svalue_set &maybe_live_values) |
Static Public Member Functions | |
static bool | can_merge_p (const store *store_a, const store *store_b, store *out_store, store_manager *mgr, model_merger *merger) |
Private Member Functions | |
void | remove_overlapping_bindings (store_manager *mgr, const region *reg, uncertainty_t *uncertainty) |
tristate | eval_alias_1 (const region *base_reg_a, const region *base_reg_b) const |
Private Attributes | |
cluster_map_t | m_cluster_map |
bool | m_called_unknown_fn |
The mapping from regions to svalues. This is actually expressed by subdividing into clusters, to better handle aliasing.
hash_map<const region *, binding_cluster *> ana::store::cluster_map_t |
ana::store::store | ( | ) |
ana::store::store | ( | const store & | other | ) |
ana::store::~store | ( | ) |
|
inline |
References hash_map< KeyId, Value, Traits >::begin(), and m_cluster_map.
|
inline |
References m_called_unknown_fn.
|
static |
void ana::store::canonicalize | ( | store_manager * | mgr | ) |
void ana::store::clobber_region | ( | store_manager * | mgr, |
const region * | reg ) |
void ana::store::dump | ( | bool | simple | ) | const |
void ana::store::dump_to_pp | ( | pretty_printer * | pp, |
bool | summarize, | ||
bool | multiline, | ||
store_manager * | mgr ) const |
|
inline |
References hash_map< KeyId, Value, Traits >::end(), and m_cluster_map.
|
private |
void ana::store::fill_region | ( | store_manager * | mgr, |
const region * | reg, | ||
const svalue * | sval ) |
|
inline |
const svalue * ana::store::get_any_binding | ( | store_manager * | mgr, |
const region * | reg ) const |
binding_cluster * ana::store::get_cluster | ( | const region * | base_reg | ) |
const binding_cluster * ana::store::get_cluster | ( | const region * | base_reg | ) | const |
binding_cluster * ana::store::get_or_create_cluster | ( | const region * | base_reg | ) |
void ana::store::get_representative_path_vars | ( | const region_model * | model, |
svalue_set * | visited, | ||
const svalue * | sval, | ||
logger * | logger, | ||
auto_vec< path_var > * | out_pvs ) const |
hashval_t ana::store::hash | ( | ) | const |
void ana::store::loop_replay_fixup | ( | const store * | other_store, |
region_model_manager * | mgr ) |
std::unique_ptr< text_art::tree_widget > ana::store::make_dump_widget | ( | const text_art::dump_widget_info & | dwi, |
store_manager * | mgr ) const |
void ana::store::mark_as_escaped | ( | const region * | base_reg | ) |
void ana::store::mark_region_as_unknown | ( | store_manager * | mgr, |
const region * | reg, | ||
uncertainty_t * | uncertainty, | ||
svalue_set * | maybe_live_values ) |
void ana::store::on_maybe_live_values | ( | const svalue_set & | maybe_live_values | ) |
void ana::store::on_unknown_fncall | ( | const gcall * | call, |
store_manager * | mgr, | ||
const conjured_purge & | p ) |
void ana::store::purge_cluster | ( | const region * | base_reg | ) |
void ana::store::purge_region | ( | store_manager * | mgr, |
const region * | reg ) |
void ana::store::purge_state_involving | ( | const svalue * | sval, |
region_model_manager * | sval_mgr ) |
|
private |
void ana::store::replay_call_summary | ( | call_summary_replay & | r, |
const store & | summary ) |
void ana::store::replay_call_summary_cluster | ( | call_summary_replay & | r, |
const store & | summary, | ||
const region * | base_reg ) |
void ana::store::set_value | ( | store_manager * | mgr, |
const region * | lhs_reg, | ||
const svalue * | rhs_sval, | ||
uncertainty_t * | uncertainty ) |
void ana::store::summarize_to_pp | ( | pretty_printer * | pp, |
bool | simple ) const |
std::unique_ptr< json::object > ana::store::to_json | ( | ) | const |
void ana::store::validate | ( | ) | const |
void ana::store::zero_fill_region | ( | store_manager * | mgr, |
const region * | reg ) |
|
private |
Referenced by called_unknown_fn_p().
|
private |
Referenced by begin(), end(), for_each_binding(), and for_each_cluster().