GCC Middle and Back End API Reference
ana::sm_state_map Class Reference

#include <program-state.h>

Collaboration diagram for ana::sm_state_map:

Data Structures

struct  entry_t
 

Public Types

typedef hash_map< const svalue *, entry_tmap_t
 
typedef map_t::iterator iterator_t
 

Public Member Functions

 sm_state_map (const state_machine &sm)
 
sm_state_mapclone () const
 
void print (const region_model *model, bool simple, bool multiline, pretty_printer *pp) const
 
void dump (bool simple) const
 
json::objectto_json () const
 
bool is_empty_p () const
 
hashval_t hash () const
 
bool operator== (const sm_state_map &other) const
 
bool operator!= (const sm_state_map &other) const
 
state_machine::state_t get_state (const svalue *sval, const extrinsic_state &ext_state) const
 
const svalueget_origin (const svalue *sval, const extrinsic_state &ext_state) const
 
void set_state (region_model *model, const svalue *sval, state_machine::state_t state, const svalue *origin, const extrinsic_state &ext_state)
 
bool set_state (const equiv_class &ec, state_machine::state_t state, const svalue *origin, const extrinsic_state &ext_state)
 
bool impl_set_state (const svalue *sval, state_machine::state_t state, const svalue *origin, const extrinsic_state &ext_state)
 
void clear_any_state (const svalue *sval)
 
void clear_all_per_svalue_state ()
 
void set_global_state (state_machine::state_t state)
 
state_machine::state_t get_global_state () const
 
void on_svalue_leak (const svalue *sval, impl_region_model_context *ctxt)
 
void on_liveness_change (const svalue_set &live_svalues, const region_model *model, const extrinsic_state &ext_state, impl_region_model_context *ctxt)
 
void on_unknown_change (const svalue *sval, bool is_mutable, const extrinsic_state &ext_state)
 
void purge_state_involving (const svalue *sval, const extrinsic_state &ext_state)
 
iterator_t begin () const
 
iterator_t end () const
 
size_t elements () const
 
bool replay_call_summary (call_summary_replay &r, const sm_state_map &summary)
 
bool can_merge_with_p (const sm_state_map &other, const state_machine &sm, const extrinsic_state &ext_state, sm_state_map **out) const
 

Static Public Member Functions

static int cmp (const sm_state_map &smap_a, const sm_state_map &smap_b)
 
static const svaluecanonicalize_svalue (const svalue *sval, const extrinsic_state &ext_state)
 

Private Attributes

const state_machinem_sm
 
map_t m_map
 
state_machine::state_t m_global_state
 

Detailed Description

Map from svalue * to state machine state, also capturing the origin of
each state.   

Member Typedef Documentation

◆ iterator_t

◆ map_t

Constructor & Destructor Documentation

◆ sm_state_map()

ana::sm_state_map::sm_state_map ( const state_machine & sm)

Member Function Documentation

◆ begin()

iterator_t ana::sm_state_map::begin ( ) const
inline

◆ can_merge_with_p()

bool ana::sm_state_map::can_merge_with_p ( const sm_state_map & other,
const state_machine & sm,
const extrinsic_state & ext_state,
sm_state_map ** out ) const

◆ canonicalize_svalue()

static const svalue * ana::sm_state_map::canonicalize_svalue ( const svalue * sval,
const extrinsic_state & ext_state )
static

◆ clear_all_per_svalue_state()

void ana::sm_state_map::clear_all_per_svalue_state ( )

◆ clear_any_state()

void ana::sm_state_map::clear_any_state ( const svalue * sval)

◆ clone()

sm_state_map * ana::sm_state_map::clone ( ) const

◆ cmp()

static int ana::sm_state_map::cmp ( const sm_state_map & smap_a,
const sm_state_map & smap_b )
static

◆ dump()

void ana::sm_state_map::dump ( bool simple) const

◆ elements()

size_t ana::sm_state_map::elements ( ) const
inline

◆ end()

iterator_t ana::sm_state_map::end ( ) const
inline

◆ get_global_state()

state_machine::state_t ana::sm_state_map::get_global_state ( ) const

◆ get_origin()

const svalue * ana::sm_state_map::get_origin ( const svalue * sval,
const extrinsic_state & ext_state ) const

◆ get_state()

state_machine::state_t ana::sm_state_map::get_state ( const svalue * sval,
const extrinsic_state & ext_state ) const

◆ hash()

hashval_t ana::sm_state_map::hash ( ) const

◆ impl_set_state()

bool ana::sm_state_map::impl_set_state ( const svalue * sval,
state_machine::state_t state,
const svalue * origin,
const extrinsic_state & ext_state )

◆ is_empty_p()

bool ana::sm_state_map::is_empty_p ( ) const

◆ on_liveness_change()

void ana::sm_state_map::on_liveness_change ( const svalue_set & live_svalues,
const region_model * model,
const extrinsic_state & ext_state,
impl_region_model_context * ctxt )

◆ on_svalue_leak()

void ana::sm_state_map::on_svalue_leak ( const svalue * sval,
impl_region_model_context * ctxt )

◆ on_unknown_change()

void ana::sm_state_map::on_unknown_change ( const svalue * sval,
bool is_mutable,
const extrinsic_state & ext_state )

◆ operator!=()

bool ana::sm_state_map::operator!= ( const sm_state_map & other) const
inline

◆ operator==()

bool ana::sm_state_map::operator== ( const sm_state_map & other) const

◆ print()

void ana::sm_state_map::print ( const region_model * model,
bool simple,
bool multiline,
pretty_printer * pp ) const

◆ purge_state_involving()

void ana::sm_state_map::purge_state_involving ( const svalue * sval,
const extrinsic_state & ext_state )

◆ replay_call_summary()

bool ana::sm_state_map::replay_call_summary ( call_summary_replay & r,
const sm_state_map & summary )

◆ set_global_state()

void ana::sm_state_map::set_global_state ( state_machine::state_t state)

◆ set_state() [1/2]

bool ana::sm_state_map::set_state ( const equiv_class & ec,
state_machine::state_t state,
const svalue * origin,
const extrinsic_state & ext_state )

◆ set_state() [2/2]

void ana::sm_state_map::set_state ( region_model * model,
const svalue * sval,
state_machine::state_t state,
const svalue * origin,
const extrinsic_state & ext_state )

◆ to_json()

json::object * ana::sm_state_map::to_json ( ) const

Field Documentation

◆ m_global_state

state_machine::state_t ana::sm_state_map::m_global_state
private

◆ m_map

map_t ana::sm_state_map::m_map
private

Referenced by begin(), elements(), and end().

◆ m_sm

const state_machine& ana::sm_state_map::m_sm
private

The documentation for this class was generated from the following file: