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

#include <svalue.h>

Inheritance diagram for ana::const_fn_result_svalue:
Collaboration diagram for ana::const_fn_result_svalue:

Data Structures

struct  key_t
 

Public Types

typedef unsigned id_t
 

Public Member Functions

 const_fn_result_svalue (symbol::id_t id, tree type, tree fndecl, const vec< const svalue * > &inputs)
 
enum svalue_kind get_kind () const final override
 
const const_fn_result_svaluedyn_cast_const_fn_result_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
 
tree get_fndecl () const
 
unsigned get_num_inputs () const
 
const svalueget_input (unsigned idx) const
 
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
 
std::unique_ptr< json::valueto_json () const
 
std::unique_ptr< text_art::tree_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 compound_svaluedyn_cast_compound_svalue () const
 
virtual const conjured_svaluedyn_cast_conjured_svalue () const
 
virtual const asm_output_svaluedyn_cast_asm_output_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 const svaluemaybe_fold_bits_within (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)
 

Static Public Attributes

static const unsigned MAX_INPUTS = 2
 

Protected Member Functions

void print_svalue_node_label (pretty_printer *pp) const
 

Private Member Functions

void dump_input (pretty_printer *pp, unsigned input_idx, const svalue *sval, bool simple) const
 

Private Attributes

tree m_fndecl
 
unsigned m_num_inputs
 
const svaluem_input_arr [MAX_INPUTS]
 
tree m_type
 
complexity m_complexity
 
id_t m_id
 

Detailed Description

The return value from a function with __attribute((const)) for given
inputs, provided that we don't have too many inputs, and all of them
are deterministic.

Comparisons of variables that share the same const_fn_result_svalue are known
to be equal, even if we don't know what the value is.   

Member Typedef Documentation

◆ id_t

unsigned ana::symbol::id_t
inherited

Constructor & Destructor Documentation

◆ const_fn_result_svalue()

ana::const_fn_result_svalue::const_fn_result_svalue ( symbol::id_t id,
tree type,
tree fndecl,
const vec< const svalue * > & inputs )
inline

References gcc_assert, and i.

Member Function Documentation

◆ accept()

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

Implements ana::svalue.

◆ add_dump_widget_children()

void ana::const_fn_result_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

◆ 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_input()

void ana::const_fn_result_svalue::dump_input ( pretty_printer * pp,
unsigned input_idx,
const svalue * sval,
bool simple ) const
private

◆ dump_to_pp()

void ana::const_fn_result_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()

virtual const compound_svalue * ana::svalue::dyn_cast_compound_svalue ( ) const
inlinevirtualinherited

Reimplemented in ana::compound_svalue.

References NULL.

Referenced by contains_unknown_p().

◆ 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()

const const_fn_result_svalue * ana::const_fn_result_svalue::dyn_cast_const_fn_result_svalue ( ) const
inlinefinaloverridevirtual

Reimplemented from ana::svalue.

◆ 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.

◆ 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_fndecl()

tree ana::const_fn_result_svalue::get_fndecl ( ) const
inline

◆ get_id()

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

References ana::symbol::m_id.

◆ get_input()

const svalue * ana::const_fn_result_svalue::get_input ( unsigned idx) const
inline

◆ get_kind()

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

Implements ana::svalue.

References ana::SK_CONST_FN_RESULT.

◆ get_num_inputs()

unsigned ana::const_fn_result_svalue::get_num_inputs ( ) 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::tree_widget > ana::svalue::make_dump_widget ( const dump_widget_info & dwi,
const char * prefix = nullptr ) const
inherited

◆ maybe_fold_bits_within()

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

◆ 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::const_fn_result_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()

std::unique_ptr< 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_fndecl

tree ana::const_fn_result_svalue::m_fndecl
private

◆ m_id

id_t ana::symbol::m_id
privateinherited

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

◆ m_input_arr

const svalue* ana::const_fn_result_svalue::m_input_arr[MAX_INPUTS]
private

◆ m_num_inputs

unsigned ana::const_fn_result_svalue::m_num_inputs
private

◆ m_type

tree ana::svalue::m_type
privateinherited

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

◆ MAX_INPUTS

const unsigned ana::const_fn_result_svalue::MAX_INPUTS = 2
static

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