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

#include <svalue.h>

Inheritance diagram for ana::compound_svalue:
Collaboration diagram for ana::compound_svalue:

Data Structures

struct  key_t
 

Public Types

typedef binding_map::iterator_t iterator_t
 
typedef unsigned id_t
 

Public Member Functions

 compound_svalue (symbol::id_t id, tree type, const binding_map &map)
 
enum svalue_kind get_kind () const final override
 
const compound_svaluedyn_cast_compound_svalue () const final override
 
void dump_to_pp (pretty_printer *pp, bool simple) const final override
 
void print_dump_widget_label (pretty_printer *pp) const final override
 
void add_dump_widget_children (text_art::tree_widget &w, const dump_widget_info &dwi) const final override
 
void accept (visitor *v) const final override
 
const binding_mapget_map () const
 
iterator_t begin () const
 
iterator_t end () const
 
struct key_t make_key () const
 
const svaluemaybe_fold_bits_within (tree type, const bit_range &subrange, region_model_manager *mgr) const final override
 
tree get_type () const
 
void print (const region_model &model, pretty_printer *pp) const
 
void dump () const
 
void dump (bool simple) const
 
label_text get_desc (bool simple=true) const
 
json::valueto_json () const
 
std::unique_ptr< text_art::widget > make_dump_widget (const dump_widget_info &dwi, const char *prefix=nullptr) const
 
virtual const region_svaluedyn_cast_region_svalue () const
 
virtual const constant_svaluedyn_cast_constant_svalue () const
 
virtual const poisoned_svaluedyn_cast_poisoned_svalue () const
 
virtual const setjmp_svaluedyn_cast_setjmp_svalue () const
 
virtual const initial_svaluedyn_cast_initial_svalue () const
 
virtual const unaryop_svaluedyn_cast_unaryop_svalue () const
 
virtual const binop_svaluedyn_cast_binop_svalue () const
 
virtual const sub_svaluedyn_cast_sub_svalue () const
 
virtual const repeated_svaluedyn_cast_repeated_svalue () const
 
virtual const bits_within_svaluedyn_cast_bits_within_svalue () const
 
virtual const unmergeable_svaluedyn_cast_unmergeable_svalue () const
 
virtual const widening_svaluedyn_cast_widening_svalue () const
 
virtual const conjured_svaluedyn_cast_conjured_svalue () const
 
virtual const asm_output_svaluedyn_cast_asm_output_svalue () const
 
virtual const const_fn_result_svaluedyn_cast_const_fn_result_svalue () const
 
tree maybe_get_constant () const
 
const regionmaybe_get_region () const
 
const svaluemaybe_undo_cast () const
 
const svalueunwrap_any_unmergeable () const
 
const svaluecan_merge_p (const svalue *other, region_model_manager *mgr, model_merger *merger) const
 
bool live_p (const svalue_set *live_svalues, const region_model *model) const
 
virtual bool implicitly_live_p (const svalue_set *live_svalues, const region_model *model) const
 
bool involves_p (const svalue *other) const
 
const svalueextract_bit_range (tree type, const bit_range &subrange, region_model_manager *mgr) const
 
virtual bool all_zeroes_p () const
 
virtual bool can_have_associated_state_p () const
 
const regionmaybe_get_deref_base_region () const
 
bool maybe_print_for_user (pretty_printer *pp, const region_model &model, const svalue *outer_sval=nullptr) const
 
const complexityget_complexity () const
 
id_t get_id () const
 

Static Public Member Functions

static int cmp_ptr (const svalue *, const svalue *)
 
static int cmp_ptr_ptr (const void *, const void *)
 
static int cmp_ids (const symbol *s1, const symbol *s2)
 

Protected Member Functions

void print_svalue_node_label (pretty_printer *pp) const
 

Static Private Member Functions

static complexity calc_complexity (const binding_map &map)
 

Private Attributes

binding_map m_map
 
tree m_type
 
complexity m_complexity
 
id_t m_id
 

Detailed Description

Concrete subclass of svalue representing a mapping of bit-ranges
to svalues, analogous to a cluster within the store.

This is for use in places where we want to represent a store-like
mapping, but are required to use an svalue, such as when handling
compound assignments and compound return values.

