cprover
Loading...
Searching...
No Matches
ssa_exprt Class Reference

Expression providing an SSA-renamed symbol of expressions. More...

#include <ssa_expr.h>

Inheritance diagram for ssa_exprt:
Collaboration diagram for ssa_exprt:

Public Member Functions

 ssa_exprt (const exprt &expr)
 Constructor.
void update_type ()
const exprtget_original_expr () const
void set_expression (exprt expr)
 Replace the underlying, original expression by expr while maintaining SSA indices.
irep_idt get_object_name () const
const ssa_exprt get_l1_object () const
const irep_idt get_l1_object_identifier () const
const irep_idt get_original_name () const
void set_level_0 (std::size_t i)
void set_level_1 (std::size_t i)
void set_level_2 (std::size_t i)
void remove_level_2 ()
const irep_idt get_level_0 () const
const irep_idt get_level_1 () const
const irep_idt get_level_2 () const
Public Member Functions inherited from symbol_exprt
 symbol_exprt (typet type)
 symbol_exprt (const irep_idt &identifier, typet type)
void set_identifier (const irep_idt &identifier)
const irep_idtget_identifier () const
symbol_exprtwith_source_location (source_locationt location) &
 Add the source location from location, if it is non-nil.
symbol_exprt && with_source_location (source_locationt location) &&
 Add the source location from location, if it is non-nil.
symbol_exprtwith_source_location (const exprt &other) &
 Add the source location from other, if it has any.
symbol_exprt && with_source_location (const exprt &other) &&
 Add the source location from other, if it has any.
Public Member Functions inherited from nullary_exprt
 nullary_exprt (const irep_idt &_id, typet _type)
operandstoperands ()=delete
 remove all operand methods
const operandstoperands () const =delete
const exprtop0 () const =delete
exprtop0 ()=delete
const exprtop1 () const =delete
exprtop1 ()=delete
const exprtop2 () const =delete
exprtop2 ()=delete
const exprtop3 () const =delete
exprtop3 ()=delete
void copy_to_operands (const exprt &expr)=delete
void copy_to_operands (const exprt &, const exprt &)=delete
void copy_to_operands (const exprt &, const exprt &, const exprt &)=delete
Public Member Functions inherited from exprt
 exprt ()
 exprt (const irep_idt &_id)
 exprt (irep_idt _id, typet _type)
 exprt (irep_idt _id, typet _type, operandst &&_operands)
 exprt (const irep_idt &id, typet type, source_locationt loc)
typettype ()
 Return the type of the expression.
const typettype () const
bool has_operands () const
 Return true if there is at least one operand.
operandstoperands ()
const operandstoperands () const
exprtwith_source_location (source_locationt location) &
 Add the source location from location, if it is non-nil.
exprt && with_source_location (source_locationt location) &&
 Add the source location from location, if it is non-nil.
exprtwith_source_location (const exprt &other) &
 Add the source location from other, if it has any.
exprt && with_source_location (const exprt &other) &&
 Add the source location from other, if it has any.
void reserve_operands (operandst::size_type n)
void copy_to_operands (const exprt &expr)
 Copy the given argument to the end of exprt's operands.
void add_to_operands (const exprt &expr)
 Add the given argument to the end of exprt's operands.
void add_to_operands (exprt &&expr)
 Add the given argument to the end of exprt's operands.
void add_to_operands (exprt &&e1, exprt &&e2)
 Add the given arguments to the end of exprt's operands.
void add_to_operands (exprt &&e1, exprt &&e2, exprt &&e3)
 Add the given arguments to the end of exprt's operands.
bool is_constant () const
 Return whether the expression is a constant.
bool is_true () const
 Return whether the expression is a constant representing true.
bool is_false () const
 Return whether the expression is a constant representing false.
bool is_zero () const
 Return whether the expression is a constant representing 0.
bool is_one () const
 Return whether the expression is a constant representing 1.
bool is_boolean () const
 Return whether the expression represents a Boolean.
const source_locationtfind_source_location () const
 Get a source_locationt from the expression or from its operands (non-recursively).
const source_locationtsource_location () const
source_locationtadd_source_location ()
void drop_source_location ()
void visit (class expr_visitort &visitor)
 These are pre-order traversal visitors, i.e., the visitor is executed on a node before its children have been visited.
