ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
c_typecast.h File Reference
Include dependency graph for c_typecast.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  c_typecastt

Functions

void take_reference_address (expr2tc &expr, pointer_ref_kindt rk)
 Take the address of an object bound to a reference; see c_typecast.cpp for why a conditional takes it per arm and why rk matters.
bool check_c_implicit_typecast (const typet &src_type, const typet &dest_type)
bool check_c_implicit_typecast (const type2tc &src_type, const type2tc &dest_type)
bool check_c_implicit_typecast (const typet &src_type, const typet &dest_type, const namespacet &ns)
bool check_c_implicit_typecast (const type2tc &src_type, const type2tc &dest_type, const namespacet &ns)
bool c_implicit_typecast (exprt &expr, const typet &dest_type, const namespacet &ns)
bool c_implicit_typecast (expr2tc &expr, const type2tc &dest_type, const namespacet &ns)
bool c_implicit_typecast_arithmetic (exprt &expr1, exprt &expr2, const namespacet &ns)
bool c_implicit_typecast_arithmetic (expr2tc &expr1, expr2tc &expr2, const namespacet &ns)

Function Documentation

◆ c_implicit_typecast() [1/2]

bool c_implicit_typecast ( expr2tc & expr,
const type2tc & dest_type,
const namespacet & ns )

◆ c_implicit_typecast() [2/2]

bool c_implicit_typecast ( exprt & expr,
const typet & dest_type,
const namespacet & ns )

◆ c_implicit_typecast_arithmetic() [1/2]

bool c_implicit_typecast_arithmetic ( expr2tc & expr1,
expr2tc & expr2,
const namespacet & ns )

◆ c_implicit_typecast_arithmetic() [2/2]

bool c_implicit_typecast_arithmetic ( exprt & expr1,
exprt & expr2,
const namespacet & ns )

◆ check_c_implicit_typecast() [1/4]

bool check_c_implicit_typecast ( const type2tc & src_type,
const type2tc & dest_type )

◆ check_c_implicit_typecast() [2/4]

bool check_c_implicit_typecast ( const type2tc & src_type,
const type2tc & dest_type,
const namespacet & ns )

◆ check_c_implicit_typecast() [3/4]

bool check_c_implicit_typecast ( const typet & src_type,
const typet & dest_type )

◆ check_c_implicit_typecast() [4/4]

bool check_c_implicit_typecast ( const typet & src_type,
const typet & dest_type,
const namespacet & ns )

◆ take_reference_address()

void take_reference_address ( expr2tc & expr,
pointer_ref_kindt rk )

Take the address of an object bound to a reference; see c_typecast.cpp for why a conditional takes it per arm and why rk matters.

Take the address of an object bound to a reference; see c_typecast.cpp for why a conditional takes it per arm and why rk matters.

rk must be the destination's own kind. irept can hardcode #reference because its operator== skips comment attributes, so T& and T&& compare equal there; ref_kind is a real field, so a wrong kind leaves do_typecast's dest_type != type guard true and appends a cast irept never produces.