22 if(src.
id() == ID_object_address)
24 else if(src.
id() == ID_field_address)
28 if(compound_opt.has_value())
31 field_address_expr.component_name(),
32 field_address_expr.field_type());
36 else if(src.
id() == ID_element_address)
40 if(array_opt.has_value())
43 element_address_expr.index(),
44 element_address_expr.element_type());
48 else if(src.
id() == ID_annotated_pointer_constant)
53 pointer.id() == ID_address_of &&
66 if(src_lvalue_opt.has_value())
73 const std::vector<framet> &frames,
80 for(
auto &step : property.
trace)
82 const auto &frame = frames[step.frame.index];
85 frame.source_location.get_function() != function_id ||
86 frame.source_location.get_file() != file)
89 if(frame.source_location.get_function() !=
"")
90 consolet::out() <<
" function " << frame.source_location.get_function();
92 file = frame.source_location.get_file();
93 function_id = frame.source_location.get_function();
100 if(step.updates.empty())
125 for(
auto &update : step.updates)
136 if(lhs_lvalue_opt.has_value())
152 const std::vector<framet> &frames,
153 const std::vector<propertyt> &properties,
157 for(
auto &property : properties)
159 if(property.status == propertyt::REFUTED)
Operator to return the address of an object.
exprt & symbolic_pointer()
static std::ostream & reset(std::ostream &)
static std::ostream & faint(std::ostream &)
static std::ostream & bold(std::ostream &)
static std::ostream & out()
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
const irep_idt & id() const
Extract member of struct or union.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
symbol_exprt object_expr() const
static exprt implication(exprt lhs, exprt rhs)
API to expression classes for Pointers.
const annotated_pointer_constant_exprt & to_annotated_pointer_constant_expr(const exprt &expr)
Cast an exprt to an annotated_pointer_constant_exprt.
const field_address_exprt & to_field_address_expr(const exprt &expr)
Cast an exprt to an field_address_exprt.
const object_address_exprt & to_object_address_expr(const exprt &expr)
Cast an exprt to an object_address_exprt.
const address_of_exprt & to_address_of_expr(const exprt &expr)
Cast an exprt to an address_of_exprt.
const element_address_exprt & to_element_address_expr(const exprt &expr)
Cast an exprt to an element_address_exprt.
void report_traces(const std::vector< framet > &frames, const std::vector< propertyt > &properties, bool verbose, const namespacet &ns)
void show_trace(const std::vector< framet > &frames, const propertyt &property, bool verbose, const namespacet &ns)
static exprt use_address_of(exprt src)
std::optional< exprt > address_to_lvalue(exprt src)