21 : goto_program(goto_program)
68 const typet &op_type=op.type();
69 if(op_type == root_type)
115 const typet *target_type,
const typet *source_type)
const
117 while(target_type->
id()==ID_pointer)
125 target_pointer_type.base_type(), source_pointer_type.base_type());
128 if(!direct_subtypes_at_least_as_const)
131 target_type = &target_pointer_type.base_type();
132 source_type = &source_pointer_type.base_type();
159 const typet &type_more_const,
const typet &type_compare)
const
161 return !type_compare.
get_bool(ID_C_constant) ||
162 type_more_const.
get_bool(ID_C_constant);
bool is_type_at_least_as_const_as(const typet &type_more_const, const typet &type_compare) const
A simple check to check the type_more_const is at least as const as type compare.
bool does_type_preserve_const_correctness(const typet *target_type, const typet *source_type) const
A recursive check that handles when assigning a source value to a target, is the assignment a loss of...
does_remove_constt(const goto_programt &)
A naive analysis to look for casts that remove const-ness from pointers.
std::pair< bool, source_locationt > operator()() const
A naive analysis to look for casts that remove const-ness from pointers.
const goto_programt & goto_program
bool does_expr_lose_const(const exprt &expr) const
Search the expression tree to look for any children that have the same base type, but a less strict c...
Base class for all expressions.
const source_locationt & find_source_location() const
Get a source_locationt from the expression or from its operands (non-recursively).
typet & type()
Return the type of the expression.
This class represents an instruction in the GOTO intermediate representation.
const exprt & assign_rhs() const
Get the rhs of the assignment for ASSIGN.
const source_locationt & source_location() const
const exprt & assign_lhs() const
Get the lhs of the assignment for ASSIGN.
A generic container class for the GOTO intermediate representation of one function.
instructionst instructions
The list of instructions in the goto program.
bool get_bool(const irep_idt &name) const
const irep_idt & id() const
The type of an expression, extends irept.
API to expression classes for Pointers.
const pointer_typet & to_pointer_type(const typet &type)
Cast a typet to a pointer_typet.
#define PRECONDITION(CONDITION)