GCC Middle and Back End API Reference
|
#include <store.h>
Public Types | |
typedef hash_map< const binding_key *, const svalue * > | map_t |
typedef map_t::iterator | iterator_t |
Public Member Functions | |
binding_cluster (const region *base_region) | |
binding_cluster (const binding_cluster &other) | |
binding_cluster & | operator= (const binding_cluster &other) |
bool | operator== (const binding_cluster &other) const |
bool | operator!= (const binding_cluster &other) const |
hashval_t | hash () const |
bool | symbolic_p () const |
const region * | get_base_region () const |
void | dump_to_pp (pretty_printer *pp, bool simple, bool multiline) const |
void | dump (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 |
void | bind (store_manager *mgr, const region *, const svalue *) |
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_to_bind, const region *reg_for_overlap, uncertainty_t *uncertainty, svalue_set *maybe_live_values) |
void | purge_state_involving (const svalue *sval, region_model_manager *sval_mgr) |
const svalue * | get_binding (store_manager *mgr, const region *reg) const |
const svalue * | get_binding_recursive (store_manager *mgr, const region *reg) const |
const svalue * | get_any_binding (store_manager *mgr, const region *reg) const |
const svalue * | maybe_get_compound_binding (store_manager *mgr, const region *reg) const |
void | remove_overlapping_bindings (store_manager *mgr, const region *reg, uncertainty_t *uncertainty, svalue_set *maybe_live_values) |
template<typename T> | |
void | for_each_value (void(*cb)(const svalue *sval, T user_data), T user_data) const |
void | make_unknown_relative_to (const binding_cluster *other_cluster, store *out_store, store_manager *mgr) |
void | mark_as_escaped () |
void | on_unknown_fncall (const gcall *call, store_manager *mgr, const conjured_purge &p) |
void | on_asm (const gasm *stmt, store_manager *mgr, const conjured_purge &p) |
bool | escaped_p () const |
bool | touched_p () const |
bool | redundant_p () const |
bool | empty_p () const |
void | get_representative_path_vars (const region_model *model, svalue_set *visited, const region *base_reg, const svalue *sval, logger *logger, auto_vec< path_var > *out_pvs) const |
const svalue * | maybe_get_simple_value (store_manager *mgr) const |
template<typename BindingVisitor> | |
void | for_each_binding (BindingVisitor &v) const |
iterator_t | begin () const |
iterator_t | end () const |
const binding_map & | get_map () const |
Static Public Member Functions | |
static bool | can_merge_p (const binding_cluster *cluster_a, const binding_cluster *cluster_b, binding_cluster *out_cluster, store *out_store, store_manager *mgr, model_merger *merger) |
Private Member Functions | |
const svalue * | get_any_value (const binding_key *key) const |
void | bind_compound_sval (store_manager *mgr, const region *reg, const compound_svalue *compound_sval) |
void | bind_key (const binding_key *key, const svalue *sval) |
Private Attributes | |
const region * | m_base_region |
binding_map | m_map |
bool | m_escaped |
bool | m_touched |
Friends | |
class | store |
Concept: BindingVisitor, for use by binding_cluster::for_each_binding and store::for_each_binding. Should implement: void on_binding (const binding_key *key, const svalue *&sval);
All of the bindings within a store for regions that share the same base region.
typedef map_t::iterator ana::binding_cluster::iterator_t |
typedef hash_map<const binding_key *, const svalue *> ana::binding_cluster::map_t |
ana::binding_cluster::binding_cluster | ( | const region * | base_region | ) |
Referenced by binding_cluster(), can_merge_p(), make_unknown_relative_to(), operator!=(), operator=(), and operator==().
ana::binding_cluster::binding_cluster | ( | const binding_cluster & | other | ) |
References binding_cluster().
|
inline |
References m_map.
void ana::binding_cluster::bind | ( | store_manager * | mgr, |
const region * | , | ||
const svalue * | ) |
|
private |
|
private |
|
static |
References binding_cluster(), and store.
void ana::binding_cluster::clobber_region | ( | store_manager * | mgr, |
const region * | reg ) |
void ana::binding_cluster::dump | ( | bool | simple | ) | const |
void ana::binding_cluster::dump_to_pp | ( | pretty_printer * | pp, |
bool | simple, | ||
bool | multiline ) const |
|
inline |
References m_map.
bool ana::binding_cluster::escaped_p | ( | ) | const |
void ana::binding_cluster::fill_region | ( | store_manager * | mgr, |
const region * | reg, | ||
const svalue * | sval ) |
|
inline |
References m_map.
const svalue * ana::binding_cluster::get_any_binding | ( | store_manager * | mgr, |
const region * | reg ) const |
|
private |
|
inline |
References m_base_region.
const svalue * ana::binding_cluster::get_binding | ( | store_manager * | mgr, |
const region * | reg ) const |
const svalue * ana::binding_cluster::get_binding_recursive | ( | store_manager * | mgr, |
const region * | reg ) const |
|
inline |
References m_map.
void ana::binding_cluster::get_representative_path_vars | ( | const region_model * | model, |
svalue_set * | visited, | ||
const region * | base_reg, | ||
const svalue * | sval, | ||
logger * | logger, | ||
auto_vec< path_var > * | out_pvs ) const |
References visited.
hashval_t ana::binding_cluster::hash | ( | ) | const |
std::unique_ptr< text_art::tree_widget > ana::binding_cluster::make_dump_widget | ( | const text_art::dump_widget_info & | dwi, |
store_manager * | mgr ) const |
void ana::binding_cluster::make_unknown_relative_to | ( | const binding_cluster * | other_cluster, |
store * | out_store, | ||
store_manager * | mgr ) |
References binding_cluster(), and store.
void ana::binding_cluster::mark_as_escaped | ( | ) |
void ana::binding_cluster::mark_region_as_unknown | ( | store_manager * | mgr, |
const region * | reg_to_bind, | ||
const region * | reg_for_overlap, | ||
uncertainty_t * | uncertainty, | ||
svalue_set * | maybe_live_values ) |
const svalue * ana::binding_cluster::maybe_get_compound_binding | ( | store_manager * | mgr, |
const region * | reg ) const |
const svalue * ana::binding_cluster::maybe_get_simple_value | ( | store_manager * | mgr | ) | const |
void ana::binding_cluster::on_asm | ( | const gasm * | stmt, |
store_manager * | mgr, | ||
const conjured_purge & | p ) |
void ana::binding_cluster::on_unknown_fncall | ( | const gcall * | call, |
store_manager * | mgr, | ||
const conjured_purge & | p ) |
|
inline |
References binding_cluster().
binding_cluster & ana::binding_cluster::operator= | ( | const binding_cluster & | other | ) |
References binding_cluster().
bool ana::binding_cluster::operator== | ( | const binding_cluster & | other | ) | const |
References binding_cluster().
void ana::binding_cluster::purge_region | ( | store_manager * | mgr, |
const region * | reg ) |
void ana::binding_cluster::purge_state_involving | ( | const svalue * | sval, |
region_model_manager * | sval_mgr ) |
bool ana::binding_cluster::redundant_p | ( | ) | const |
void ana::binding_cluster::remove_overlapping_bindings | ( | store_manager * | mgr, |
const region * | reg, | ||
uncertainty_t * | uncertainty, | ||
svalue_set * | maybe_live_values ) |
bool ana::binding_cluster::symbolic_p | ( | ) | const |
std::unique_ptr< json::object > ana::binding_cluster::to_json | ( | ) | const |
void ana::binding_cluster::validate | ( | ) | const |
void ana::binding_cluster::zero_fill_region | ( | store_manager * | mgr, |
const region * | reg ) |
|
friend |
References store.
Referenced by can_merge_p(), make_unknown_relative_to(), and store.
|
private |
Referenced by get_base_region().
|
private |
|
private |
Referenced by begin(), empty_p(), end(), for_each_binding(), for_each_value(), and get_map().
|
private |
Referenced by touched_p().