Go to the documentation of this file.
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)
46 else if(expr.
id() == ID_constant)
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);
void call_on_expr(const exprt &expr, Args &&... args)
#define CALL_ON_EXPR(expr_type)
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...
Operator to dereference a pointer.
The trinary if-then-else operator.
The plus expression Associativity is not specified.
Base class for all expressions.
Expression providing an SSA-renamed symbol of expressions.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
bool is_ssa_expr(const exprt &expr)
const std::string & id_string() const
const irep_idt & id() const
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...
Operator to update elements in structs and arrays.
Extract member of struct or union.
A Boolean expression returning true, iff negation would result in an overflow when applied to the (si...
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...
A constant literal expression.
The count leading zeros (counting the number of zero bits starting from the most-significant bit) exp...