21#ifndef GCC_ANALYZER_SVALUE_H
22#define GCC_ANALYZER_SVALUE_H
27#include "text-art/widget.h"
30using text_art::dump_widget_info;
108 std::unique_ptr<json::value>
to_json ()
const;
110 std::unique_ptr<text_art::tree_widget>
112 const char *prefix =
nullptr)
const;
189 const svalue *outer_sval =
nullptr)
const;
203 const dump_widget_info &dwi)
const = 0;
226 return hstate.
end ();
260 const dump_widget_info &dwi)
const final override;
289 static const bool empty_zero_p =
false;
313 return hstate.
end ();
349 const dump_widget_info &dwi)
const final override;
384 static const bool empty_zero_p =
false;
409 const dump_widget_info &dwi)
const final override;
459 return hstate.
end ();
489 const dump_widget_info &dwi)
const final override;
520 static const bool empty_zero_p =
false;
531 const gcall *setjmp_call)
532 : m_enode (enode), m_setjmp_call (setjmp_call)
538 return (m_enode == other.
m_enode
545 hstate->
add_ptr (m_setjmp_call);
565 : m_record (record), m_type (
type)
571 m_record.add_to_hash (&hstate);
573 return hstate.
end ();
584 bool is_empty ()
const {
return m_type ==
reinterpret_cast<tree> (2); }
606 const dump_widget_info &dwi)
const final override;
631 static const bool empty_zero_p =
false;
663 const dump_widget_info &dwi)
const final override;
699 : m_type (
type), m_op (op), m_arg (arg)
708 return hstate.
end ();
713 return (m_type == other.
m_type
714 && m_op == other.
m_op
715 && m_arg == other.
m_arg);
721 bool is_empty ()
const {
return m_type ==
reinterpret_cast<tree> (2); }
745 const dump_widget_info &dwi)
const final override;
777 static const bool empty_zero_p =
false;
793 : m_type (
type), m_op (op), m_arg0 (arg0), m_arg1 (arg1)
803 return hstate.
end ();
808 return (m_type == other.
m_type
809 && m_op == other.
m_op
811 && m_arg1 == other.
m_arg1);
817 bool is_empty ()
const {
return m_type ==
reinterpret_cast<tree> (2); }
828 arg1->get_complexity ()),
831 m_op (op), m_arg0 (arg0), m_arg1 (arg1)
849 const dump_widget_info &dwi)
const final override;
872 return sval->get_kind () ==
SK_BINOP;
878 static const bool empty_zero_p =
false;
894 : m_type (
type), m_parent_svalue (parent_svalue), m_subregion (subregion)
901 hstate.
add_ptr (m_parent_svalue);
903 return hstate.
end ();
908 return (m_type == other.
m_type
916 bool is_empty ()
const {
return m_type ==
reinterpret_cast<tree> (2); }
937 const dump_widget_info &dwi)
const final override;
958 return sval->get_kind () ==
SK_SUB;
964 static const bool empty_zero_p =
false;
981 const svalue *inner_svalue)
982 : m_type (
type), m_outer_size (outer_size), m_inner_svalue (inner_svalue)
990 hstate.
add_ptr (m_inner_svalue);
991 return hstate.
end ();
996 return (m_type == other.
m_type
1012 const svalue *outer_size,
1013 const svalue *inner_svalue);
1027 const dump_widget_info &dwi)
const final override;
1059 static const bool empty_zero_p =
false;
1077 const svalue *inner_svalue)
1078 : m_type (
type), m_bits (bits), m_inner_svalue (inner_svalue)
1085 hstate.
add_ptr (m_inner_svalue);
1086 return hstate.
end ();
1091 return (m_type == other.
m_type
1092 && m_bits == other.
m_bits
1108 const svalue *inner_svalue);
1123 const dump_widget_info &dwi)
const final override;
1155 static const bool empty_zero_p =
false;
1189 const dump_widget_info &dwi)
const final override;
1234 const dump_widget_info &dwi)
const final override;
1274 : m_type (
type), m_point (point),
1275 m_base_sval (base_sval), m_iter_sval (iter_sval)
1283 return hstate.
end ();
1288 return (m_type == other.
m_type
1315 iter_sval->get_complexity ()),
1319 m_base_sval (base_sval), m_iter_sval (iter_sval)
1337 const dump_widget_info &dwi)
const final override;
1348 tree rhs_cst)
const;
1369 static const bool empty_zero_p =
false;
1399 : m_type (
type), m_map_ptr (map_ptr)
1407 return hstate.
end ();
1412 return (m_type == other.
m_type
1439 const dump_widget_info &dwi)
const final override;
1450 return key_t (get_type (), &m_map);
1477 static const bool empty_zero_p =
false;
1493 : m_model (model), m_ctxt (ctxt)
1527 : m_type (
type),
m_stmt (stmt), m_id_reg (id_reg), m_idx (idx)
1536 return hstate.
end ();
1541 return (m_type == other.
m_type
1544 && m_idx == other.
m_idx);
1564 const region *id_reg,
unsigned idx)
1566 m_stmt (stmt), m_id_reg (id_reg), m_idx (idx)
1583 const dump_widget_info &dwi)
const final override;
1610 static const bool empty_zero_p =
true;
1627 static const unsigned MAX_INPUTS = 2;
1633 const char *asm_string,
1634 unsigned output_idx,
1636 : m_type (
type), m_asm_string (asm_string), m_output_idx (output_idx),
1637 m_num_inputs (inputs.length ())
1640 for (
unsigned i = 0;
i < m_num_inputs;
i++)
1641 m_input_arr[
i] = inputs[
i];
1649 hstate.
add_int (m_output_idx);
1650 for (
unsigned i = 0;
i < m_num_inputs;
i++)
1652 return hstate.
end ();
1657 if (!(m_type == other.
m_type
1662 for (
unsigned i = 0;
i < m_num_inputs;
i++)
1670 void mark_deleted () { m_asm_string =
reinterpret_cast<const char *
> (1); }
1674 return m_asm_string ==
reinterpret_cast<const char *
> (1);
1687 const char *asm_string,
1688 unsigned output_idx,
1689 unsigned num_outputs,
1692 m_asm_string (asm_string),
1693 m_output_idx (output_idx),
1694 m_num_outputs (num_outputs),
1695 m_num_inputs (inputs.length ())
1698 for (
unsigned i = 0;
i < m_num_inputs;
i++)
1699 m_input_arr[
i] = inputs[
i];
1715 const dump_widget_info &dwi)
const final override;
1756 static const bool empty_zero_p =
true;
1773 static const unsigned MAX_INPUTS = 2;
1781 : m_type (
type), m_fndecl (fndecl),
1782 m_num_inputs (inputs.length ())
1785 for (
unsigned i = 0;
i < m_num_inputs;
i++)
1786 m_input_arr[
i] = inputs[
i];
1794 for (
unsigned i = 0;
i < m_num_inputs;
i++)
1796 return hstate.
end ();
1801 if (!(m_type == other.
m_type
1805 for (
unsigned i = 0;
i < m_num_inputs;
i++)
1816 return m_fndecl ==
reinterpret_cast<tree> (1);
1832 m_num_inputs (inputs.length ())
1835 for (
unsigned i = 0;
i < m_num_inputs;
i++)
1836 m_input_arr[
i] = inputs[
i];
1855 const dump_widget_info &dwi)
const final override;
1887 static const bool empty_zero_p =
true;
const asm_output_svalue * dyn_cast_asm_output_svalue() const final override
Definition svalue.h:1704
void dump_input(pretty_printer *pp, unsigned input_idx, const svalue *sval, bool simple) const
const char * get_asm_string() const
Definition svalue.h:1719
asm_output_svalue(symbol::id_t id, tree type, const char *asm_string, unsigned output_idx, unsigned num_outputs, const vec< const svalue * > &inputs)
Definition svalue.h:1685
const char * m_asm_string
Definition svalue.h:1732
unsigned m_num_inputs
Definition svalue.h:1739
unsigned m_output_idx
Definition svalue.h:1733
unsigned get_num_outputs() const
Definition svalue.h:1721
unsigned input_idx_to_asm_idx(unsigned input_idx) const
unsigned get_num_inputs() const
Definition svalue.h:1722
enum svalue_kind get_kind() const final override
Definition svalue.h:1702
const svalue * get_input(unsigned idx) const
Definition svalue.h:1723
unsigned m_num_outputs
Definition svalue.h:1737
void print_dump_widget_label(pretty_printer *pp) const final override
void accept(visitor *v) const final override
void dump_to_pp(pretty_printer *pp, bool simple) const final override
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
unsigned get_output_idx() const
Definition svalue.h:1720
map_t::iterator iterator_t
Definition store.h:511
enum tree_code get_op() const
Definition svalue.h:855
const svalue * get_arg1() const
Definition svalue.h:857
void accept(visitor *v) const final override
enum tree_code m_op
Definition svalue.h:860
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
const svalue * get_arg0() const
Definition svalue.h:856
const svalue * m_arg1
Definition svalue.h:862
enum svalue_kind get_kind() const final override
Definition svalue.h:837
void print_dump_widget_label(pretty_printer *pp) const final override
binop_svalue(symbol::id_t id, tree type, enum tree_code op, const svalue *arg0, const svalue *arg1)
Definition svalue.h:825
const svalue * m_arg0
Definition svalue.h:861
void dump_to_pp(pretty_printer *pp, bool simple) const final override
bool implicitly_live_p(const svalue_set *, const region_model *) const final override
const binop_svalue * dyn_cast_binop_svalue() const final override
Definition svalue.h:838
enum svalue_kind get_kind() const final override
Definition svalue.h:1110
const bit_range m_bits
Definition svalue.h:1138
const svalue * m_inner_svalue
Definition svalue.h:1139
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
bool implicitly_live_p(const svalue_set *, const region_model *) const final override
void accept(visitor *v) const final override
bits_within_svalue(symbol::id_t id, tree type, const bit_range &bits, const svalue *inner_svalue)
void dump_to_pp(pretty_printer *pp, bool simple) const final override
const svalue * get_inner_svalue() const
Definition svalue.h:1130
const bits_within_svalue * dyn_cast_bits_within_svalue() const final override
Definition svalue.h:1112
const bit_range & get_bits() const
Definition svalue.h:1129
void print_dump_widget_label(pretty_printer *pp) const final override
const svalue * maybe_fold_bits_within(tree type, const bit_range &subrange, region_model_manager *mgr) const final override
iterator_t begin() const
Definition svalue.h:1445
static complexity calc_complexity(const binding_map &map)
compound_svalue(symbol::id_t id, tree type, const binding_map &map)
iterator_t end() const
Definition svalue.h:1446
void print_dump_widget_label(pretty_printer *pp) const final override
void dump_to_pp(pretty_printer *pp, bool simple) const final override
const binding_map & get_map() const
Definition svalue.h:1443
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:1427
binding_map::iterator_t iterator_t
Definition svalue.h:1391
const svalue * maybe_fold_bits_within(tree type, const bit_range &subrange, region_model_manager *mgr) const final override
void accept(visitor *v) const final override
binding_map m_map
Definition svalue.h:1461
const compound_svalue * dyn_cast_compound_svalue() const final override
Definition svalue.h:1428
void purge(const conjured_svalue *sval) const
conjured_purge(region_model *model, region_model_context *ctxt)
Definition svalue.h:1492
region_model_context * m_ctxt
Definition svalue.h:1500
region_model * m_model
Definition svalue.h:1499
void accept(visitor *v) const final override
const gimple * get_stmt() const
Definition svalue.h:1587
const conjured_svalue * dyn_cast_conjured_svalue() const final override
Definition svalue.h:1572
enum svalue_kind get_kind() const final override
Definition svalue.h:1571
const region * m_id_reg
Definition svalue.h:1593
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
const gimple * m_stmt
Definition svalue.h:1592
void print_dump_widget_label(pretty_printer *pp) const final override
unsigned m_idx
Definition svalue.h:1594
void dump_to_pp(pretty_printer *pp, bool simple) const final override
const region * get_id_region() const
Definition svalue.h:1588
conjured_svalue(symbol::id_t id, tree type, const gimple *stmt, const region *id_reg, unsigned idx)
Definition svalue.h:1563
tree m_fndecl
Definition svalue.h:1869
unsigned get_num_inputs() const
Definition svalue.h:1860
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
Definition svalue.h:1859
const svalue * get_input(unsigned idx) const
Definition svalue.h:1861
enum svalue_kind get_kind() const final override
Definition svalue.h:1839
void dump_input(pretty_printer *pp, unsigned input_idx, const svalue *sval, bool simple) const
const_fn_result_svalue(symbol::id_t id, tree type, tree fndecl, const vec< const svalue * > &inputs)
Definition svalue.h:1826
unsigned m_num_inputs
Definition svalue.h:1870
void dump_to_pp(pretty_printer *pp, bool simple) const final override
const const_fn_result_svalue * dyn_cast_const_fn_result_svalue() const final override
Definition svalue.h:1844
void print_dump_widget_label(pretty_printer *pp) const final override
bool all_zeroes_p() const final override
static tristate eval_condition(const constant_svalue *lhs, enum tree_code op, const constant_svalue *rhs)
enum svalue_kind get_kind() const final override
Definition svalue.h:339
const svalue * maybe_fold_bits_within(tree type, const bit_range &subrange, region_model_manager *mgr) const final override
const constant_svalue * dyn_cast_constant_svalue() const final override
Definition svalue.h:341
constant_svalue(symbol::id_t id, tree type, tree cst_expr)
Definition svalue.h:330
tree get_constant() const
Definition svalue.h:355
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
tree m_cst_expr
Definition svalue.h:368
void dump_to_pp(pretty_printer *pp, bool simple) const final override
void accept(visitor *v) const final override
bool implicitly_live_p(const svalue_set *, const region_model *) const final override
Definition exploded-graph.h:203
Definition program-point.h:73
const initial_svalue * dyn_cast_initial_svalue() const final override
Definition svalue.h:655
const region * get_region() const
Definition svalue.h:671
void accept(visitor *v) const final override
bool initial_value_of_param_p() const
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
const region * m_reg
Definition svalue.h:674
bool implicitly_live_p(const svalue_set *, const region_model *) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:653
void print_dump_widget_label(pretty_printer *pp) const final override
initial_svalue(symbol::id_t id, tree type, const region *reg)
Definition svalue.h:647
void dump_to_pp(pretty_printer *pp, bool simple) const final override
void dump_to_pp(pretty_printer *pp, bool simple) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:1226
placeholder_svalue(symbol::id_t id, tree type, const char *name)
Definition svalue.h:1221
const char * m_name
Definition svalue.h:1241
const char * get_name() const
Definition svalue.h:1238
void accept(visitor *v) 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
enum poison_kind get_poison_kind() const
Definition svalue.h:498
void accept(visitor *v) const final override
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
const svalue * maybe_fold_bits_within(tree type, const bit_range &subrange, region_model_manager *mgr) const final override
const poisoned_svalue * dyn_cast_poisoned_svalue() const final override
Definition svalue.h:481
void dump_to_pp(pretty_printer *pp, bool simple) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:479
bool can_have_associated_state_p() const final override
Definition svalue.h:501
enum poison_kind m_kind
Definition svalue.h:504
poisoned_svalue(enum poison_kind kind, symbol::id_t id, tree type)
Definition svalue.h:476
void print_dump_widget_label(pretty_printer *pp) const final override
Definition region-model.h:718
Definition region-model-manager.h:32
Definition region-model.h:263
enum svalue_kind get_kind() const final override
Definition svalue.h:250
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
const region_svalue * dyn_cast_region_svalue() const final override
Definition svalue.h:252
void dump_to_pp(pretty_printer *pp, bool simple) const final override
const region * get_pointee() const
Definition svalue.h:266
static tristate eval_condition(const region_svalue *lhs_ptr, enum tree_code op, const region_svalue *rhs_ptr)
bool implicitly_live_p(const svalue_set *, const region_model *) const final override
void print_dump_widget_label(pretty_printer *pp) const final override
void accept(visitor *v) const final override
region_svalue(symbol::id_t id, tree type, const region *reg)
Definition svalue.h:243
const region * m_reg
Definition svalue.h:273
const repeated_svalue * dyn_cast_repeated_svalue() const final override
Definition svalue.h:1016
const svalue * get_inner_svalue() const
Definition svalue.h:1032
bool all_zeroes_p() const final override
void dump_to_pp(pretty_printer *pp, bool simple) const final override
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
void print_dump_widget_label(pretty_printer *pp) const final override
void accept(visitor *v) const final override
const svalue * get_outer_size() const
Definition svalue.h:1031
enum svalue_kind get_kind() const final override
Definition svalue.h:1015
repeated_svalue(symbol::id_t id, tree type, const svalue *outer_size, const svalue *inner_svalue)
const setjmp_svalue * dyn_cast_setjmp_svalue() const final override
Definition svalue.h:598
void accept(visitor *v) const final override
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
void dump_to_pp(pretty_printer *pp, bool simple) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:596
setjmp_svalue(const setjmp_record &setjmp_record, symbol::id_t id, tree type)
Definition svalue.h:590
const setjmp_record & get_setjmp_record() const
Definition svalue.h:612
void print_dump_widget_label(pretty_printer *pp) const final override
setjmp_record m_setjmp_record
Definition svalue.h:615
int get_enode_index() const
const svalue * get_parent() const
Definition svalue.h:943
const region * m_subregion
Definition svalue.h:948
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
void print_dump_widget_label(pretty_printer *pp) const final override
bool implicitly_live_p(const svalue_set *, const region_model *) const final override
void accept(visitor *v) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:925
const region * get_subregion() const
Definition svalue.h:944
const svalue * m_parent_svalue
Definition svalue.h:947
sub_svalue(symbol::id_t id, tree type, const svalue *parent_svalue, const region *subregion)
const sub_svalue * dyn_cast_sub_svalue() const final override
Definition svalue.h:926
void dump_to_pp(pretty_printer *pp, bool simple) const final override
virtual const unaryop_svalue * dyn_cast_unaryop_svalue() const
Definition svalue.h:125
virtual const compound_svalue * dyn_cast_compound_svalue() const
Definition svalue.h:139
virtual void accept(visitor *v) const =0
virtual const asm_output_svalue * dyn_cast_asm_output_svalue() const
Definition svalue.h:143
virtual void dump_to_pp(pretty_printer *pp, bool simple) const =0
virtual const repeated_svalue * dyn_cast_repeated_svalue() const
Definition svalue.h:131
const svalue * extract_bit_range(tree type, const bit_range &subrange, region_model_manager *mgr) const
virtual const widening_svalue * dyn_cast_widening_svalue() const
Definition svalue.h:137
bool live_p(const svalue_set *live_svalues, const region_model *model) const
const region * maybe_get_deref_base_region() const
virtual const poisoned_svalue * dyn_cast_poisoned_svalue() const
Definition svalue.h:119
tree m_type
Definition svalue.h:205
void dump(bool simple) const
bool involves_p(const svalue *other) const
label_text get_desc(bool simple=true) const
virtual const unmergeable_svalue * dyn_cast_unmergeable_svalue() const
Definition svalue.h:135
virtual const const_fn_result_svalue * dyn_cast_const_fn_result_svalue() const
Definition svalue.h:145
virtual const region_svalue * dyn_cast_region_svalue() const
Definition svalue.h:115
virtual enum svalue_kind get_kind() const =0
virtual ~svalue()
Definition svalue.h:94
virtual const initial_svalue * dyn_cast_initial_svalue() const
Definition svalue.h:123
virtual const svalue * maybe_fold_bits_within(tree type, const bit_range &subrange, region_model_manager *mgr) const
virtual bool can_have_associated_state_p() const
Definition svalue.h:183
tree maybe_get_constant() const
virtual const sub_svalue * dyn_cast_sub_svalue() const
Definition svalue.h:129
const svalue * can_merge_p(const svalue *other, region_model_manager *mgr, model_merger *merger) const
void print_svalue_node_label(pretty_printer *pp) const
virtual const constant_svalue * dyn_cast_constant_svalue() const
Definition svalue.h:117
virtual const conjured_svalue * dyn_cast_conjured_svalue() const
Definition svalue.h:141
static int cmp_ptr_ptr(const void *, const void *)
svalue(complexity c, symbol::id_t id, tree type)
Definition svalue.h:192
virtual void print_dump_widget_label(pretty_printer *pp) const =0
virtual const binop_svalue * dyn_cast_binop_svalue() const
Definition svalue.h:127
const svalue * unwrap_any_unmergeable() const
virtual const setjmp_svalue * dyn_cast_setjmp_svalue() const
Definition svalue.h:121
std::unique_ptr< text_art::tree_widget > make_dump_widget(const dump_widget_info &dwi, const char *prefix=nullptr) const
virtual void add_dump_widget_children(text_art::tree_widget &, const dump_widget_info &dwi) const =0
tree get_type() const
Definition svalue.h:96
static int cmp_ptr(const svalue *, const svalue *)
void print(const region_model &model, pretty_printer *pp) const
const svalue * maybe_undo_cast() const
const region * maybe_get_region() const
virtual const bits_within_svalue * dyn_cast_bits_within_svalue() const
Definition svalue.h:133
bool maybe_print_for_user(pretty_printer *pp, const region_model &model, const svalue *outer_sval=nullptr) const
std::unique_ptr< json::value > to_json() const
virtual bool implicitly_live_p(const svalue_set *live_svalues, const region_model *model) const
virtual bool all_zeroes_p() const
unsigned id_t
Definition symbol.h:33
void accept(visitor *v) const final override
const svalue * m_arg
Definition svalue.h:761
unaryop_svalue(symbol::id_t id, tree type, enum tree_code op, const svalue *arg)
Definition svalue.h:728
void dump_to_pp(pretty_printer *pp, bool simple) const final override
const svalue * get_arg() const
Definition svalue.h:752
enum tree_code get_op() const
Definition svalue.h:751
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
bool implicitly_live_p(const svalue_set *, const region_model *) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:735
const unaryop_svalue * dyn_cast_unaryop_svalue() const final override
Definition svalue.h:737
enum tree_code m_op
Definition svalue.h:760
void print_dump_widget_label(pretty_printer *pp) const final override
const svalue * maybe_fold_bits_within(tree type, const bit_range &subrange, region_model_manager *mgr) const final override
bool can_have_associated_state_p() const final override
Definition svalue.h:419
unknown_svalue(symbol::id_t id, tree type)
Definition svalue.h:397
void print_dump_widget_label(pretty_printer *pp) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:401
void accept(visitor *v) const final override
void dump_to_pp(pretty_printer *pp, bool simple) const final override
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
const svalue * maybe_fold_bits_within(tree type, const bit_range &subrange, region_model_manager *mgr) const final override
const unmergeable_svalue * dyn_cast_unmergeable_svalue() const final override
Definition svalue.h:1181
void add_dump_widget_children(text_art::tree_widget &w, const dump_widget_info &dwi) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:1179
void accept(visitor *v) const final override
unmergeable_svalue(symbol::id_t id, const svalue *arg)
Definition svalue.h:1174
const svalue * get_arg() const
Definition svalue.h:1195
void print_dump_widget_label(pretty_printer *pp) const final override
bool implicitly_live_p(const svalue_set *, const region_model *) const final override
void dump_to_pp(pretty_printer *pp, bool simple) const final override
const svalue * m_arg
Definition svalue.h:1198
Definition region-model.h:222
void dump_to_pp(pretty_printer *pp, bool simple) const final override
const svalue * m_base_sval
Definition svalue.h:1352
const svalue * get_base_svalue() const
Definition svalue.h:1342
widening_svalue(symbol::id_t id, tree type, const function_point &point, const svalue *base_sval, const svalue *iter_sval)
Definition svalue.h:1312
direction_t
Definition svalue.h:1306
@ DIR_DESCENDING
Definition svalue.h:1308
@ DIR_ASCENDING
Definition svalue.h:1307
function_point m_point
Definition svalue.h:1351
const widening_svalue * dyn_cast_widening_svalue() const final override
Definition svalue.h:1326
void print_dump_widget_label(pretty_printer *pp) const final override
enum svalue_kind get_kind() const final override
Definition svalue.h:1325
const function_point & get_point() const
Definition svalue.h:1341
const svalue * get_iter_svalue() const
Definition svalue.h:1343
tristate eval_condition_without_cm(enum tree_code op, tree rhs_cst) const
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 svalue * m_iter_sval
Definition svalue.h:1353
enum direction_t get_direction() const
void add_int(unsigned v)
Definition inchash.h:55
hashval_t end() const
Definition inchash.h:49
void add_ptr(const void *ptr)
Definition inchash.h:94
Definition pretty-print.h:241
union tree_node * tree
Definition coretypes.h:97
static struct string2counter_map map[debug_counter_number_of_counters]
Definition dbgcnt.cc:39
bool operator==(const nowarn_spec_t &lhs, const nowarn_spec_t &rhs)
Definition diagnostic-spec.h:131
void final(rtx_insn *first, FILE *file, int optimize_p)
Definition final.cc:2004
tree_code
Definition genmatch.cc:992
Definition access-diagram.h:30
poison_kind
Definition svalue.h:425
@ POISON_KIND_DELETED
Definition svalue.h:433
@ POISON_KIND_POPPED_STACK
Definition svalue.h:436
@ POISON_KIND_UNINIT
Definition svalue.h:427
@ POISON_KIND_FREED
Definition svalue.h:430
const char * poison_kind_to_str(enum poison_kind)
svalue_kind
Definition svalue.h:38
@ SK_BINOP
Definition svalue.h:46
@ SK_REPEATED
Definition svalue.h:48
@ SK_BITS_WITHIN
Definition svalue.h:49
@ SK_INITIAL
Definition svalue.h:44
@ SK_COMPOUND
Definition svalue.h:53
@ SK_ASM_OUTPUT
Definition svalue.h:55
@ SK_UNKNOWN
Definition svalue.h:41
@ SK_SUB
Definition svalue.h:47
@ SK_UNARYOP
Definition svalue.h:45
@ SK_POISONED
Definition svalue.h:42
@ SK_CONSTANT
Definition svalue.h:40
@ SK_PLACEHOLDER
Definition svalue.h:51
@ SK_UNMERGEABLE
Definition svalue.h:50
@ SK_CONJURED
Definition svalue.h:54
@ SK_SETJMP
Definition svalue.h:43
@ SK_CONST_FN_RESULT
Definition svalue.h:56
@ SK_WIDENING
Definition svalue.h:52
@ SK_REGION
Definition svalue.h:39
i
Definition poly-int.h:776
key_t(tree type, const char *asm_string, unsigned output_idx, const vec< const svalue * > &inputs)
Definition svalue.h:1632
unsigned m_num_inputs
Definition svalue.h:1681
bool is_deleted() const
Definition svalue.h:1672
void mark_empty()
Definition svalue.h:1671
hashval_t hash() const
Definition svalue.h:1644
bool is_empty() const
Definition svalue.h:1676
unsigned m_output_idx
Definition svalue.h:1680
void mark_deleted()
Definition svalue.h:1670
const char * m_asm_string
Definition svalue.h:1679
const svalue * m_input_arr[MAX_INPUTS]
Definition svalue.h:1682
tree m_type
Definition svalue.h:1678
bool is_empty() const
Definition svalue.h:817
enum tree_code m_op
Definition svalue.h:820
hashval_t hash() const
Definition svalue.h:796
const svalue * m_arg1
Definition svalue.h:822
tree m_type
Definition svalue.h:819
void mark_deleted()
Definition svalue.h:814
key_t(tree type, enum tree_code op, const svalue *arg0, const svalue *arg1)
Definition svalue.h:791
void mark_empty()
Definition svalue.h:815
bool is_deleted() const
Definition svalue.h:816
const svalue * m_arg0
Definition svalue.h:821
bool is_deleted() const
Definition svalue.h:1098
key_t(tree type, const bit_range &bits, const svalue *inner_svalue)
Definition svalue.h:1075
hashval_t hash() const
Definition svalue.h:1081
bool is_empty() const
Definition svalue.h:1099
void mark_empty()
Definition svalue.h:1097
bit_range m_bits
Definition svalue.h:1102
void mark_deleted()
Definition svalue.h:1096
const svalue * m_inner_svalue
Definition svalue.h:1103
tree m_type
Definition svalue.h:1101
Definition complexity.h:31
bool is_deleted() const
Definition svalue.h:1418
tree m_type
Definition svalue.h:1421
void mark_empty()
Definition svalue.h:1417
hashval_t hash() const
Definition svalue.h:1402
bool is_empty() const
Definition svalue.h:1419
key_t(tree type, const binding_map *map_ptr)
Definition svalue.h:1398
const binding_map * m_map_ptr
Definition svalue.h:1422
void mark_deleted()
Definition svalue.h:1416
unsigned m_idx
Definition svalue.h:1560
bool is_deleted() const
Definition svalue.h:1551
void mark_empty()
Definition svalue.h:1550
bool is_empty() const
Definition svalue.h:1555
const gimple * m_stmt
Definition svalue.h:1558
void mark_deleted()
Definition svalue.h:1549
key_t(tree type, const gimple *stmt, const region *id_reg, unsigned idx)
Definition svalue.h:1526
tree m_type
Definition svalue.h:1557
hashval_t hash() const
Definition svalue.h:1530
const region * m_id_reg
Definition svalue.h:1559
void mark_empty()
Definition svalue.h:1813
tree m_fndecl
Definition svalue.h:1821
hashval_t hash() const
Definition svalue.h:1789
const svalue * m_input_arr[MAX_INPUTS]
Definition svalue.h:1823
bool is_empty() const
Definition svalue.h:1818
tree m_type
Definition svalue.h:1820
void mark_deleted()
Definition svalue.h:1812
unsigned m_num_inputs
Definition svalue.h:1822
bool is_deleted() const
Definition svalue.h:1814
key_t(tree type, tree fndecl, const vec< const svalue * > &inputs)
Definition svalue.h:1778
bool is_empty() const
Definition svalue.h:324
void mark_deleted()
Definition svalue.h:321
bool is_deleted() const
Definition svalue.h:323
key_t(tree type, tree cst)
Definition svalue.h:304
tree m_cst
Definition svalue.h:327
hashval_t hash() const
Definition svalue.h:308
void mark_empty()
Definition svalue.h:322
tree m_type
Definition svalue.h:326
bool operator==(const key_t &other) const
Definition svalue.h:316
Definition region-model.h:1132
void mark_deleted()
Definition svalue.h:467
bool is_deleted() const
Definition svalue.h:469
hashval_t hash() const
Definition svalue.h:454
enum poison_kind m_kind
Definition svalue.h:472
bool is_empty() const
Definition svalue.h:470
key_t(enum poison_kind kind, tree type)
Definition svalue.h:450
bool operator==(const key_t &other) const
Definition svalue.h:462
tree m_type
Definition svalue.h:473
void mark_empty()
Definition svalue.h:468
bool operator==(const key_t &other) const
Definition svalue.h:229
bool is_deleted() const
Definition svalue.h:236
bool is_empty() const
Definition svalue.h:237
key_t(tree type, const region *reg)
Definition svalue.h:217
void mark_deleted()
Definition svalue.h:234
tree m_type
Definition svalue.h:239
const region * m_reg
Definition svalue.h:240
void mark_empty()
Definition svalue.h:235
hashval_t hash() const
Definition svalue.h:221
tree m_type
Definition svalue.h:1006
void mark_deleted()
Definition svalue.h:1001
const svalue * m_outer_size
Definition svalue.h:1007
hashval_t hash() const
Definition svalue.h:985
void mark_empty()
Definition svalue.h:1002
bool is_empty() const
Definition svalue.h:1004
key_t(tree type, const svalue *outer_size, const svalue *inner_svalue)
Definition svalue.h:979
const svalue * m_inner_svalue
Definition svalue.h:1008
bool is_deleted() const
Definition svalue.h:1003
static int cmp(const setjmp_record &rec1, const setjmp_record &rec2)
const exploded_node * m_enode
Definition svalue.h:550
const gcall * m_setjmp_call
Definition svalue.h:551
void add_to_hash(inchash::hash *hstate) const
Definition svalue.h:542
setjmp_record(const exploded_node *enode, const gcall *setjmp_call)
Definition svalue.h:530
key_t(const setjmp_record &record, tree type)
Definition svalue.h:564
hashval_t hash() const
Definition svalue.h:568
tree m_type
Definition svalue.h:587
setjmp_record m_record
Definition svalue.h:586
void mark_deleted()
Definition svalue.h:581
void mark_empty()
Definition svalue.h:582
bool is_deleted() const
Definition svalue.h:583
bool is_empty() const
Definition svalue.h:584
void mark_empty()
Definition svalue.h:914
void mark_deleted()
Definition svalue.h:913
bool is_deleted() const
Definition svalue.h:915
hashval_t hash() const
Definition svalue.h:897
tree m_type
Definition svalue.h:918
const svalue * m_parent_svalue
Definition svalue.h:919
key_t(tree type, const svalue *parent_svalue, const region *subregion)
Definition svalue.h:893
const region * m_subregion
Definition svalue.h:920
bool is_empty() const
Definition svalue.h:916
tree m_type
Definition svalue.h:723
bool is_deleted() const
Definition svalue.h:720
void mark_empty()
Definition svalue.h:719
bool is_empty() const
Definition svalue.h:721
hashval_t hash() const
Definition svalue.h:702
enum tree_code m_op
Definition svalue.h:724
const svalue * m_arg
Definition svalue.h:725
void mark_deleted()
Definition svalue.h:718
key_t(tree type, enum tree_code op, const svalue *arg)
Definition svalue.h:698
bool is_empty() const
Definition svalue.h:1297
const svalue * m_base_sval
Definition svalue.h:1301
void mark_deleted()
Definition svalue.h:1294
tree m_type
Definition svalue.h:1299
hashval_t hash() const
Definition svalue.h:1278
function_point m_point
Definition svalue.h:1300
bool is_deleted() const
Definition svalue.h:1296
key_t(tree type, const function_point &point, const svalue *base_sval, const svalue *iter_sval)
Definition svalue.h:1272
const svalue * m_iter_sval
Definition svalue.h:1302
void mark_empty()
Definition svalue.h:1295
Definition hash-traits.h:466
Definition collect2.cc:168
Definition analyzer.h:508
Definition gengtype.h:252
#define NULL
Definition system.h:50
#define gcc_assert(EXPR)
Definition system.h:814
#define TREE_TYPE(NODE)
Definition tree.h:512
#define CONSTANT_CLASS_P(NODE)
Definition tree.h:215
#define NULL_TREE
Definition tree.h:317
gimple * m_stmt
Definition value-pointer-equiv.cc:247