29 : library(library), message_handler(message_handler),
log(message_handler)
53 if(target->is_function_call())
55 const auto &function = target->call_function();
64 target->call_arguments()[0] =
73 if(function.source_location().get_bool(
"no_fail"))
76 target->call_arguments().push_back(
true_exprt());
79 target->call_arguments().push_back(cfg_info.
get_write_set(target));
133 result.arguments().push_back(
equal_expr.rhs());
pointer_typet pointer_type(const typet &subtype)
Operator to return the address of an object.
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Computes natural loops, enforces normal form conditions, computes the nesting graph,...
const exprt & get_write_set(goto_programt::const_targett target) const
Returns the write set variable to use for the given instruction Returns the write set for the loop,...
Class interface to library types and functions defined in cprover_contracts.c.
std::map< dfcc_funt, symbolt > dfcc_fun_symbol
Maps enum values to the actual function symbols (dynamically loaded)
dfcc_pointer_equalst(dfcc_libraryt &library, message_handlert &message_handler)
void rewrite_calls(goto_programt &program, dfcc_cfg_infot cfg_info)
Rewrites calls to pointer_equals predicates into calls to the library implementation in the given pro...
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
void visit(class expr_visitort &visitor)
These are pre-order traversal visitors, i.e., the visitor is executed on a node before its children h...
The Boolean constant false.
A generic container class for the GOTO intermediate representation of one function.
instructionst instructions
The list of instructions in the goto program.
instructionst::iterator targett
const irep_idt & id() const
void visit_expr(exprt &expr)
std::vector< exprt * > equality_exprs_to_transform
A side_effect_exprt representation of a function call side effect.
exprt::operandst & arguments()
Expression to hold a symbol (variable)
The Boolean constant true.
bool has_prefix(const std::string &s, const std::string &prefix)
Class that computes CFG information about the loop structure of a GOTO function for the purpose of dy...
Dynamic frame condition checking library loading.
void rewrite_equal_exprt_to_pointer_equals(exprt &expr)
Rewrites equal_exprt over pointers into calls to the front-end function __CPROVER_pointer_equals,...
Instruments occurrences of pointer_equals predicates in programs encoding requires and ensures clause...
Forward depth-first search iterators These iterators' copy operations are expensive,...
const std::string & id2string(const irep_idt &d)
API to expression classes for Pointers.
API to expression classes.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
const equal_exprt & to_equal_expr(const exprt &expr)
Cast an exprt to an equal_exprt.