ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
migrate.h File Reference
#include <irep2/irep2.h>
#include <util/irep/std_expr.h>
#include <util/irep/std_types.h>
Include dependency graph for migrate.h:

Go to the source code of this file.

Functions

type2tc migrate_type (const typet &type)
void migrate_expr (const exprt &expr, expr2tc &new_expr)
expr2tc migrate_expr (const exprt &expr)
 Returning form, for call sites that want an expression rather than an out-parameter – symbol.set_value(migrate_expr(v)) instead of two statements and a named temporary.
type2tc migrate_symbol_type (const symbolt &sym)
void migrate_symbol_value (const symbolt &sym, expr2tc &dest)
void set_symbol_type (symbolt &sym, const type2tc &t)
typet migrate_type_back (const type2tc &ref)
void migrate_type_back_cache_clear ()
exprt migrate_expr_back (const expr2tc &ref)
expr2tc symbol_expr2tc (const symbolt &sym)
expr2tc side_effect_function_call2tc (const type2tc &return_type, const expr2tc &function, const std::vector< expr2tc > &arguments)
void migrate_census (const contextt &context)
 Migrate every symbol's type, and its value where it has one, and report what could not be represented.

Variables

const namespacet * migrate_namespace_lookup

Function Documentation

◆ migrate_census()

void migrate_census ( const contextt & context)

Migrate every symbol's type, and its value where it has one, and report what could not be represented.

Migration signals failure by throwing a std::string, so each symbol is wrapped: one unrepresentable construct names itself and the walk continues, which is what makes this a census rather than a bisection. Walks the whole linked context, operational models included, which is the set goto_convert migrates anyway.

Frontend-agnostic on purpose: clang-cpp and solidity share one definition, so a census taken on either is the same measurement (docs/roadmap/scope-solidity-irep2.md ยง3, step S.2).

◆ migrate_expr() [1/2]

expr2tc migrate_expr ( const exprt & expr)
inline

Returning form, for call sites that want an expression rather than an out-parameter – symbol.set_value(migrate_expr(v)) instead of two statements and a named temporary.

◆ migrate_expr() [2/2]

void migrate_expr ( const exprt & expr,
expr2tc & new_expr )

◆ migrate_expr_back()

exprt migrate_expr_back ( const expr2tc & ref)

◆ migrate_symbol_type()

type2tc migrate_symbol_type ( const symbolt & sym)

◆ migrate_symbol_value()

void migrate_symbol_value ( const symbolt & sym,
expr2tc & dest )

◆ migrate_type()

type2tc migrate_type ( const typet & type)

◆ migrate_type_back()

typet migrate_type_back ( const type2tc & ref)

◆ migrate_type_back_cache_clear()

void migrate_type_back_cache_clear ( )

◆ set_symbol_type()

void set_symbol_type ( symbolt & sym,
const type2tc & t )

◆ side_effect_function_call2tc()

expr2tc side_effect_function_call2tc ( const type2tc & return_type,
const expr2tc & function,
const std::vector< expr2tc > & arguments )

◆ symbol_expr2tc()

expr2tc symbol_expr2tc ( const symbolt & sym)

Variable Documentation

◆ migrate_namespace_lookup

const namespacet* migrate_namespace_lookup
externthread_local