26 if(expr.
id() == ID_symbol)
30 else if(expr.
id() == ID_index)
34 else if(expr.
id() == ID_member)
38 type.
id() == ID_struct || type.
id() == ID_struct_tag ||
39 type.
id() == ID_union || type.
id() == ID_union_tag,
40 "unexpected assignment to member of '" + type.
id_string() +
"'");
43 else if(expr.
id() == ID_if)
48 else if(expr.
id() == ID_typecast)
53 expr.
id() == ID_byte_extract_little_endian ||
54 expr.
id() == ID_byte_extract_big_endian)
58 else if(expr.
id() == ID_complex_real)
62 else if(expr.
id() == ID_complex_imag)
66 else if(
const auto &deref = expr_try_dynamic_cast<dereference_exprt>(expr))
72 if(
const auto &if_expr = expr_try_dynamic_cast<if_exprt>(pointer))
84 const auto &address_of_expr =
85 expr_try_dynamic_cast<address_of_exprt>(pointer))
110 const auto &function_call_expr =
111 expr_try_dynamic_cast<side_effect_expr_function_callt>(expr))
113 auto function_expr = function_call_expr->function();
115 function_expr.id() == ID_symbol,
116 "no function pointer calls in loop assigns clause targets");
123 "can only handle built-in function calls in assigns clause targets");
135 std::unordered_set<exprt, irep_hash> result;
Expression classes for byte-level operators.
const byte_extract_exprt & to_byte_extract_expr(const exprt &expr)
Operator to dereference a pointer.
Base class for all expressions.
source_locationt & add_source_location()
const source_locationt & source_location() const
typet & type()
Return the type of the expression.
const std::string & id_string() const
const irep_idt & id() const
const exprt & struct_op() const
const irep_idt & get_identifier() const
The type of an expression, extends irept.
static exprt slice_op_to_deref(const exprt &expr)
Translates object slice expressions found in assigns clause targets to dereference expressions so tha...
std::unordered_set< exprt, irep_hash > dfcc_root_objects(const exprt &expr)
Computes a set of root object expressions from an lvalue or assigns clause target expression.
static void root_objects_rec(const exprt &expr, std::unordered_set< exprt, irep_hash > &dest)
Recursively computes a set of root object expressions for expr.
Utility functions that compute root object expressions for assigns clause targets and LHS expressions...
const exprt & skip_typecast(const exprt &expr)
find the expression nested inside typecasts, if any
Deprecated expression utility functions.
API to expression classes for Pointers.
#define DATA_INVARIANT(CONDITION, REASON)
This condition should be used to document that assumptions that are made on goto_functions,...
#define INVARIANT(CONDITION, REASON)
This macro uses the wrapper function 'invariant_violated_string'.
const if_exprt & to_if_expr(const exprt &expr)
Cast an exprt to an if_exprt.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
const typecast_exprt & to_typecast_expr(const exprt &expr)
Cast an exprt to a typecast_exprt.
const complex_real_exprt & to_complex_real_expr(const exprt &expr)
Cast an exprt to a complex_real_exprt.
const member_exprt & to_member_expr(const exprt &expr)
Cast an exprt to a member_exprt.
const complex_imag_exprt & to_complex_imag_expr(const exprt &expr)
Cast an exprt to a complex_imag_exprt.
const index_exprt & to_index_expr(const exprt &expr)
Cast an exprt to an index_exprt.