void visit (class const_expr_visitort &visitor) const
void visit_pre (std::function< void(exprt &)>)
void visit_pre (std::function< void(const exprt &)>) const
void visit_post (std::function< void(exprt &)>)
 These are post-order traversal visitors, i.e., the visitor is executed on a node after its children have been visited.
void visit_post (std::function< void(const exprt &)>) const
depth_iteratort depth_begin ()
depth_iteratort depth_end ()
const_depth_iteratort depth_begin () const
const_depth_iteratort depth_end () const
const_depth_iteratort depth_cbegin () const
const_depth_iteratort depth_cend () const
depth_iteratort depth_begin (std::function< exprt &()> mutate_root) const
const_unique_depth_iteratort unique_depth_begin () const
const_unique_depth_iteratort unique_depth_end () const
const_unique_depth_iteratort unique_depth_cbegin () const
const_unique_depth_iteratort unique_depth_cend () const
Public Member Functions inherited from irept
bool is_nil () const
bool is_not_nil () const
 irept (const irep_idt &_id)
 irept (const irep_idt &_id, const named_subt &_named_sub, const subt &_sub)
 irept ()=default
const irep_idtid () const
const std::string & id_string () const
void id (const irep_idt &_data)
const ireptfind (const irep_idt &name) const
ireptadd (const irep_idt &name)
ireptadd (const irep_idt &name, irept irep)
const std::string & get_string (const irep_idt &name) const
const irep_idtget (const irep_idt &name) const
bool get_bool (const irep_idt &name) const
signed int get_int (const irep_idt &name) const
std::size_t get_size_t (const irep_idt &name) const
long long get_long_long (const irep_idt &name) const
void set (const irep_idt &name, const irep_idt &value)
void set (const irep_idt &name, irept irep)
void set (const irep_idt &name, const long long value)
void set_size_t (const irep_idt &name, const std::size_t value)
void remove (const irep_idt &name)
void move_to_sub (irept &irep)
void move_to_named_sub (const irep_idt &name, irept &irep)
bool operator== (const irept &other) const
bool operator!= (const irept &other) const
void swap (irept &irep)
bool operator< (const irept &other) const
 defines ordering on the internal representation
bool ordering (const irept &other) const
 defines ordering on the internal representation
int compare (const irept &i) const
 defines ordering on the internal representation comments are ignored
void clear ()
void make_nil ()
subtget_sub ()
const subtget_sub () const
named_subtget_named_sub ()
const named_subtget_named_sub () const
std::size_t hash () const
std::size_t full_hash () const
bool full_eq (const irept &other) const
std::string pretty (unsigned indent=0, unsigned max_indent=0) const
Public Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
 sharing_treet (irep_idt _id)
sharing_treetoperator= (const sharing_treet &irep)
 ~sharing_treet ()
const dtread () const
dtwrite ()

Static Public Member Functions

static bool can_build_identifier (const exprt &src)
 Used to determine whether or not an identifier can be built before trying and getting an exception.
static void check (const exprt &expr, const validation_modet vm=validation_modet::INVARIANT)
static void validate (const exprt &expr, const namespacet &ns, const validation_modet vm=validation_modet::INVARIANT)
Static Public Member Functions inherited from symbol_exprt
static symbol_exprt typeless (const irep_idt &id)
 Generate a symbol_exprt without a proper type.
Static Public Member Functions inherited from nullary_exprt
static void check (const exprt &expr, const validation_modet vm=validation_modet::INVARIANT)
static void validate (const exprt &expr, const namespacet &, const validation_modet vm=validation_modet::INVARIANT)
Static Public Member Functions inherited from exprt
static void check (const exprt &, const validation_modet)
 Check that the expression is well-formed (shallow checks only, i.e., subexpressions and its type are not checked).
static void validate (const exprt &expr, const namespacet &, const validation_modet vm=validation_modet::INVARIANT)
 Check that the expression is well-formed, assuming that its subexpressions and type have all ready been checked for well-formedness.
static void validate_full (const exprt &expr, const namespacet &ns, const validation_modet vm=validation_modet::INVARIANT)
 Check that the expression is well-formed (full check, including checks of all subexpressions and the type)
Static Public Member Functions inherited from irept
static bool is_comment (const irep_idt &name)
static std::size_t number_of_non_comments (const named_subt &)
 count the number of named_sub elements that are not comments

Additional Inherited Members

