GCC Middle and Back End API Reference
|
#include <svalue.h>
Public Types | |
typedef unsigned | id_t |
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 | |
svalue (complexity c, symbol::id_t id, tree type) | |
void | print_svalue_node_label (pretty_printer *pp) const |
Private Member Functions | |
virtual void | print_dump_widget_label (pretty_printer *pp) const =0 |
virtual void | add_dump_widget_children (text_art::tree_widget &, const dump_widget_info &dwi) const =0 |
Private Attributes | |
tree | m_type |
complexity | m_complexity |
id_t | m_id |
svalue and its subclasses. The class hierarchy looks like this (using indentation to show inheritance, and with svalue_kinds shown for the concrete subclasses): svalue region_svalue (SK_REGION): a pointer to a region constant_svalue (SK_CONSTANT): a constant unknown_svalue (SK_UNKNOWN): an unknowable value poisoned_svalue (SK_POISONED): a unusable value (undefined) setjmp_svalue (SK_SETJMP): a setjmp/longjmp buffer initial_svalue (SK_INITIAL): the initial value of a region unaryop_svalue (SK_UNARYOP): unary operation on another svalue binop_svalue (SK_BINOP): binary operation on two svalues sub_svalue (SK_SUB): the result of accessing a subregion repeated_svalue (SK_REPEATED): repeating an svalue to fill a larger region bits_within_svalue (SK_BITS_WITHIN): a range of bits/bytes within a larger svalue unmergeable_svalue (SK_UNMERGEABLE): a value that is so interesting from a control-flow perspective that it can inhibit state-merging placeholder_svalue (SK_PLACEHOLDER): for use in selftests. widening_svalue (SK_WIDENING): a merger of two svalues (possibly in an iteration). compound_svalue (SK_COMPOUND): a mapping of bit-ranges to svalues conjured_svalue (SK_CONJURED): a value arising from a stmt asm_output_svalue (SK_ASM_OUTPUT): an output from a deterministic asm stmt. const_fn_result_svalue (SK_CONST_FN_RESULT): the return value from a function with __attribute((const)) for given inputs.
An abstract base class representing a value held by a region of memory.
|
inherited |
|
inlinevirtual |
|
inlineprotected |
References m_type, and ana::symbol::symbol().
Referenced by ana::poisoned_svalue::accept(), ana::unknown_svalue::accept(), ana::repeated_svalue::all_zeroes_p(), ana::asm_output_svalue::asm_output_svalue(), ana::binop_svalue::binop_svalue(), ana::bits_within_svalue::bits_within_svalue(), can_merge_p(), cmp_ptr(), ana::conjured_svalue::conjured_svalue(), ana::const_fn_result_svalue::const_fn_result_svalue(), ana::constant_svalue::constant_svalue(), ana::asm_output_svalue::dump_input(), ana::const_fn_result_svalue::dump_input(), ana::constant_svalue::eval_condition(), extract_bit_range(), ana::unaryop_svalue::get_arg(), ana::unmergeable_svalue::get_arg(), ana::binop_svalue::get_arg0(), ana::binop_svalue::get_arg1(), ana::widening_svalue::get_base_svalue(), ana::bits_within_svalue::get_inner_svalue(), ana::repeated_svalue::get_inner_svalue(), ana::asm_output_svalue::get_input(), ana::const_fn_result_svalue::get_input(), ana::widening_svalue::get_iter_svalue(), ana::repeated_svalue::get_outer_size(), ana::sub_svalue::get_parent(), ana::initial_svalue::initial_svalue(), involves_p(), ana::binop_svalue::key_t::key_t(), ana::bits_within_svalue::key_t::key_t(), ana::repeated_svalue::key_t::key_t(), ana::sub_svalue::key_t::key_t(), ana::unaryop_svalue::key_t::key_t(), ana::widening_svalue::key_t::key_t(), maybe_print_for_user(), maybe_undo_cast(), ana::placeholder_svalue::placeholder_svalue(), ana::poisoned_svalue::poisoned_svalue(), ana::region_svalue::region_svalue(), ana::repeated_svalue::repeated_svalue(), ana::setjmp_svalue::setjmp_svalue(), ana::sub_svalue::sub_svalue(), ana::unaryop_svalue::unaryop_svalue(), ana::unknown_svalue::unknown_svalue(), ana::unmergeable_svalue::unmergeable_svalue(), unwrap_any_unmergeable(), and ana::widening_svalue::widening_svalue().
|
pure virtual |
Implemented in ana::asm_output_svalue, ana::binop_svalue, ana::bits_within_svalue, ana::compound_svalue, ana::conjured_svalue, ana::const_fn_result_svalue, ana::constant_svalue, ana::initial_svalue, ana::placeholder_svalue, ana::poisoned_svalue, ana::region_svalue, ana::repeated_svalue, ana::setjmp_svalue, ana::sub_svalue, ana::unaryop_svalue, ana::unknown_svalue, ana::unmergeable_svalue, and ana::widening_svalue.
Referenced by infinite_recursion_diagnostic::expr_uses_conjured_svalue_p().
|
privatepure virtual |
Implemented in ana::asm_output_svalue, ana::binop_svalue, ana::bits_within_svalue, ana::compound_svalue, ana::conjured_svalue, ana::const_fn_result_svalue, ana::constant_svalue, ana::initial_svalue, ana::placeholder_svalue, ana::poisoned_svalue, ana::region_svalue, ana::repeated_svalue, ana::setjmp_svalue, ana::sub_svalue, ana::unaryop_svalue, ana::unknown_svalue, ana::unmergeable_svalue, and ana::widening_svalue.
|
virtual |
Reimplemented in ana::constant_svalue, and ana::repeated_svalue.
|
inlinevirtual |
Reimplemented in ana::poisoned_svalue, and ana::unknown_svalue.
Referenced by ana::binop_svalue::binop_svalue(), ana::unaryop_svalue::unaryop_svalue(), and ana::widening_svalue::widening_svalue().
const svalue * ana::svalue::can_merge_p | ( | const svalue * | other, |
region_model_manager * | mgr, | ||
model_merger * | merger ) const |
References svalue().
References symbol().
|
static |
void ana::svalue::dump | ( | ) | const |
void ana::svalue::dump | ( | bool | simple | ) | const |
|
pure virtual |
Implemented in ana::asm_output_svalue, ana::binop_svalue, ana::bits_within_svalue, ana::compound_svalue, ana::conjured_svalue, ana::const_fn_result_svalue, ana::constant_svalue, ana::initial_svalue, ana::placeholder_svalue, ana::poisoned_svalue, ana::region_svalue, ana::repeated_svalue, ana::setjmp_svalue, ana::sub_svalue, ana::unaryop_svalue, ana::unknown_svalue, ana::unmergeable_svalue, and ana::widening_svalue.
|
inlinevirtual |
Reimplemented in ana::asm_output_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::binop_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::bits_within_svalue.
References NULL.
|
inlinevirtual |
|
inlinevirtual |
Reimplemented in ana::conjured_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::const_fn_result_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::constant_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::initial_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::poisoned_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::region_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::repeated_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::setjmp_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::sub_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::unaryop_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::unmergeable_svalue.
References NULL.
|
inlinevirtual |
Reimplemented in ana::widening_svalue.
References NULL.
const svalue * ana::svalue::extract_bit_range | ( | tree | type, |
const bit_range & | subrange, | ||
region_model_manager * | mgr ) const |
References svalue().
|
inlineinherited |
References m_complexity.
Referenced by ana::binop_svalue::binop_svalue(), and ana::widening_svalue::widening_svalue().
|
pure virtual |
Implemented in ana::asm_output_svalue, ana::binop_svalue, ana::bits_within_svalue, ana::compound_svalue, ana::conjured_svalue, ana::const_fn_result_svalue, ana::constant_svalue, ana::initial_svalue, ana::placeholder_svalue, ana::poisoned_svalue, ana::region_svalue, ana::repeated_svalue, ana::setjmp_svalue, ana::sub_svalue, ana::unaryop_svalue, ana::unknown_svalue, ana::unmergeable_svalue, and ana::widening_svalue.
Referenced by contains_unknown_p().
|
inline |
References m_type.
Referenced by ana::compound_svalue::make_key(), and ana::unmergeable_svalue::unmergeable_svalue().
|
virtual |
bool ana::svalue::live_p | ( | const svalue_set * | live_svalues, |
const region_model * | model ) const |
std::unique_ptr< text_art::tree_widget > ana::svalue::make_dump_widget | ( | const dump_widget_info & | dwi, |
const char * | prefix = nullptr ) const |
|
virtual |
tree ana::svalue::maybe_get_constant | ( | ) | const |
const region * ana::svalue::maybe_get_deref_base_region | ( | ) | const |
const region * ana::svalue::maybe_get_region | ( | ) | const |
bool ana::svalue::maybe_print_for_user | ( | pretty_printer * | pp, |
const region_model & | model, | ||
const svalue * | outer_sval = nullptr ) const |
References svalue().
void ana::svalue::print | ( | const region_model & | model, |
pretty_printer * | pp ) const |
|
privatepure virtual |
Implemented in ana::asm_output_svalue, ana::binop_svalue, ana::bits_within_svalue, ana::compound_svalue, ana::conjured_svalue, ana::const_fn_result_svalue, ana::constant_svalue, ana::initial_svalue, ana::placeholder_svalue, ana::poisoned_svalue, ana::region_svalue, ana::repeated_svalue, ana::setjmp_svalue, ana::sub_svalue, ana::unaryop_svalue, ana::unknown_svalue, ana::unmergeable_svalue, and ana::widening_svalue.
|
protected |
std::unique_ptr< json::value > ana::svalue::to_json | ( | ) | const |
|
privateinherited |
Referenced by get_complexity(), and symbol().
|
private |
Referenced by get_type(), and svalue().