All keys within the underlying binding_map are required to be concrete,
not symbolic.

Instances of this class shouldn't be bound as-is into the store;
instead they should be unpacked.  Similarly, they should not be
nested.   

Member Typedef Documentation

◆ id_t

typedef unsigned ana::symbol::id_t
inherited

◆ iterator_t

Constructor & Destructor Documentation

◆ compound_svalue()

ana::compound_svalue::compound_svalue ( symbol::id_t id,
tree type,
const binding_map & map )

Member Function Documentation

◆ accept()

void ana::compound_svalue::accept ( visitor * v) const
finaloverridevirtual

Implements ana::svalue.

◆ add_dump_widget_children()

void ana::compound_svalue::add_dump_widget_children ( text_art::tree_widget & w,
const dump_widget_info & dwi ) const
finaloverridevirtual

Implements ana::svalue.

◆ all_zeroes_p()

virtual bool ana::svalue::all_zeroes_p ( ) const
virtualinherited

◆ begin()

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

◆ calc_complexity()

static complexity ana::compound_svalue::calc_complexity ( const binding_map & map)
staticprivate

◆ can_have_associated_state_p()

virtual bool ana::svalue::can_have_associated_state_p ( ) const
inlinevirtualinherited

◆ can_merge_p()

const svalue * ana::svalue::can_merge_p ( const svalue * other,
region_model_manager * mgr,
model_merger * merger ) const
inherited

◆ cmp_ids()

static int ana::symbol::cmp_ids ( const symbol * s1,
const symbol * s2 )
staticinherited

◆ cmp_ptr()

static int ana::svalue::cmp_ptr ( const svalue * ,
const svalue *  )
staticinherited

◆ cmp_ptr_ptr()

static int ana::svalue::cmp_ptr_ptr ( const void * ,
const void *  )
staticinherited

◆ dump() [1/2]

void ana::svalue::dump ( ) const
inherited

◆ dump() [2/2]

void ana::svalue::dump ( bool simple) const
inherited

◆ dump_to_pp()

void ana::compound_svalue::dump_to_pp ( pretty_printer * pp,
bool simple ) const
finaloverridevirtual

Implements ana::svalue.

◆ dyn_cast_asm_output_svalue()

virtual const asm_output_svalue * ana::svalue::dyn_cast_asm_output_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::asm_output_svalue.

References NULL.

◆ dyn_cast_binop_svalue()

virtual const binop_svalue * ana::svalue::dyn_cast_binop_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::binop_svalue.

References NULL.

◆ dyn_cast_bits_within_svalue()

virtual const bits_within_svalue * ana::svalue::dyn_cast_bits_within_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::bits_within_svalue.

References NULL.

◆ dyn_cast_compound_svalue()

const compound_svalue * ana::compound_svalue::dyn_cast_compound_svalue ( ) const
inlinefinaloverridevirtual

Reimplemented from ana::svalue.

◆ dyn_cast_conjured_svalue()

virtual const conjured_svalue * ana::svalue::dyn_cast_conjured_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::conjured_svalue.

References NULL.

◆ dyn_cast_const_fn_result_svalue()

virtual const const_fn_result_svalue * ana::svalue::dyn_cast_const_fn_result_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::const_fn_result_svalue.

References NULL.

◆ dyn_cast_constant_svalue()

virtual const constant_svalue * ana::svalue::dyn_cast_constant_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::constant_svalue.

References NULL.

◆ dyn_cast_initial_svalue()

virtual const initial_svalue * ana::svalue::dyn_cast_initial_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::initial_svalue.

References NULL.

◆ dyn_cast_poisoned_svalue()

virtual const poisoned_svalue * ana::svalue::dyn_cast_poisoned_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::poisoned_svalue.

References NULL.

◆ dyn_cast_region_svalue()

virtual const region_svalue * ana::svalue::dyn_cast_region_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::region_svalue.

References NULL.

◆ dyn_cast_repeated_svalue()

virtual const repeated_svalue * ana::svalue::dyn_cast_repeated_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::repeated_svalue.

References NULL.

◆ dyn_cast_setjmp_svalue()

virtual const setjmp_svalue * ana::svalue::dyn_cast_setjmp_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::setjmp_svalue.