Public Types inherited from exprt
typedef std::vector< exprtoperandst
Public Types inherited from irept
using baset = tree_implementationt
Public Types inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
using dt
using subt
using named_subt
using tree_implementationt
 Used to refer to this class from derived classes.
Protected Member Functions inherited from expr_protectedt
 expr_protectedt (irep_idt _id, typet _type)
 expr_protectedt (irep_idt _id, typet _type, operandst _operands)
exprtop0 ()
const exprtop0 () const
exprtop1 ()
const exprtop1 () const
exprtop2 ()
const exprtop2 () const
exprtop3 ()
const exprtop3 () const
Protected Member Functions inherited from exprt
exprtop0 ()
exprtop1 ()
exprtop2 ()
exprtop3 ()
const exprtop0 () const
const exprtop1 () const
const exprtop2 () const
const exprtop3 () const
exprtadd_expr (const irep_idt &name)
const exprtfind_expr (const irep_idt &name) const
Protected Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
void detach ()
Static Protected Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
static void remove_ref (dt *old_data)
static void nonrecursive_destructor (dt *old_data)
 Does the same as remove_ref, but using an explicit stack instead of recursion.
Protected Attributes inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
dtdata
Static Protected Attributes inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
static dt empty_d

Detailed Description

Expression providing an SSA-renamed symbol of expressions.

Definition at line 16 of file ssa_expr.h.

Constructor & Destructor Documentation

◆ ssa_exprt()

ssa_exprt::ssa_exprt ( const exprt & expr)
explicit

Constructor.

Parameters
exprExpression to be converted to SSA symbol. A valid argument must be one of these:

Definition at line 40 of file ssa_expr.cpp.

Member Function Documentation

◆ can_build_identifier()

bool ssa_exprt::can_build_identifier ( const exprt & src)
static

Used to determine whether or not an identifier can be built before trying and getting an exception.

Definition at line 207 of file ssa_expr.cpp.

◆ check()

void ssa_exprt::check ( const exprt & expr,
const validation_modet vm = validation_modet::INVARIANT )
inlinestatic

Definition at line 82 of file ssa_expr.h.

◆ get_l1_object()

const ssa_exprt ssa_exprt::get_l1_object ( ) const

Definition at line 156 of file ssa_expr.cpp.

◆ get_l1_object_identifier()

const irep_idt ssa_exprt::get_l1_object_identifier ( ) const

Definition at line 170 of file ssa_expr.cpp.

◆ get_level_0()

const irep_idt ssa_exprt::get_level_0 ( ) const
inline

Definition at line 63 of file ssa_expr.h.

◆ get_level_1()

const irep_idt ssa_exprt::get_level_1 ( ) const
inline

Definition at line 68 of file ssa_expr.h.

◆ get_level_2()

const irep_idt ssa_exprt::get_level_2 ( ) const
inline

Definition at line 73 of file ssa_expr.h.

◆ get_object_name()

irep_idt ssa_exprt::get_object_name ( ) const

Definition at line 145 of file ssa_expr.cpp.

◆ get_original_expr()

const exprt & ssa_exprt::get_original_expr ( ) const
inline

Definition at line 33 of file ssa_expr.h.

◆ get_original_name()

const irep_idt ssa_exprt::get_original_name ( ) const
inline

Definition at line 49 of file ssa_expr.h.

◆ remove_level_2()

void ssa_exprt::remove_level_2 ( )

Definition at line 199 of file ssa_expr.cpp.

◆ set_expression()

void ssa_exprt::set_expression ( exprt expr)

Replace the underlying, original expression by expr while maintaining SSA indices.

Parameters
exprexpression to store

Definition at line 138 of file ssa_expr.cpp.

◆ set_level_0()

void ssa_exprt::set_level_0 ( std::size_t i)

Definition at line 181 of file ssa_expr.cpp.

◆ set_level_1()

void ssa_exprt::set_level_1 ( std::size_t i)

Definition at line 187 of file ssa_expr.cpp.

◆ set_level_2()

void ssa_exprt::set_level_2 ( std::size_t i)

Definition at line 193 of file ssa_expr.cpp.

◆ update_type()

void ssa_exprt::update_type ( )
inline

Definition at line 28 of file ssa_expr.h.

◆ validate()

void ssa_exprt::validate ( const exprt & expr,
const namespacet & ns,
const validation_modet vm = validation_modet::INVARIANT )
inlinestatic

Definition at line 114 of file ssa_expr.h.


The documentation for this class was generated from the following files: