7 #ifndef RETDEC_LLVMIR2HLL_ANALYSIS_USED_VARS_VISITOR_H
8 #define RETDEC_LLVMIR2HLL_ANALYSIS_USED_VARS_VISITOR_H
48 std::size_t
getCount(
bool read =
true,
bool written =
true)
const;
51 bool written =
true)
const;
100 public Caching<ShPtr<Value>, ShPtr<UsedVars>> {
A mixin for enabling caching of computed results.
A mixin for enabling caching of computed results.
Definition: caching.h:51
void enableCaching()
Enables caching.
Definition: caching.h:60
A visitor that visits everything in an ordered way.
Definition: ordered_all_visitor.h:44
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
A visitor for obtaining the used variables in a value.
Definition: used_vars_visitor.h:100
UsedVarsVisitor(bool visitSuccessors=true, bool visitNestedStmts=true, bool enableCaching=false)
Constructs a new visitor.
Definition: used_vars_visitor.cpp:180
ShPtr< UsedVars > getUsedVars_(ShPtr< Value > value)
Definition: used_vars_visitor.cpp:194
ShPtr< UsedVars > usedVars
Used variables that are currently being computed.
Definition: used_vars_visitor.h:129
static ShPtr< UsedVars > getUsedVars(ShPtr< Value > value, bool visitSuccessors=true, bool visitNestedStmts=true)
Returns the set of used variables in the given value.
Definition: used_vars_visitor.cpp:259
bool visitNestedStmts
Should nested statements be accessed?
Definition: used_vars_visitor.h:138
bool writing
Are we writing into a variable?
Definition: used_vars_visitor.h:132
bool visitSuccessors
Should statements' successor be accessed?
Definition: used_vars_visitor.h:135
static ShPtr< UsedVarsVisitor > create(bool visitSuccessors=true, bool visitNestedStmts=true, bool enableCaching=false)
Definition: used_vars_visitor.cpp:237
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
Used variables for a value (expression, statement).
Definition: used_vars_visitor.h:31
VarSet getReadVars() const
Returns the variables that are read.
Definition: used_vars_visitor.cpp:52
bool operator==(const UsedVars &other) const
Returns true if the current object is equal to other, false otherwise.
Definition: used_vars_visitor.cpp:34
void clear()
Clears all private containers.
Definition: used_vars_visitor.cpp:168
VarSet writtenVars
Set of variables into which something is written.
Definition: used_vars_visitor.h:79
var_iterator all_begin() const
Returns an iterator to the first variable.
Definition: used_vars_visitor.cpp:136
VarSet getWrittenVars() const
Returns the variables that are written into.
Definition: used_vars_visitor.cpp:59
VarSet::const_iterator var_iterator
Variables iterator.
Definition: used_vars_visitor.h:36
var_iterator written_end() const
Returns an iterator past the last written variable.
Definition: used_vars_visitor.cpp:129
std::size_t getNumOfUses(ShPtr< Variable > var) const
Returns the number of uses of var.
Definition: used_vars_visitor.cpp:94
VarSet allVars
Set of all variables (read or written).
Definition: used_vars_visitor.h:82
var_iterator read_end() const
Returns an iterator past the last read variable.
Definition: used_vars_visitor.cpp:115
std::size_t getCount(bool read=true, bool written=true) const
Returns the number of used variables.
Definition: used_vars_visitor.cpp:78
bool isUsed(ShPtr< Variable > var, bool read=true, bool written=true) const
Returns true if var is used, false otherwise.
Definition: used_vars_visitor.cpp:154
bool operator!=(const UsedVars &other) const
Returns true if the current object is not equal to other, false otherwise.
Definition: used_vars_visitor.cpp:45
UsedVars(const UsedVars &other)=default
std::map< ShPtr< Variable >, std::size_t > VarCountMap
Mapping of a variable into a count.
Definition: used_vars_visitor.h:67
UsedVars()
Constructs a new UsedVars object.
Definition: used_vars_visitor.cpp:28
var_iterator written_begin() const
Returns an iterator to the first written variable.
Definition: used_vars_visitor.cpp:122
var_iterator read_begin() const
Returns an iterator to the first read variable.
Definition: used_vars_visitor.cpp:108
VarSet getAllVars() const
Returns read variables merged with written-into variables.
Definition: used_vars_visitor.cpp:66
UsedVars & operator=(const UsedVars &other)=default
VarCountMap numOfVarUses
Number of uses of a variable.
Definition: used_vars_visitor.h:85
var_iterator all_end() const
Returns an iterator past the last variable.
Definition: used_vars_visitor.cpp:143
VarSet readVars
Set of variables that are read.
Definition: used_vars_visitor.h:76
A mixin to make classes non-copyable.
Definition: non_copyable.h:27
A library providing API for working with back-end IR.
std::shared_ptr< T > ShPtr
An alias for a shared pointer.
Definition: smart_ptr.h:18
std::set< ShPtr< Variable > > VarSet
Set of variables.
Definition: types.h:57
Definition: archive_wrapper.h:19
A mixin to make classes non-copyable.
A visitor that visits everything in an ordered way.
Declarations, aliases, macros, etc. for the use of smart pointers.
Aliases for several useful types.