|
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.
|
inlinevirtual |
Reimplemented in ana::binop_svalue.
|
inlinevirtual |
Reimplemented in ana::bits_within_svalue.
|
inlinevirtual |
Reimplemented in ana::compound_svalue.
Referenced by contains_unknown_p().
|
inlinevirtual |
Reimplemented in ana::conjured_svalue.
|
inlinevirtual |
Reimplemented in ana::const_fn_result_svalue.
|
inlinevirtual |
Reimplemented in ana::constant_svalue.
|
inlinevirtual |
Reimplemented in ana::initial_svalue.
|
inlinevirtual |
Reimplemented in ana::poisoned_svalue.
|
inlinevirtual |
Reimplemented in ana::region_svalue.
|
inlinevirtual |
Reimplemented in ana::repeated_svalue.
|
inlinevirtual |
Reimplemented in ana::setjmp_svalue.
|
inlinevirtual |
Reimplemented in ana::sub_svalue.
|
inlinevirtual |
Reimplemented in ana::unaryop_svalue.
|
inlinevirtual |
Reimplemented in ana::unmergeable_svalue.
|
inlinevirtual |
Reimplemented in ana::widening_svalue.
| 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 |
| tree ana::svalue::maybe_get_type_from_typeinfo | ( | ) | 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().