109 const std::unordered_set<symbol_exprt, irep_hash> &
address_taken,
115 auto symbol_expr =
object->object_expr();
116 auto identifier = symbol_expr.get_identifier();
117 if(identifier.starts_with(
"va_arg::"))
119 else if(identifier.starts_with(
"var_args::"))
121 else if(identifier.starts_with(
"va_args::"))
123 else if(identifier.starts_with(
"va_arg_array::"))
125 else if(identifier.starts_with(
"old::"))
127 else if(identifier ==
"return_value")
129 const auto &symbol = ns.
lookup(symbol_expr);
130 return !symbol.is_static_lifetime &&
224 const std::unordered_set<symbol_exprt, irep_hash> &
address_taken,
std::unordered_set< symbol_exprt, irep_hash > address_taken(const std::vector< exprt > &src)
const bitvector_typet & to_bitvector_type(const typet &type)
Cast a typet to a bitvector_typet.
signedbv_typet signed_char_type()
unsignedbv_typet unsigned_char_type()
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Base class for all expressions.
The Boolean constant false.
const irep_idt & id() const
const union_typet & follow_tag(const union_tag_typet &) const
Follow type tag of union type.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
bool lookup(const irep_idt &name, const symbolt *&symbol) const override
See documentation for namespace_baset::lookup().
The Boolean constant true.
The type of an expression, extends irept.
std::optional< exprt > same_address(const exprt &a, const exprt &b, const namespacet &ns)
static std::optional< object_address_exprt > find_object(const exprt &expr)
bool permitted_by_strict_aliasing(const typet &a, const typet &b)
bool prefix_of(const typet &a, const typet &b, const namespacet &ns)
std::optional< exprt > may_alias(const exprt &a, const exprt &b, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const namespacet &ns)
static exprt drop_pointer_typecasts(exprt src)
bool is_object_field_element(const exprt &expr)
bool stack_and_not_dirty(const exprt &expr, const std::unordered_set< symbol_exprt, irep_hash > &address_taken, const namespacet &ns)
API to expression classes for Pointers.
const element_address_exprt & to_element_address_expr(const exprt &expr)
Cast an exprt to an element_address_exprt.
const object_address_exprt & to_object_address_expr(const exprt &expr)
Cast an exprt to an object_address_exprt.
const pointer_typet & to_pointer_type(const typet &type)
Cast a typet to a pointer_typet.
const field_address_exprt & to_field_address_expr(const exprt &expr)
Cast an exprt to an field_address_exprt.
#define CHECK_RETURN(CONDITION)
#define PRECONDITION(CONDITION)
API to expression classes.
const typecast_exprt & to_typecast_expr(const exprt &expr)
Cast an exprt to a typecast_exprt.
const struct_typet & to_struct_type(const typet &type)
Cast a typet to a struct_typet.
const struct_tag_typet & to_struct_tag_type(const typet &type)
Cast a typet to a struct_tag_typet.