22#define IREP2_EXPR(kind, pretty) class kind##2t;
116#define irep_typedefs(basename) \
117 template <typename... Args> \
118 inline expr2tc basename##2tc(Args && ...args) \
120 return make_irep<basename##2t>(std::forward<Args>(args)...); \
357 :
expr2t(
value.spec.get_type(), constant_floatbv_id),
423 static constexpr auto fields = std::make_tuple(
479 type->type_id == type2t::struct_id ||
480 type->type_id == type2t::complex_id ||
481 type->type_id == type2t::symbol_id);
517 const std::vector<expr2tc> &members)
530 assert(is_union_type(
type) ||
type->type_id == type2t::symbol_id);
538 static constexpr auto fields = std::make_tuple(
562 assert(
type->type_id == type2t::array_id);
646 unsigned int trd = 0,
647 unsigned int node = 0)
667 static constexpr auto fields = std::make_tuple(
717 static constexpr auto fields = std::make_tuple(
756 bool base_to_derived_ =
false)
774 bool base_to_derived_ =
false)
786 static constexpr auto fields = std::make_tuple(
877 static constexpr auto fields = std::make_tuple(
889#define ESBMC_DEFINE_RELATION2T(name) \
890 class name##2t : public expr2t \
893 expr2tc side_1, side_2; \
894 name##2t(const expr2tc &v1, const expr2tc &v2) \
895 : expr2t(get_bool_type(), name##_id), side_1(v1), side_2(v2) \
898 name##2t(const name##2t & ref) = default; \
899 expr2tc do_simplify() const override; \
900 static constexpr auto fields = \
901 std::make_tuple(&expr2t::type, &name##2t ::side_1, &name##2t ::side_2); \
902 static std::string field_names[esbmct::num_type_fields]; \
911#undef ESBMC_DEFINE_RELATION2T
919#define ESBMC_DEFINE_ARITH_2OP(name) \
920 class name##2t : public expr2t \
923 expr2tc side_1, side_2; \
924 name##2t(const type2tc &type, const expr2tc &v1, const expr2tc &v2) \
925 : expr2t(type, name##_id), side_1(v1), side_2(v2) \
927 assert_arith_2ops_consistency(type, name##_id, v1, v2); \
929 name##2t(const name##2t & ref) = default; \
930 expr2tc do_simplify() const override; \
931 static constexpr auto fields = \
932 std::make_tuple(&expr2t::type, &name##2t ::side_1, &name##2t ::side_2); \
933 static std::string field_names[esbmct::num_type_fields]; \
941#undef ESBMC_DEFINE_ARITH_2OP
945#define ESBMC_DEFINE_BIT_2OP(name) \
946 class name##2t : public expr2t \
949 expr2tc side_1, side_2; \
950 name##2t(const type2tc &type, const expr2tc &v1, const expr2tc &v2) \
951 : expr2t(type, name##_id), side_1(v1), side_2(v2) \
954 name##2t(const name##2t & ref) = default; \
955 expr2tc do_simplify() const override; \
956 static constexpr auto fields = \
957 std::make_tuple(&expr2t::type, &name##2t ::side_1, &name##2t ::side_2); \
958 static std::string field_names[esbmct::num_type_fields]; \
967#undef ESBMC_DEFINE_BIT_2OP
970#define ESBMC_DEFINE_ARITH_1OP(name) \
971 class name##2t : public expr2t \
975 name##2t(const type2tc &type, const expr2tc &v) \
976 : expr2t(type, name##_id), value(v) \
979 name##2t(const name##2t & ref) = default; \
980 expr2tc do_simplify() const override; \
981 static constexpr auto fields = \
982 std::make_tuple(&expr2t::type, &name##2t ::value); \
983 static std::string field_names[esbmct::num_type_fields]; \
990#undef ESBMC_DEFINE_ARITH_1OP
993#define ESBMC_DEFINE_POINTER_1OP(name) \
994 class name##2t : public expr2t \
998 name##2t(const type2tc &type, const expr2tc &v) \
999 : expr2t(type, name##_id), ptr_obj(v) \
1002 name##2t(const name##2t & ref) = default; \
1003 expr2tc do_simplify() const override; \
1004 static constexpr auto fields = \
1005 std::make_tuple(&expr2t::type, &name##2t ::ptr_obj); \
1006 static std::string field_names[esbmct::num_type_fields]; \
1011#undef ESBMC_DEFINE_POINTER_1OP
1016#define ESBMC_DEFINE_LOGIC_2OP(name) \
1017 class name##2t : public expr2t \
1020 expr2tc side_1, side_2; \
1021 name##2t(const expr2tc &s1, const expr2tc &s2) \
1022 : expr2t(get_bool_type(), name##_id), side_1(s1), side_2(s2) \
1025 name##2t(const name##2t & ref) = default; \
1026 expr2tc do_simplify() const override; \
1027 static constexpr auto fields = \
1028 std::make_tuple(&expr2t::type, &name##2t ::side_1, &name##2t ::side_2); \
1029 static std::string field_names[esbmct::num_type_fields]; \
1039#undef ESBMC_DEFINE_LOGIC_2OP
1043#define ESBMC_DEFINE_FP_PREDICATE_1OP(name) \
1044 class name##2t : public expr2t \
1048 name##2t(const expr2tc &operand) \
1049 : expr2t(get_bool_type(), name##_id), value(operand) \
1052 name##2t(const name##2t & ref) = default; \
1053 expr2tc do_simplify() const override; \
1054 static constexpr auto fields = std::make_tuple(&name##2t ::value); \
1055 static std::string field_names[esbmct::num_type_fields]; \
1062#undef ESBMC_DEFINE_FP_PREDICATE_1OP
1066#define ESBMC_DEFINE_OBJECT_PREDICATE_1OP(name) \
1067 class name##2t : public expr2t \
1071 name##2t(const expr2tc &operand) \
1072 : expr2t(get_bool_type(), name##_id), value(operand) \
1075 name##2t(const name##2t & ref) = default; \
1076 expr2tc do_simplify() const override; \
1077 static constexpr auto fields = std::make_tuple(&name##2t ::value); \
1078 static std::string field_names[esbmct::num_type_fields]; \
1084#undef ESBMC_DEFINE_OBJECT_PREDICATE_1OP
1088#define ESBMC_DEFINE_OBJECT_SIZE_1OP(name) \
1089 class name##2t : public expr2t \
1093 name##2t(const expr2tc &operand) \
1094 : expr2t(size_type2(), name##_id), value(operand) \
1097 name##2t(const name##2t & ref) = default; \
1098 expr2tc do_simplify() const override; \
1099 static constexpr auto fields = std::make_tuple(&name##2t ::value); \
1100 static std::string field_names[esbmct::num_type_fields]; \
1106#undef ESBMC_DEFINE_OBJECT_SIZE_1OP
1110#define ESBMC_DEFINE_OVERFLOW_INT32_1OP(name) \
1111 class name##2t : public expr2t \
1115 name##2t(const expr2tc &op) \
1116 : expr2t(get_int32_type(), name##_id), operand(op) \
1119 name##2t(const name##2t & ref) = default; \
1120 expr2tc do_simplify() const override; \
1121 static constexpr auto fields = \
1122 std::make_tuple(&expr2t::type, &name##2t ::operand); \
1123 static std::string field_names[esbmct::num_type_fields]; \
1128#undef ESBMC_DEFINE_OVERFLOW_INT32_1OP
1132#define ESBMC_DEFINE_TYPE_ONLY(name) \
1133 class name##2t : public expr2t \
1136 name##2t(const type2tc &type) : expr2t(type, name##_id) \
1139 name##2t(const name##2t & ref) = default; \
1140 expr2tc do_simplify() const override; \
1141 static constexpr auto fields = std::make_tuple(&expr2t::type); \
1142 static std::string field_names[esbmct::num_type_fields]; \
1148#undef ESBMC_DEFINE_TYPE_ONLY
1153#define ESBMC_DEFINE_CODE_EXPRESSION_1OP(name) \
1154 class name##2t : public expr2t \
1158 locationt location; \
1159 static constexpr std::size_t excluded_field_bytes = sizeof(locationt); \
1160 name##2t(const expr2tc &op, const locationt &loc = locationt()) \
1161 : expr2t(get_empty_type(), name##_id), operand(op), location(loc) \
1164 name##2t(const name##2t & ref) = default; \
1165 expr2tc do_simplify() const override; \
1166 static constexpr auto fields = std::make_tuple(&name##2t ::operand); \
1167 static std::string field_names[esbmct::num_type_fields]; \
1175#undef ESBMC_DEFINE_CODE_EXPRESSION_1OP
1180#define ESBMC_DEFINE_CODE_DECL(name) \
1181 class name##2t : public expr2t \
1185 locationt location; \
1186 static constexpr std::size_t excluded_field_bytes = sizeof(locationt); \
1188 const type2tc &type, \
1189 const irep_idt &n, \
1190 const locationt &loc = locationt()) \
1191 : expr2t(type, name##_id), value(n), location(loc) \
1194 name##2t(const name##2t & ref) = default; \
1195 expr2tc do_simplify() const override; \
1196 static constexpr auto fields = \
1197 std::make_tuple(&expr2t::type, &name##2t ::value); \
1198 static std::string field_names[esbmct::num_type_fields]; \
1202#undef ESBMC_DEFINE_CODE_DECL
1261 static constexpr auto fields = std::make_tuple(
1290#define ESBMC_DEFINE_IEEE_ARITH_2OP(name) \
1291 class name##2t : public expr2t \
1294 expr2tc rounding_mode, side_1, side_2; \
1296 const type2tc &type, \
1297 const expr2tc &v1, \
1298 const expr2tc &v2, \
1299 const expr2tc &rm) \
1300 : expr2t(type, name##_id), rounding_mode(rm), side_1(v1), side_2(v2) \
1303 name##2t(const name##2t & ref) = default; \
1304 expr2tc do_simplify() const override; \
1305 static constexpr auto fields = std::make_tuple( \
1307 &name##2t ::rounding_mode, \
1308 &name##2t ::side_1, \
1309 &name##2t ::side_2); \
1310 static std::string field_names[esbmct::num_type_fields]; \
1321#undef ESBMC_DEFINE_IEEE_ARITH_2OP
1357 static constexpr auto fields = std::make_tuple(
1386 static constexpr auto fields = std::make_tuple(
1411 static constexpr auto fields = std::make_tuple(
1432 assert(
type->type_id == type2t::signedbv_id);
1433 assert(
type->get_width() ==
config.ansi_c.address_width);
1468 bool is_implicit =
false,
1470 :
expr2t(pointer_type2tc(subtype,
false, rk), address_of_id),
1474 assert(ptrobj->
expr_id != expr2t::constant_int_id);
1475 assert(ptrobj->
expr_id != expr2t::address_of_id);
1481 static constexpr auto fields = std::make_tuple(
1520 static constexpr auto fields = std::make_tuple(
1562 static constexpr auto fields = std::make_tuple(
1577 void assert_consistency()
const;
1600 assert_consistency();
1607 static constexpr auto fields = std::make_tuple(
1673 (
type->type_id != type2t::code_id));
1723 static constexpr auto fields = std::make_tuple(
1752 is_array_type(source) || is_vector_type(source) ||
1812 static constexpr auto fields = std::make_tuple(
1862 static constexpr auto fields = std::make_tuple(
1949 const std::vector<expr2tc> &a,
1954 :
expr2t(t, sideeffect_id),
1968 static constexpr auto fields = std::make_tuple(
1990 const std::vector<expr2tc> &ops,
2026 static constexpr auto fields = std::make_tuple(
2042 const std::vector<expr2tc> &opers,
2053 static constexpr auto fields = std::make_tuple(
2113 const std::vector<expr2tc> &args)
2119 static constexpr auto fields = std::make_tuple(
2156 :
expr2t(t, object_descriptor_id),
2166 static constexpr auto fields = std::make_tuple(
2186 const std::vector<expr2tc> &args,
2197 static constexpr auto fields = std::make_tuple(
2246 static constexpr auto fields = std::make_tuple(
2272 unsigned pragma = 0)
2302 unsigned pragma = 0)
2312 static constexpr auto fields = std::make_tuple(
2338 unsigned pragma = 0)
2350 static constexpr auto fields = std::make_tuple(
2464 static constexpr auto fields = std::make_tuple(
2552 bool member_init_ =
false)
2553 :
expr2t(t, sideeffect_assign_id),
2563 static constexpr auto fields = std::make_tuple(
2583 static constexpr auto fields = std::make_tuple(
2640 const std::vector<irep_idt> &el,
2648 const std::vector<irep_idt> &el,
2649 const std::vector<expr2tc> &ops,
2659 static constexpr auto fields = std::make_tuple(
2676 const std::vector<irep_idt> &l,
2686 static constexpr auto fields = std::make_tuple(
2703 assert(is_unsignedbv_type(forward));
2704 assert(is_unsignedbv_type(aft));
2725 unsigned int upper_,
2726 unsigned int lower_)
2734 static constexpr auto fields = std::make_tuple(
2778#define expr_macros(name) \
2779 inline bool is_##name##2t(const expr2tc &t) \
2781 return t->expr_id == expr2t::name##_id; \
2783 inline const name##2t & to_##name##2t(const expr2tc &t) \
2785 return irep2_checked_expr_cast<const name##2t>( \
2786 *t, expr2t::name##_id, #name); \
2788 inline name##2t & to_##name##2t(expr2tc & t) \
2790 return irep2_checked_expr_cast<name##2t>( \
2791 *t.get(), expr2t::name##_id, #name); \
2793 inline const name##2t * try_to_##name##2t(const expr2tc &t) \
2795 return is_##name##2t(t) ? &to_##name##2t(t) : nullptr; \
2801#define IREP2_EXPR(kind, pretty) expr_macros(kind)
@ nearbyint
Definition builtin_names.h:36
type2tc get_int32_type()
Definition c_types.cpp:372
type2tc get_empty_type()
Definition c_types.cpp:424
type2tc get_bool_type()
Definition c_types.cpp:418
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:3865
expr2tc ptr_obj
Definition irep2_expr.h:1450
static constexpr auto fields
Definition irep2_expr.h:1481
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:850
address_of2t(const address_of2t &ref)=default
bool implicit
Primary constructor.
Definition irep2_expr.h:1463
address_of2t(const type2tc &subtype, const expr2tc &ptrobj, bool is_implicit=false, pointer_ref_kindt rk=pointer_ref_kindt::NONE)
Definition irep2_expr.h:1465
bitcast2t(const type2tc &type, const expr2tc &from_)
Primary constructor.
Definition irep2_expr.h:816
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:3459
static constexpr auto fields
Definition irep2_expr.h:833
bitcast2t(const bitcast2t &ref)=default
expr2tc from
Definition irep2_expr.h:810
expr2tc source_offset
Definition irep2_expr.h:1536
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:6688
bool big_endian
Definition irep2_expr.h:1538
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:854
expr2tc source_value
Definition irep2_expr.h:1535
static constexpr auto fields
Definition irep2_expr.h:1562
byte_update2t(const byte_update2t &ref)=default
byte_update2t(const type2tc &type, const expr2tc &source, const expr2tc &offset, const expr2tc &updateval, bool is_big_endian)
Primary constructor.
Definition irep2_expr.h:1545
expr2tc update_value
Definition irep2_expr.h:1537
expr2tc side_1
Definition irep2_expr.h:1250
cmp_three_way2t(const cmp_three_way2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:1261
cmp_three_way2t(const type2tc &t, const expr2tc &v1, const expr2tc &v2)
Definition irep2_expr.h:1253
expr2tc side_2
Definition irep2_expr.h:1251
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:5089
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:788
static constexpr auto fields
Definition irep2_expr.h:2621
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2610
code_asm2t(const code_asm2t &ref)=default
locationt location
Definition irep2_expr.h:2609
irep_idt value
Definition irep2_expr.h:2608
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:950
code_asm2t(const type2tc &type, const irep_idt &stringref, const locationt &loc=locationt())
Definition irep2_expr.h:2612
locationt location
Definition irep2_expr.h:2481
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2482
expr2tc guard
Definition irep2_expr.h:2480
code_assert2t(const code_assert2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:2490
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:940
code_assert2t(const expr2tc &g, const locationt &loc=locationt())
Definition irep2_expr.h:2484
locationt location
Definition irep2_expr.h:2011
code_assign2t(const expr2tc &tgt, const expr2tc &src, const locationt &loc=locationt())
Definition irep2_expr.h:2014
expr2tc source
Definition irep2_expr.h:2010
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:896
expr2tc target
Definition irep2_expr.h:2009
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2012
static constexpr auto fields
Definition irep2_expr.h:2026
code_assign2t(const code_assign2t &ref)=default
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2500
static constexpr auto fields
Definition irep2_expr.h:2508
code_assume2t(const expr2tc &g, const locationt &loc=locationt())
Definition irep2_expr.h:2502
code_assume2t(const code_assume2t &ref)=default
locationt location
Definition irep2_expr.h:2499
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:942
expr2tc guard
Definition irep2_expr.h:2498
static constexpr auto fields
Definition irep2_expr.h:2001
locationt location
Definition irep2_expr.h:1982
std::vector< expr2tc > operands
Definition irep2_expr.h:1981
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:1987
code_block2t(const std::vector< expr2tc > &ops, const locationt &loc=locationt(), const locationt &end_loc=locationt())
Definition irep2_expr.h:1989
locationt end_location
Definition irep2_expr.h:1986
code_block2t(const code_block2t &ref)=default
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:894
locationt location
Definition irep2_expr.h:2384
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2385
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:932
static constexpr auto fields
Definition irep2_expr.h:2393
code_break2t(const locationt &loc=locationt())
Definition irep2_expr.h:2387
code_break2t(const code_break2t &ref)=default
expr2tc side_1
Definition irep2_expr.h:2574
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:946
code_comma2t(const code_comma2t &ref)=default
expr2tc side_2
Definition irep2_expr.h:2575
code_comma2t(const type2tc &t, const expr2tc &s1, const expr2tc &s2)
Definition irep2_expr.h:2577
static constexpr auto fields
Definition irep2_expr.h:2583
code_continue2t(const locationt &loc=locationt())
Definition irep2_expr.h:2403
static constexpr auto fields
Definition irep2_expr.h:2409
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:934
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2401
locationt location
Definition irep2_expr.h:2400
code_continue2t(const code_continue2t &ref)=default
code_cpp_catch2t(const std::vector< irep_idt > &el, const std::vector< expr2tc > &ops, const locationt &loc=locationt())
Definition irep2_expr.h:2647
static constexpr auto fields
Definition irep2_expr.h:2659
std::vector< irep_idt > exception_list
Definition irep2_expr.h:2629
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:956
code_cpp_catch2t(const std::vector< irep_idt > &el, const locationt &loc=locationt())
Definition irep2_expr.h:2639
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2637
code_cpp_catch2t(const code_cpp_catch2t &ref)=default
locationt location
Definition irep2_expr.h:2636
std::vector< expr2tc > operands
Definition irep2_expr.h:2635
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:958
code_cpp_throw2t(const code_cpp_throw2t &ref)=default
code_cpp_throw2t(const expr2tc &o, const std::vector< irep_idt > &l, const locationt &loc=locationt())
Definition irep2_expr.h:2674
std::vector< irep_idt > exception_list
Definition irep2_expr.h:2670
static constexpr auto fields
Definition irep2_expr.h:2686
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2672
locationt location
Definition irep2_expr.h:2671
expr2tc operand
Definition irep2_expr.h:2669
code_decl2t(const code_decl2t &ref)=default
expr2tc do_simplify() const override
expr-specific simplification methods.
code_decl2t(const type2tc &type, const irep_idt &n, const expr2tc &i=expr2tc(), const locationt &loc=locationt())
Definition irep2_expr.h:1219
irep_idt value
Definition irep2_expr.h:1215
expr2tc init
Definition irep2_expr.h:1216
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:1218
static constexpr auto fields
Definition irep2_expr.h:1229
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:898
locationt location
Definition irep2_expr.h:1217
code_dowhile2t(const code_dowhile2t &ref)=default
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2295
locationt location
Definition irep2_expr.h:2292
expr2tc body
Definition irep2_expr.h:2291
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:926
static constexpr auto fields
Definition irep2_expr.h:2312
code_dowhile2t(const expr2tc &c, const expr2tc &b, const locationt &loc=locationt(), unsigned pragma=0)
Definition irep2_expr.h:2298
unsigned pragma_unroll_count
Definition irep2_expr.h:2294
expr2tc cond
Definition irep2_expr.h:2290
expr2tc iter
Definition irep2_expr.h:2324
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:928
locationt location
Definition irep2_expr.h:2326
unsigned pragma_unroll_count
Definition irep2_expr.h:2328
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2329
static constexpr auto fields
Definition irep2_expr.h:2350
expr2tc body
Definition irep2_expr.h:2325
code_for2t(const code_for2t &ref)=default
code_for2t(const expr2tc &i, const expr2tc &c, const expr2tc &it, const expr2tc &b, const locationt &loc=locationt(), unsigned pragma=0)
Definition irep2_expr.h:2332
expr2tc init
Definition irep2_expr.h:2322
expr2tc cond
Definition irep2_expr.h:2323
code_function_call2t(const code_function_call2t &ref)=default
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2181
expr2tc ret
Definition irep2_expr.h:2177
static constexpr auto fields
Definition irep2_expr.h:2197
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:920
locationt location
Definition irep2_expr.h:2180
expr2tc function
Definition irep2_expr.h:2178
std::vector< expr2tc > operands
Definition irep2_expr.h:2179
code_function_call2t(const expr2tc &r, const expr2tc &func, const std::vector< expr2tc > &args, const locationt &loc=locationt())
Definition irep2_expr.h:2183
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2131
code_goto2t(const code_goto2t &ref)=default
locationt location
Definition irep2_expr.h:2130
static constexpr auto fields
Definition irep2_expr.h:2139
irep_idt target
Definition irep2_expr.h:2129
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:916
code_goto2t(const irep_idt &targ, const locationt &loc=locationt())
Definition irep2_expr.h:2133
expr2tc then_case
Definition irep2_expr.h:2227
expr2tc cond
Definition irep2_expr.h:2226
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2230
expr2tc else_case
Definition irep2_expr.h:2228
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:922
locationt location
Definition irep2_expr.h:2229
code_ifthenelse2t(const code_ifthenelse2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:2246
code_ifthenelse2t(const expr2tc &c, const expr2tc &t, const expr2tc &e, const locationt &loc=locationt())
Definition irep2_expr.h:2232
irep_idt label
Definition irep2_expr.h:2416
code_label2t(const code_label2t &ref)=default
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2419
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:936
static constexpr auto fields
Definition irep2_expr.h:2430
code_label2t(const irep_idt &l, const expr2tc &c, const locationt &loc=locationt())
Definition irep2_expr.h:2421
locationt location
Definition irep2_expr.h:2418
expr2tc code
Definition irep2_expr.h:2417
code_printf2t(const std::vector< expr2tc > &opers, printf_kindt k, const locationt &loc=locationt())
Definition irep2_expr.h:2041
code_printf2t(const code_printf2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:2053
std::vector< expr2tc > operands
Definition irep2_expr.h:2036
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2039
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:902
printf_kindt kind
Definition irep2_expr.h:2037
locationt location
Definition irep2_expr.h:2038
static constexpr auto fields
Definition irep2_expr.h:2071
code_skip2t(const code_skip2t &ref)=default
locationt location
Definition irep2_expr.h:2063
code_skip2t(const type2tc &type, const locationt &loc=locationt())
Definition irep2_expr.h:2065
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2064
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:908
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:930
code_switch2t(const expr2tc &v, const expr2tc &b, const locationt &loc=locationt())
Definition irep2_expr.h:2367
static constexpr auto fields
Definition irep2_expr.h:2376
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2365
expr2tc body
Definition irep2_expr.h:2363
expr2tc value
Definition irep2_expr.h:2362
locationt location
Definition irep2_expr.h:2364
code_switch2t(const code_switch2t &ref)=default
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2446
static constexpr auto fields
Definition irep2_expr.h:2464
code_switch_case2t(const code_switch_case2t &ref)=default
expr2tc case_op_hi
Definition irep2_expr.h:2443
expr2tc code
Definition irep2_expr.h:2444
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:938
expr2tc case_op
Definition irep2_expr.h:2442
locationt location
Definition irep2_expr.h:2445
bool is_default
Definition irep2_expr.h:2441
code_switch_case2t(bool _is_default, const expr2tc &_case_op, const expr2tc &_code, const locationt &loc=locationt(), const expr2tc &_case_op_hi=expr2tc())
Definition irep2_expr.h:2448
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2265
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:924
expr2tc cond
Definition irep2_expr.h:2257
locationt location
Definition irep2_expr.h:2259
expr2tc body
Definition irep2_expr.h:2258
code_while2t(const expr2tc &c, const expr2tc &b, const locationt &loc=locationt(), unsigned pragma=0)
Definition irep2_expr.h:2268
static constexpr auto fields
Definition irep2_expr.h:2282
unsigned pragma_unroll_count
Definition irep2_expr.h:2264
code_while2t(const code_while2t &ref)=default
expr2tc side_1
Definition irep2_expr.h:2697
concat2t(const type2tc &type, const expr2tc &forward, const expr2tc &aft)
Definition irep2_expr.h:2700
expr2tc side_2
Definition irep2_expr.h:2698
concat2t(const concat2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:2710
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:972
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:5665
constant_array2t(const constant_array2t &ref)=default
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:6557
std::vector< expr2tc > datatype_members
Definition irep2_expr.h:553
constant_array2t(const type2tc &type, const std::vector< expr2tc > &members)
Primary constructor.
Definition irep2_expr.h:559
static constexpr auto fields
Definition irep2_expr.h:568
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:758
constant_array_of2t(const constant_array_of2t &ref)=default
expr2tc initializer
Definition irep2_expr.h:604
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:760
constant_array_of2t(const type2tc &type, const expr2tc &init)
Primary constructor.
Definition irep2_expr.h:610
static constexpr auto fields
Definition irep2_expr.h:616
constant_bool2t(bool value)
Primary constructor.
Definition irep2_expr.h:379
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:756
static constexpr auto fields
Definition irep2_expr.h:390
constant_bool2t(const constant_bool2t &ref)=default
bool value
Definition irep2_expr.h:376
bool is_false() const
Return whether contained boolean is false.
Definition irep2_expr.cpp:123
bool is_true() const
Return whether contained boolean is true.
Definition irep2_expr.cpp:118
constant_fixedbv2t(const constant_fixedbv2t &ref)=default
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:748
static constexpr auto fields
Definition irep2_expr.h:336
constant_fixedbv2t(const fixedbvt &value)
Primary constructor.
Definition irep2_expr.h:330
fixedbvt value
Definition irep2_expr.h:325
constant_floatbv2t(const constant_floatbv2t &ref)=default
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:366
constant_floatbv2t(const ieee_floatt &value, const irep_idt &fmt=irep_idt())
Primary constructor.
Definition irep2_expr.h:356
ieee_floatt value
Definition irep2_expr.h:347
static constexpr auto fields
Definition irep2_expr.h:364
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:750
irep_idt cformat
The literal's source spelling; see constant_int2t::cformat.
Definition irep2_expr.h:351
unsigned long as_ulong() const
Accessor for fetching machine-word unsigned integer of this constant.
Definition irep2_expr.cpp:99
constant_int2t(const constant_int2t &ref)=default
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:746
BigInt value
Definition irep2_expr.h:285
constant_int2t(const type2tc &type, const BigInt &input, const irep_idt &fmt=irep_idt())
Primary constructor.
Definition irep2_expr.h:298
irep_idt cformat
How the literal was written in the source, as #cformat records it.
Definition irep2_expr.h:292
long as_long() const
Accessor for fetching machine-word integer of this constant.
Definition irep2_expr.cpp:109
static constexpr auto fields
Definition irep2_expr.h:312
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:314
constant_string2t(const constant_string2t &ref)=default
constant_string2t(const type2tc &type, const irep_idt &stringref, constant_string_kindt kind)
Primary constructor.
Definition irep2_expr.h:414
irep_idt value
Definition irep2_expr.h:403
constant_string_kindt kind
Definition irep2_expr.h:404
static constexpr auto fields
Definition irep2_expr.h:423
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:762
constant_string_kindt kindt
Definition irep2_expr.h:401
size_t array_size() const
sizeof(literal)/sizeof(*literal), i.e., the number of elements in the underlying array,...
Definition irep2_expr.cpp:285
expr2tc to_array() const
Convert string to a constant length array of characters.
Definition irep2_expr.cpp:273
expr2tc at(size_t i) const
Extract the i-th element from the string for i between 0 and to_array_type(this->type)....
Definition irep2_expr.cpp:290
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:752
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:6552
constant_struct2t(const constant_struct2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:487
constant_struct2t(const type2tc &type, const std::vector< expr2tc > &members)
Primary constructor.
Definition irep2_expr.h:461
std::vector< expr2tc > datatype_members
Definition irep2_expr.h:455
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:754
constant_union2t(const type2tc &type, irep_idt if_, const std::vector< expr2tc > &members)
Primary constructor.
Definition irep2_expr.h:514
static constexpr auto fields
Definition irep2_expr.h:538
irep_idt init_field
Definition irep2_expr.h:508
std::vector< expr2tc > datatype_members
Definition irep2_expr.h:507
constant_union2t(const constant_union2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:592
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:764
constant_vector2t(const constant_vector2t &ref)=default
std::vector< expr2tc > datatype_members
Definition irep2_expr.h:580
constant_vector2t(const type2tc &type, const std::vector< expr2tc > &members)
Primary constructor.
Definition irep2_expr.h:586
dereference2t(const dereference2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:1889
expr2tc value
Definition irep2_expr.h:1878
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:882
dereference2t(const type2tc &type, const expr2tc &operand)
Primary constructor.
Definition irep2_expr.h:1883
dynamic_object2t(const dynamic_object2t &ref)=default
bool invalid
Definition irep2_expr.h:1846
dynamic_object2t(const type2tc &type, const expr2tc &inst, bool inv, bool uknown)
Definition irep2_expr.h:1849
static constexpr auto fields
Definition irep2_expr.h:1862
expr2tc instance
Definition irep2_expr.h:1845
bool unknown
Definition irep2_expr.h:1847
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:880
expr2tc side_1
Definition irep2_expr.h:250
exists2t(const exists2t &ref)=default
exists2t(const type2tc &type, const expr2tc &sym, const expr2tc &predicate)
Definition irep2_expr.h:251
static constexpr auto fields
Definition irep2_expr.h:257
expr2tc side_2
Definition irep2_expr.h:250
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:982
expr2t(const type2tc &type, expr_ids id)
Primary constructor.
Definition irep2_expr.cpp:49
expr_ids
Enumeration identifying each sort of expr.
Definition irep2.h:730
const expr_ids expr_id
Instance of expr_ids recording tihs exprs type.
Definition irep2.h:907
const type2tc type
Type of this expr.
Definition irep2.h:910
forall2t(const type2tc &type, const expr2tc &sym, const expr2tc &predicate)
Definition irep2_expr.h:266
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:980
static constexpr auto fields
Definition irep2_expr.h:272
forall2t(const forall2t &ref)=default
expr2tc side_2
Definition irep2_expr.h:265
expr2tc side_1
Definition irep2_expr.h:265
Definition ieee_float.h:75
static constexpr auto fields
Definition irep2_expr.h:1357
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:6469
ieee_fma2t(const ieee_fma2t &ref)=default
ieee_fma2t(const type2tc &type, const expr2tc &v1, const expr2tc &v2, const expr2tc &v3, const expr2tc &rm)
Primary constructor.
Definition irep2_expr.h:1340
expr2tc value_3
Definition irep2_expr.h:1332
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:832
expr2tc value_1
Definition irep2_expr.h:1330
expr2tc rounding_mode
Definition irep2_expr.h:1329
expr2tc value_2
Definition irep2_expr.h:1331
ieee_sqrt2t(const type2tc &type, const expr2tc &v1, const expr2tc &rm)
Primary constructor.
Definition irep2_expr.h:1378
expr2tc value
Definition irep2_expr.h:1372
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:834
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:6527
expr2tc rounding_mode
Definition irep2_expr.h:1371
static constexpr auto fields
Definition irep2_expr.h:1386
ieee_sqrt2t(const ieee_sqrt2t &ref)=default
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:5179
expr2tc true_value
Definition irep2_expr.h:845
expr2tc false_value
Definition irep2_expr.h:846
static constexpr auto fields
Definition irep2_expr.h:877
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:849
if2t(const type2tc &type, const expr2tc &cond_, const expr2tc &trueval, const expr2tc &falseval, const locationt &loc=locationt())
Primary constructor.
Definition irep2_expr.h:858
expr2tc cond
Definition irep2_expr.h:844
locationt location
Definition irep2_expr.h:848
if2t(const if2t &ref)=default
index2t(const type2tc &type, const expr2tc &source, const expr2tc &idx)
Primary constructor.
Definition irep2_expr.h:1742
static constexpr auto fields
Definition irep2_expr.h:1760
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:2069
index2t(const index2t &ref)=default
expr2tc source_value
Definition irep2_expr.h:1735
expr2tc index
Definition irep2_expr.h:1736
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:864
invalid_pointer2t(const expr2tc &obj)
Definition irep2_expr.h:2595
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:948
invalid_pointer2t(const invalid_pointer2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:2601
expr2tc ptr_obj
Definition irep2_expr.h:2593
static constexpr auto fields
Definition irep2_expr.h:1680
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:1661
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:858
expr2tc source_value
Definition irep2_expr.h:1620
irep_idt member
Definition irep2_expr.h:1621
member2t(const member2t &ref)=default
member2t(const type2tc &type, const expr2tc &source, const irep_idt &memb)
Primary constructor.
Definition irep2_expr.h:1627
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:860
static constexpr auto fields
Definition irep2_expr.h:1701
member_ref2t(const member_ref2t &ref)=default
member_ref2t(const type2tc &type, const irep_idt &memb)
Primary constructor.
Definition irep2_expr.h:1695
irep_idt member
Definition irep2_expr.h:1690
nearbyint2t(const nearbyint2t &ref)=default
nearbyint2t(const type2tc &type, const expr2tc &from_)
Primary constructor.
Definition irep2_expr.h:706
nearbyint2t(const type2tc &type, const expr2tc &from_, const expr2tc &rounding_mode_)
Primary constructor.
Definition irep2_expr.h:693
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:3791
expr2tc rounding_mode
Definition irep2_expr.h:686
expr2tc from
Definition irep2_expr.h:685
static constexpr auto fields
Definition irep2_expr.h:717
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:772
new_object2t(const type2tc &type)
Definition irep2_expr.h:2081
expr2tc do_simplify() const override
expr-specific simplification methods.
new_object2t(const new_object2t &ref)=default
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:910
static constexpr auto fields
Definition irep2_expr.h:2087
expr2tc value
Definition irep2_expr.h:1272
not2t(const not2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:1282
not2t(const expr2tc &val)
Primary constructor.
Definition irep2_expr.h:1275
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:2146
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:790
expr2tc offset
Definition irep2_expr.h:2148
const expr2tc & get_root_object() const
Definition irep2_expr.cpp:364
expr2tc object
Definition irep2_expr.h:2147
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:918
object_descriptor2t(const object_descriptor2t &ref)=default
object_descriptor2t(const type2tc &t, const expr2tc &root, const expr2tc &offs, unsigned int align)
Definition irep2_expr.h:2151
static constexpr auto fields
Definition irep2_expr.h:2166
unsigned int alignment
Definition irep2_expr.h:2149
overflow2t(const expr2tc &operand_)
Primary constructor.
Definition irep2_expr.h:1779
static constexpr auto fields
Definition irep2_expr.h:1787
expr2tc operand
Definition irep2_expr.h:1774
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:868
overflow2t(const overflow2t &ref)=default
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:5469
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:870
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:5436
overflow_cast2t(const expr2tc &operand_, unsigned int bits_)
Primary constructor.
Definition irep2_expr.h:1804
overflow_cast2t(const overflow_cast2t &ref)=default
unsigned int bits
Definition irep2_expr.h:1799
static constexpr auto fields
Definition irep2_expr.h:1812
expr2tc operand
Definition irep2_expr.h:1798
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:872
static constexpr auto fields
Definition irep2_expr.h:1834
overflow_neg2t(const expr2tc &operand_)
Primary constructor.
Definition irep2_expr.h:1828
overflow_neg2t(const overflow_neg2t &ref)=default
expr2tc operand
Definition irep2_expr.h:1825
pointer_offset2t(const pointer_offset2t &ref)=default
pointer_offset2t(const type2tc &type, const expr2tc &ptrobj)
Primary constructor.
Definition irep2_expr.h:1429
expr2tc ptr_obj
Definition irep2_expr.h:1424
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:844
static constexpr auto fields
Definition irep2_expr.h:1439
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:1800
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:862
ptr_mem2t(const ptr_mem2t &ref)=default
expr2tc member_pointer
Definition irep2_expr.h:1712
ptr_mem2t(const type2tc &type, const expr2tc &source, const expr2tc &pointer)
Primary constructor.
Definition irep2_expr.h:1717
static constexpr auto fields
Definition irep2_expr.h:1723
expr2tc source_value
Definition irep2_expr.h:1711
expr2tc side_2
Definition irep2_expr.h:1400
same_object2t(const same_object2t &ref)=default
expr2tc side_1
Definition irep2_expr.h:1399
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:842
same_object2t(const expr2tc &v1, const expr2tc &v2)
Primary constructor.
Definition irep2_expr.h:1403
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:5616
static constexpr auto fields
Definition irep2_expr.h:1411
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:1933
expr2tc operand
Definition irep2_expr.h:1910
sideeffect_allockind kind
Definition irep2_expr.h:1914
sideeffect2t(const sideeffect2t &ref)=default
sideeffect2t(const type2tc &t, const expr2tc &oper, const expr2tc &sz, const std::vector< expr2tc > &a, const type2tc &alloct, sideeffect_allockind k, const locationt &loc=locationt(), bool ctor=false)
Primary constructor.
Definition irep2_expr.h:1945
sideeffect_allockind allockind
Definition irep2_expr.h:1908
type2tc alloctype
Definition irep2_expr.h:1913
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:892
static constexpr auto fields
Definition irep2_expr.h:1968
std::vector< expr2tc > arguments
Definition irep2_expr.h:1912
locationt location
Definition irep2_expr.h:1932
expr2tc size
Definition irep2_expr.h:1911
bool constructor
This call constructs an object.
Definition irep2_expr.h:1930
expr2tc rhs
Definition irep2_expr.h:2542
expr2tc lhs
Definition irep2_expr.h:2541
sideeffect_assign2t(const type2tc &t, const irep_idt &o, const expr2tc &l, const expr2tc &r, const locationt &loc=locationt(), bool member_init_=false)
Definition irep2_expr.h:2546
irep_idt op
Definition irep2_expr.h:2521
static constexpr std::size_t excluded_field_bytes
Definition irep2_expr.h:2544
locationt location
Definition irep2_expr.h:2543
sideeffect_assign2t(const sideeffect_assign2t &ref)=default
bool member_init
This assignment is a constructor's member initialiser.
Definition irep2_expr.h:2539
static constexpr auto fields
Definition irep2_expr.h:2563
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:944
sizeof2t(const type2tc &type, const expr2tc &val, const type2tc &sizeof_t)
Definition irep2_expr.h:2762
static constexpr auto fields
Definition irep2_expr.h:2770
type2tc sizeof_type
Definition irep2_expr.h:2760
expr2tc value
Definition irep2_expr.h:2759
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:990
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:5846
sizeof2t(const sizeof2t &ref)=default
symbol_renaming_level renaming_level
Definition irep2_expr.h:627
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:766
unsigned int thread_num
Definition irep2_expr.h:633
unsigned int level2_num
Definition irep2_expr.h:632
symbol2t(const type2tc &type, const irep_idt &init, renaming_level lev=renaming_level::level0, unsigned int l1=0, unsigned int l2=0, unsigned int trd=0, unsigned int node=0)
Primary constructor.
Definition irep2_expr.h:640
symbol2t(const symbol2t &ref)=default
static constexpr auto fields
Definition irep2_expr.h:667
unsigned int level1_num
Definition irep2_expr.h:631
irep_idt thename
Definition irep2_expr.h:629
symbol_renaming_level rlevel
Definition irep2_expr.h:630
unsigned int node_num
Definition irep2_expr.h:634
std::string get_symbol_name() const
Definition irep2_expr.cpp:128
Symbolic type exception class.
Definition irep2.h:572
unsigned int get_width() const
Fetch bit width of this type.
Definition irep2_type.cpp:352
const type_ids type_id
Instance of type_ids recording this types type.
Definition irep2.h:693
bool base_to_derived
The mirror: a downcast whose operand points at a base subobject.
Definition irep2_expr.h:744
typecast2t(const typecast2t &ref)=default
expr2tc from
Definition irep2_expr.h:731
expr2tc rounding_mode
Definition irep2_expr.h:732
static constexpr auto fields
Definition irep2_expr.h:786
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:3701
typecast2t(const type2tc &type, const expr2tc &from_, const expr2tc &rounding_mode_, const irep_idt &derived_to_base_=irep_idt(), bool base_to_derived_=false)
Primary constructor.
Definition irep2_expr.h:751
irep_idt derived_to_base
The base class this cast converts to, when the frontend could not route the conversion through a @bas...
Definition irep2_expr.h:741
uninterpreted_func2t(const uninterpreted_func2t &ref)=default
uninterpreted_func2t(const type2tc &type, const irep_idt &name, const std::vector< expr2tc > &args)
Definition irep2_expr.h:2110
irep_idt function_name
Mangled callee name; the stable key under which the solver declares the function symbol,...
Definition irep2_expr.h:2107
static constexpr auto fields
Definition irep2_expr.h:2119
std::vector< expr2tc > arguments
Definition irep2_expr.h:2108
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:912
static std::string field_names[esbmct::num_type_fields]
Definition irep2_expr.h:856
expr2tc source_value
Definition irep2_expr.h:1580
expr2tc update_value
Definition irep2_expr.h:1582
expr2tc update_field
Definition irep2_expr.h:1581
expr2tc do_simplify() const override
expr-specific simplification methods.
Definition expr_simplifier.cpp:1471
with2t(const type2tc &type, const expr2tc &source, const expr2tc &field, const expr2tc &value)
Primary constructor.
Definition irep2_expr.h:1589
static constexpr auto fields
Definition irep2_expr.h:1607
with2t(const with2t &ref)=default
configt config
Definition config.cpp:8
@ unknown
Definition config.h:14
pthread_cond_t cond
Definition cuda.h:50
static bool same_object(const expr2tc &a, const expr2tc &b)
Definition gcse.cpp:330
void dereference(goto_programt::const_targett target, expr2tc &expr, const namespacet &ns, value_setst &value_sets)
Definition goto_program_dereference.cpp:239
irep_container< type2t > type2tc
Definition irep2.h:430
irep_container< expr2t > expr2tc
Definition irep2.h:431
printf_kindt
Which member of the printf family a code_printf2t represents.
Definition irep2_expr.h:98
@ VPRINTF
Definition irep2_expr.h:105
@ ASPRINTF
Definition irep2_expr.h:108
@ SPRINTF
Definition irep2_expr.h:102
@ SNPRINTF
Definition irep2_expr.h:104
@ DPRINTF
Definition irep2_expr.h:101
@ FPRINTF
Definition irep2_expr.h:100
@ PRINTF
Definition irep2_expr.h:99
@ VFPRINTF
Definition irep2_expr.h:103
@ VASPRINTF
Definition irep2_expr.h:109
@ VSPRINTF
Definition irep2_expr.h:106
@ VSNPRINTF
Definition irep2_expr.h:107
constant_string_kindt
Definition irep2_expr.h:27
@ DEFAULT
Definition irep2_expr.h:28
@ UNICODE
Definition irep2_expr.h:30
@ WIDE
Definition irep2_expr.h:29
#define ESBMC_DEFINE_FP_PREDICATE_1OP(name)
FP classification single-operand predicate (isnan/isinf/ isnormal/isfinite).
Definition irep2_expr.h:1043
#define ESBMC_DEFINE_OBJECT_PREDICATE_1OP(name)
Pointer-object boolean predicate (valid_object/races_check/ deallocated_obj).
Definition irep2_expr.h:1066
#define ESBMC_DEFINE_TYPE_ONLY(name)
Marker node holding only a type (no operands).
Definition irep2_expr.h:1132
#define ESBMC_DEFINE_ARITH_2OP(name)
Arithmetic two-operand node (add/sub/mul/div/modulus).
Definition irep2_expr.h:919
#define ESBMC_DEFINE_BIT_2OP(name)
Bitwise / shift two-operand node (bitand/bitor/bitxor/ shl/ashr/lshr).
Definition irep2_expr.h:945
#define ESBMC_DEFINE_CODE_EXPRESSION_1OP(name)
code_* statement with empty type and a single expr2tc operand (code_expression/code_return/code_free/...
Definition irep2_expr.h:1153
#define ESBMC_DEFINE_OVERFLOW_INT32_1OP(name)
Single-operand overflow-family op returning int32 (signbit/ popcount).
Definition irep2_expr.h:1110
printf_kindt printf_kind_from_name(const irep_idt &name)
Maps the textual base_name of a printf-family symbol (e.g.
Definition irep2_expr.cpp:379
symbol_renaming_level
Symex renaming level for symbol2t.
Definition irep2_expr.h:54
@ level2_global
Definition irep2_expr.h:59
@ level1
Definition irep2_expr.h:56
@ level1_global
Definition irep2_expr.h:58
@ level2
Definition irep2_expr.h:57
@ level0
Definition irep2_expr.h:55
void assert_arith_2ops_consistency(const type2tc &t, expr2t::expr_ids id, const expr2tc &v1, const expr2tc &v2)
Debug-only consistency check for arith_2ops operands and result type.
Definition irep2_expr.cpp:716
#define ESBMC_DEFINE_IEEE_ARITH_2OP(name)
Defines an IEEE two-operand floating-point arithmetic node (add/sub/mul/div).
Definition irep2_expr.h:1290
#define ESBMC_DEFINE_CODE_DECL(name)
code_* declaration carrying (type, irep_idt name).
Definition irep2_expr.h:1180
#define ESBMC_DEFINE_RELATION2T(name)
Defines one of the six binary boolean relation nodes.
Definition irep2_expr.h:889
#define ESBMC_DEFINE_LOGIC_2OP(name)
Logical two-operand boolean-result node.
Definition irep2_expr.h:1016
#define ESBMC_DEFINE_OBJECT_SIZE_1OP(name)
Pointer-object size-returning op (capability_base/capability_top/ dynamic_size).
Definition irep2_expr.h:1088
sideeffect_allockind
Enumeration identifying each particular kind of side effect.
Definition irep2_expr.h:73
@ predecrement
Definition irep2_expr.h:85
@ cpp_new_arr
Definition irep2_expr.h:78
@ gcc_conditional_expression
Definition irep2_expr.h:91
@ statement_expression
Definition irep2_expr.h:89
@ old_snapshot
Definition irep2_expr.h:87
@ temporary_object
Definition irep2_expr.h:90
@ cpp_delete
Definition irep2_expr.h:92
@ printf2
Definition irep2_expr.h:81
@ cpp_new
Definition irep2_expr.h:77
@ cpp_delete_array
Definition irep2_expr.h:93
@ postdecrement
Definition irep2_expr.h:86
@ postincrement
Definition irep2_expr.h:84
@ preincrement
Definition irep2_expr.h:83
@ function_call
Definition irep2_expr.h:82
@ alloca
Definition irep2_expr.h:76
@ assigns_target
Definition irep2_expr.h:88
#define ESBMC_DEFINE_POINTER_1OP(name)
Pointer one-operand node (pointer_object/pointer_capability).
Definition irep2_expr.h:993
#define irep_typedefs(basename)
Definition irep2_expr.h:116
#define ESBMC_DEFINE_ARITH_1OP(name)
Arithmetic one-operand node (neg/abs/bswap/bitnot).
Definition irep2_expr.h:970
std::optional< unsigned int > struct_union_get_component_number(const type2tc &t, const irep_idt &comp)
Index of comp in struct/union/complex member_names, or nullopt if it is missing or duplicated (the la...
Definition irep2_type.cpp:479
pointer_ref_kindt
How the source spelled a pointer.
Definition irep2_type.h:556
@ NONE
Definition irep2_type.h:557
literalt neg(literalt a)
Definition literal.h:126
const unsigned int num_type_fields
Maximum number of fields to support in expr2t subclasses.
Definition irep2.h:998
Definition exception.cpp:51
@ l1
Definition numpy_call_expr.cpp:2087
@ l2
Definition numpy_call_expr.cpp:2086
#define va_arg(v, l)
Definition stdarg.h:18
#define false
Definition stdbool.h:10
div_t div(int numerator, int denominator)
void * malloc(size_t size)
void * realloc(void *ptr, size_t size)
void add(int64_t *A, int64_t *B, int64_t *C, int64_t a_rows, int64_t a_cols, int64_t b_rows, int64_t b_cols)
Definition umath.c:23