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

#include <store.h>

Collaboration diagram for ana::binding_map:

Data Structures

struct  symbolic_binding
struct  binding_pair
class  const_iterator
class  iterator

Public Types

using concrete_bindings_t = concrete_binding_map
using symbolic_bindings_t = std::vector<symbolic_binding>
typedef class ana::binding_map::const_iterator const_iterator_t
typedef class ana::binding_map::iterator iterator_t

Public Member Functions

 binding_map (store_manager &store_mgr)
 binding_map (const binding_map &other)
binding_mapoperator= (const binding_map &other)
bool operator== (const binding_map &other) const
bool operator!= (const binding_map &other) const
hashval_t hash () const
const svalueget (const binding_key *key) const
void put (const binding_key *k, const svalue *v)
void overwrite (iterator_t &pos, const svalue *v)
void remove (const binding_key *k)
void clear ()
bool empty_p () const
const_iterator_t begin () const
const_iterator_t end () const
iterator_t begin ()
iterator_t end ()
size_t elements () 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::objectto_json () const
void add_to_tree_widget (text_art::tree_widget &parent_widget, const text_art::dump_widget_info &dwi) const
void remove_overlapping_bindings (store_manager *mgr, const binding_key *drop_key, uncertainty_t *uncertainty, svalue_set *maybe_live_values, bool always_overlap)
const concrete_bindings_tget_concrete_bindings () const
const symbolic_bindings_tget_symbolic_bindings () const

Private Member Functions

void get_overlapping_bindings (const binding_key *key, auto_vec< const binding_key * > *out)

Private Attributes

store_managerm_store_mgr
concrete_bindings_t m_concrete
symbolic_bindings_t m_symbolic

Detailed Description

A mapping from binding_keys to svalues, for use by binding_cluster.
We store bindings at concrete bit ranges via a concrete_binding_map,
along with a vector of (symbolic key, svalue) pairs, but for now
this has maximum length of 1.   

Member Typedef Documentation

◆ concrete_bindings_t

◆ const_iterator_t

◆ iterator_t

◆ symbolic_bindings_t

Constructor & Destructor Documentation

◆ binding_map() [1/2]

ana::binding_map::binding_map ( store_manager & store_mgr)

◆ binding_map() [2/2]

ana::binding_map::binding_map ( const binding_map & other)

References binding_map().

Member Function Documentation

◆ add_to_tree_widget()

void ana::binding_map::add_to_tree_widget ( text_art::tree_widget & parent_widget,
const text_art::dump_widget_info & dwi ) const

◆ begin() [1/2]

iterator_t ana::binding_map::begin ( )

◆ begin() [2/2]

const_iterator_t ana::binding_map::begin ( ) const

◆ clear()

void ana::binding_map::clear ( )
inline

References m_concrete, and m_symbolic.

◆ dump()

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

◆ dump_to_pp()

void ana::binding_map::dump_to_pp ( pretty_printer * pp,
bool simple,
bool multiline ) const

◆ elements()

size_t ana::binding_map::elements ( ) const

◆ empty_p()

bool ana::binding_map::empty_p ( ) const
inline

References m_concrete, and m_symbolic.

◆ end() [1/2]

iterator_t ana::binding_map::end ( )

◆ end() [2/2]

const_iterator_t ana::binding_map::end ( ) const

◆ get()

const svalue * ana::binding_map::get ( const binding_key * key) const

◆ get_concrete_bindings()

const concrete_bindings_t & ana::binding_map::get_concrete_bindings ( ) const
inline

References m_concrete.

◆ get_overlapping_bindings()

void ana::binding_map::get_overlapping_bindings ( const binding_key * key,
auto_vec< const binding_key * > * out )
private

◆ get_symbolic_bindings()

const symbolic_bindings_t & ana::binding_map::get_symbolic_bindings ( ) const
inline

References m_symbolic.

◆ hash()

hashval_t ana::binding_map::hash ( ) const

◆ operator!=()

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

References binding_map().

◆ operator=()

binding_map & ana::binding_map::operator= ( const binding_map & other)

References binding_map().

◆ operator==()

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

References binding_map().

◆ overwrite()

void ana::binding_map::overwrite ( iterator_t & pos,
const svalue * v )

◆ put()

void ana::binding_map::put ( const binding_key * k,
const svalue * v )

◆ remove()

void ana::binding_map::remove ( const binding_key * k)

◆ remove_overlapping_bindings()

void ana::binding_map::remove_overlapping_bindings ( store_manager * mgr,
const binding_key * drop_key,
uncertainty_t * uncertainty,
svalue_set * maybe_live_values,
bool always_overlap )

◆ to_json()

std::unique_ptr< json::object > ana::binding_map::to_json ( ) const

◆ validate()

void ana::binding_map::validate ( ) const

Field Documentation

◆ m_concrete

concrete_bindings_t ana::binding_map::m_concrete
private

◆ m_store_mgr

store_manager& ana::binding_map::m_store_mgr
private

◆ m_symbolic

symbolic_bindings_t ana::binding_map::m_symbolic
private

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