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...
Boolean AND All operands must be boolean, and the result is always boolean.
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.