References NULL.

◆ dyn_cast_sub_svalue()

virtual const sub_svalue * ana::svalue::dyn_cast_sub_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::sub_svalue.

References NULL.

◆ dyn_cast_unaryop_svalue()

virtual const unaryop_svalue * ana::svalue::dyn_cast_unaryop_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::unaryop_svalue.

References NULL.

◆ dyn_cast_unmergeable_svalue()

virtual const unmergeable_svalue * ana::svalue::dyn_cast_unmergeable_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::unmergeable_svalue.

References NULL.

◆ dyn_cast_widening_svalue()

virtual const widening_svalue * ana::svalue::dyn_cast_widening_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::widening_svalue.

References NULL.

◆ end()

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

◆ extract_bit_range()

const svalue * ana::svalue::extract_bit_range ( tree type,
const bit_range & subrange,
region_model_manager * mgr ) const
inherited

◆ get_complexity()

const complexity & ana::symbol::get_complexity ( ) const
inlineinherited

◆ get_desc()

label_text ana::svalue::get_desc ( bool simple = true) const
inherited

◆ get_id()

id_t ana::symbol::get_id ( ) const
inlineinherited

References ana::symbol::m_id.

◆ get_kind()

enum svalue_kind ana::compound_svalue::get_kind ( ) const
inlinefinaloverridevirtual

Implements ana::svalue.

References ana::SK_COMPOUND.

◆ get_map()

const binding_map & ana::compound_svalue::get_map ( ) const
inline

◆ get_type()

tree ana::svalue::get_type ( ) const
inlineinherited

References ana::svalue::m_type.

◆ implicitly_live_p()

virtual bool ana::svalue::implicitly_live_p ( const svalue_set * live_svalues,
const region_model * model ) const
virtualinherited

◆ involves_p()

bool ana::svalue::involves_p ( const svalue * other) const
inherited

◆ live_p()

bool ana::svalue::live_p ( const svalue_set * live_svalues,
const region_model * model ) const
inherited

◆ make_dump_widget()

std::unique_ptr< text_art::widget > ana::svalue::make_dump_widget ( const dump_widget_info & dwi,
const char * prefix = nullptr ) const
inherited

◆ make_key()

struct key_t ana::compound_svalue::make_key ( ) const
inline

◆ maybe_fold_bits_within()

const svalue * ana::compound_svalue::maybe_fold_bits_within ( tree type,
const bit_range & subrange,
region_model_manager * mgr ) const
finaloverridevirtual

Reimplemented from ana::svalue.

◆ maybe_get_constant()

tree ana::svalue::maybe_get_constant ( ) const
inherited

◆ maybe_get_deref_base_region()

const region * ana::svalue::maybe_get_deref_base_region ( ) const
inherited

◆ maybe_get_region()

const region * ana::svalue::maybe_get_region ( ) const
inherited

◆ maybe_print_for_user()

bool ana::svalue::maybe_print_for_user ( pretty_printer * pp,
const region_model & model,
const svalue * outer_sval = nullptr ) const
inherited

◆ maybe_undo_cast()

const svalue * ana::svalue::maybe_undo_cast ( ) const
inherited

◆ print()

void ana::svalue::print ( const region_model & model,
pretty_printer * pp ) const
inherited

◆ print_dump_widget_label()

void ana::compound_svalue::print_dump_widget_label ( pretty_printer * pp) const
finaloverridevirtual

Implements ana::svalue.

◆ print_svalue_node_label()

void ana::svalue::print_svalue_node_label ( pretty_printer * pp) const
protectedinherited

◆ to_json()

json::value * ana::svalue::to_json ( ) const
inherited

◆ unwrap_any_unmergeable()

const svalue * ana::svalue::unwrap_any_unmergeable ( ) const
inherited

Field Documentation

◆ m_complexity

complexity ana::symbol::m_complexity
privateinherited

◆ m_id

id_t ana::symbol::m_id
privateinherited

Referenced by ana::symbol::get_id().

◆ m_map

binding_map ana::compound_svalue::m_map
private

◆ m_type

tree ana::svalue::m_type
privateinherited

Referenced by ana::svalue::get_type().


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