|
| conjured_svalue (symbol::id_t id, tree type, const gimple *stmt, const region *id_reg, unsigned idx) |
|
enum svalue_kind | get_kind () const final override |
|
const conjured_svalue * | dyn_cast_conjured_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 gimple * | get_stmt () const |
|
const region * | get_id_region () const |
|
bool | lhs_value_p () 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::value > | to_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_svalue * | dyn_cast_region_svalue () const |
|
virtual const constant_svalue * | dyn_cast_constant_svalue () const |
|
virtual const poisoned_svalue * | dyn_cast_poisoned_svalue () const |
|
virtual const setjmp_svalue * | dyn_cast_setjmp_svalue () const |
|
virtual const initial_svalue * | dyn_cast_initial_svalue () const |
|
virtual const unaryop_svalue * | dyn_cast_unaryop_svalue () const |
|
virtual const binop_svalue * | dyn_cast_binop_svalue () const |
|
virtual const sub_svalue * | dyn_cast_sub_svalue () const |
|
virtual const repeated_svalue * | dyn_cast_repeated_svalue () const |
|
virtual const bits_within_svalue * | dyn_cast_bits_within_svalue () const |
|
virtual const unmergeable_svalue * | dyn_cast_unmergeable_svalue () const |
|
virtual const widening_svalue * | dyn_cast_widening_svalue () const |
|
virtual const compound_svalue * | dyn_cast_compound_svalue () const |
|
virtual const asm_output_svalue * | dyn_cast_asm_output_svalue () const |
|
virtual const const_fn_result_svalue * | dyn_cast_const_fn_result_svalue () const |
|
tree | maybe_get_constant () const |
|
const region * | maybe_get_region () const |
|
const svalue * | maybe_undo_cast () const |
|
const svalue * | unwrap_any_unmergeable () const |
|
const svalue * | can_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 svalue * | extract_bit_range (tree type, const bit_range &subrange, region_model_manager *mgr) const |
|
virtual const svalue * | maybe_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 region * | maybe_get_deref_base_region () const |
|
bool | maybe_print_for_user (pretty_printer *pp, const region_model &model, const svalue *outer_sval=nullptr) const |
|
const complexity & | get_complexity () const |
|
id_t | get_id () const |
|
A defined value arising from a statement, where we want to identify a
particular unknown value, rather than resorting to the unknown_value
singleton, so that the value can have sm-state.
Comparisons of variables that share the same conjured_svalue are known
to be equal, even if we don't know what the value is.
For example, this is used for the values of regions that may have been
touched when calling an unknown function.
The value captures a region as well as a stmt in order to avoid falsely
aliasing the various values that could arise in one statement. For
example, after:
unknown_fn (&a, &b);
we want values to clobber a and b with, but we don't want to use the
same value, or it would falsely implicitly assume that a == b.