12 #ifdef REPORT_UNIMPLEMENTED_EXPRESSION_CHECKS
20 #define CALL_ON_EXPR(expr_type) \
21 C<exprt, expr_type>()(expr, std::forward<Args>(args)...)
23 template <
template <
typename,
typename>
class C,
typename... Args>
26 if(expr.
id() == ID_equal)
30 else if(expr.
id() == ID_plus)
38 else if(expr.
id() == ID_member)
42 else if(expr.
id() == ID_dereference)
50 else if(expr.
id() == ID_if)
54 else if(expr.
id() == ID_update)
58 else if(expr.
id() == ID_overflow_unary_minus)
62 else if(expr.
id() == ID_count_leading_zeros)
68 #ifdef REPORT_UNIMPLEMENTED_EXPRESSION_CHECKS
69 std::cerr <<
"Unimplemented well-formedness check for expression with id: "
87 call_on_expr<call_checkt>(expr, vm);
103 call_on_expr<call_validatet>(expr, ns, vm);
119 call_on_expr<call_validate_fullt>(expr, ns, vm);
API to expression classes for bitvectors.
A constant literal expression.
The count leading zeros (counting the number of zero bits starting from the most-significant bit) exp...
Operator to dereference a pointer.
Base class for all expressions.
bool is_constant() const
Return whether the expression is a constant.
The trinary if-then-else operator.
const std::string & id_string() const
const irep_idt & id() const
Extract member of struct or union.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
The plus expression Associativity is not specified.
Expression providing an SSA-renamed symbol of expressions.
A Boolean expression returning true, iff negation would result in an overflow when applied to the (si...
Operator to update elements in structs and arrays.
API to expression classes for Pointers.
bool is_ssa_expr(const exprt &expr)
void check_expr(const exprt &expr, const validation_modet vm)
Check that the given expression is well-formed (shallow checks only, i.e., subexpressions and its typ...
void validate_full_expr(const exprt &expr, const namespacet &ns, const validation_modet vm)
Check that the given expression is well-formed (full check, including checks of all subexpressions an...
void validate_expr(const exprt &expr, const namespacet &ns, const validation_modet vm)
Check that the given expression is well-formed, assuming that its subexpression and type have already...
void call_on_expr(const exprt &expr, Args &&... args)
#define CALL_ON_EXPR(expr_type)