27 if(expr.
id()==ID_member)
32 if(op_type.
id()==ID_union)
35 else if(expr.
id()==ID_union)
57 if(expr.
id()==ID_member)
62 if(op_type.
id()==ID_union)
69 else if(expr.
id()==ID_union)
The type of an expression.
const typet & follow(const typet &src) const
const member_exprt & to_member_expr(const exprt &expr)
Cast a generic exprt to a member_exprt.
symbol_tablet symbol_table
const irep_idt & id() const
Expression classes for byte-level operators.
union constructor from single element
API to expression classes.
irep_idt byte_extract_id()
A side effect that returns a non-deterministically chosen value.
#define forall_operands(it, expr)
const union_exprt & to_union_expr(const exprt &expr)
Cast a generic exprt to a union_exprt.
bitvector_typet index_type()
goto_function_templatet< goto_programt > goto_functiont
Base class for all expressions.
const exprt & struct_op() const
#define Forall_goto_functions(it, functions)
#define Forall_operands(it, expr)
#define Forall_goto_program_instructions(it, program)
void rewrite_union(exprt &expr, const namespacet &ns)
We rewrite u.c for unions u into byte_extract(u, 0), and { .c = v } into byte_update(NIL, 0, v)
goto_functionst goto_functions
static bool have_to_rewrite_union(const exprt &expr, const namespacet &ns)
irep_idt byte_update_id()