retdec
Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
retdec::llvmir2hll::VarUsesVisitor Class Reference

A visitor for obtaining the uses of variables in a function. More...

#include <var_uses_visitor.h>

Inheritance diagram for retdec::llvmir2hll::VarUsesVisitor:
Inheritance graph
[legend]
Collaboration diagram for retdec::llvmir2hll::VarUsesVisitor:
Collaboration graph
[legend]

Public Member Functions

bool isUsed (ShPtr< Variable > var, ShPtr< Function > func, bool doNotIncludeFirstUse=false)
 Returns true if var is used in func, false otherwise. More...
 
ShPtr< VarUsesgetUses (ShPtr< Variable > var, ShPtr< Function > func)
 Returns all uses of var in func. More...
 
Caching
void enableCaching ()
 Enables caching. More...
 
void disableCaching ()
 Disables caching. More...
 
void clearCache ()
 Clears the cache of the already cached results. More...
 
bool isCachingEnabled () const
 Returns true if caching is enabled, false otherwise. More...
 
void stmtHasBeenAdded (ShPtr< Statement > stmt, ShPtr< Function > func)
 Forces cache update (a new statement has been added to a function). More...
 
void stmtHasBeenChanged (ShPtr< Statement > stmt, ShPtr< Function > func)
 Forces cache update (the given statement in the given function has been altered). More...
 
void stmtHasBeenRemoved (ShPtr< Statement > stmt, ShPtr< Function > func)
 Forces cache update (the given statement in the given function has been removed). More...
 

Static Public Member Functions

static ShPtr< VarUsesVisitorcreate (ShPtr< ValueAnalysis > va, bool enableCaching=false, ShPtr< Module > module=nullptr)
 Creates a new visitor. More...
 

Private Types

using VarUsesMap = std::map< ShPtr< Variable >, ShPtr< VarUses > >
 Mapping of a variable into its uses. More...
 
using FuncVarUsesMap = std::map< ShPtr< Function >, VarUsesMap >
 Mapping of a function into uses of its variables. More...
 

Private Member Functions

 VarUsesVisitor (ShPtr< ValueAnalysis > va, bool enableCaching=false)
 Constructs a new provider. More...
 
void precomputeEverything (ShPtr< Module > module)
 Pre-computes uses of variables in all functions of the given module. More...
 
void findAndStoreUses (ShPtr< Statement > stmt)
 Finds uses of var in the given statement and stores them. More...
 
void dumpCache ()
 Dumps cache to standard error. More...
 
Visitor Interface
virtual void visit (ShPtr< AssignStmt > stmt) override
 
virtual void visit (ShPtr< VarDefStmt > stmt) override
 
virtual void visit (ShPtr< CallStmt > stmt) override
 
virtual void visit (ShPtr< ReturnStmt > stmt) override
 
virtual void visit (ShPtr< EmptyStmt > stmt) override
 
virtual void visit (ShPtr< IfStmt > stmt) override
 
virtual void visit (ShPtr< SwitchStmt > stmt) override
 
virtual void visit (ShPtr< WhileLoopStmt > stmt) override
 
virtual void visit (ShPtr< ForLoopStmt > stmt) override
 
virtual void visit (ShPtr< UForLoopStmt > stmt) override
 
virtual void visit (ShPtr< BreakStmt > stmt) override
 
virtual void visit (ShPtr< ContinueStmt > stmt) override
 
virtual void visit (ShPtr< GotoStmt > stmt) override
 
virtual void visit (ShPtr< UnreachableStmt > stmt) override
 
virtual void visit (ShPtr< GlobalVarDef > varDef) override
 
virtual void visit (ShPtr< Function > func) override
 
virtual void visit (ShPtr< AssignStmt > stmt) override
 
virtual void visit (ShPtr< BreakStmt > stmt) override
 
virtual void visit (ShPtr< CallStmt > stmt) override
 
virtual void visit (ShPtr< ContinueStmt > stmt) override
 
virtual void visit (ShPtr< EmptyStmt > stmt) override
 
virtual void visit (ShPtr< ForLoopStmt > stmt) override
 
virtual void visit (ShPtr< UForLoopStmt > stmt) override
 
virtual void visit (ShPtr< GotoStmt > stmt) override
 
virtual void visit (ShPtr< IfStmt > stmt) override
 
virtual void visit (ShPtr< ReturnStmt > stmt) override
 
virtual void visit (ShPtr< SwitchStmt > stmt) override
 
virtual void visit (ShPtr< UnreachableStmt > stmt) override
 
virtual void visit (ShPtr< VarDefStmt > stmt) override
 
virtual void visit (ShPtr< WhileLoopStmt > stmt) override
 
virtual void visit (ShPtr< AddOpExpr > expr) override
 
virtual void visit (ShPtr< AddressOpExpr > expr) override
 
virtual void visit (ShPtr< AndOpExpr > expr) override
 
virtual void visit (ShPtr< ArrayIndexOpExpr > expr) override
 
virtual void visit (ShPtr< AssignOpExpr > expr) override
 
virtual void visit (ShPtr< BitAndOpExpr > expr) override
 
virtual void visit (ShPtr< BitOrOpExpr > expr) override
 
virtual void visit (ShPtr< BitShlOpExpr > expr) override
 
virtual void visit (ShPtr< BitShrOpExpr > expr) override
 
virtual void visit (ShPtr< BitXorOpExpr > expr) override
 
virtual void visit (ShPtr< CallExpr > expr) override
 
virtual void visit (ShPtr< CommaOpExpr > expr) override
 
virtual void visit (ShPtr< DerefOpExpr > expr) override
 
virtual void visit (ShPtr< DivOpExpr > expr) override
 
virtual void visit (ShPtr< EqOpExpr > expr) override
 
virtual void visit (ShPtr< GtEqOpExpr > expr) override
 
virtual void visit (ShPtr< GtOpExpr > expr) override
 
virtual void visit (ShPtr< LtEqOpExpr > expr) override
 
virtual void visit (ShPtr< LtOpExpr > expr) override
 
virtual void visit (ShPtr< ModOpExpr > expr) override
 
virtual void visit (ShPtr< MulOpExpr > expr) override
 
virtual void visit (ShPtr< NegOpExpr > expr) override
 
virtual void visit (ShPtr< NeqOpExpr > expr) override
 
virtual void visit (ShPtr< NotOpExpr > expr) override
 
virtual void visit (ShPtr< OrOpExpr > expr) override
 
virtual void visit (ShPtr< StructIndexOpExpr > expr) override
 
virtual void visit (ShPtr< SubOpExpr > expr) override
 
virtual void visit (ShPtr< TernaryOpExpr > expr) override
 
virtual void visit (ShPtr< Variable > var) override
 
virtual void visit (ShPtr< BitCastExpr > expr) override
 
virtual void visit (ShPtr< ExtCastExpr > expr) override
 
virtual void visit (ShPtr< FPToIntCastExpr > expr) override
 
virtual void visit (ShPtr< IntToFPCastExpr > expr) override
 
virtual void visit (ShPtr< IntToPtrCastExpr > expr) override
 
virtual void visit (ShPtr< PtrToIntCastExpr > expr) override
 
virtual void visit (ShPtr< TruncCastExpr > expr) override
 
virtual void visit (ShPtr< ConstArray > constant) override
 
virtual void visit (ShPtr< ConstBool > constant) override
 
virtual void visit (ShPtr< ConstFloat > constant) override
 
virtual void visit (ShPtr< ConstInt > constant) override
 
virtual void visit (ShPtr< ConstNullPointer > constant) override
 
virtual void visit (ShPtr< ConstString > constant) override
 
virtual void visit (ShPtr< ConstStruct > constant) override
 
virtual void visit (ShPtr< ConstSymbol > constant) override
 
virtual void visit (ShPtr< ArrayType > type) override
 
virtual void visit (ShPtr< FloatType > type) override
 
virtual void visit (ShPtr< IntType > type) override
 
virtual void visit (ShPtr< PointerType > type) override
 
virtual void visit (ShPtr< StringType > type) override
 
virtual void visit (ShPtr< StructType > type) override
 
virtual void visit (ShPtr< FunctionType > type) override
 
virtual void visit (ShPtr< VoidType > type) override
 
virtual void visit (ShPtr< UnknownType > type) override
 
- Private Member Functions inherited from retdec::llvmir2hll::OrderedAllVisitor
virtual void visit (ShPtr< GlobalVarDef > varDef) override
 
virtual void visit (ShPtr< Function > func) override
 
virtual void visit (ShPtr< AddOpExpr > expr) override
 
virtual void visit (ShPtr< AddressOpExpr > expr) override
 
virtual void visit (ShPtr< AndOpExpr > expr) override
 
virtual void visit (ShPtr< ArrayIndexOpExpr > expr) override
 
virtual void visit (ShPtr< AssignOpExpr > expr) override
 
virtual void visit (ShPtr< BitAndOpExpr > expr) override
 
virtual void visit (ShPtr< BitOrOpExpr > expr) override
 
virtual void visit (ShPtr< BitShlOpExpr > expr) override
 
virtual void visit (ShPtr< BitShrOpExpr > expr) override
 
virtual void visit (ShPtr< BitXorOpExpr > expr) override
 
virtual void visit (ShPtr< CallExpr > expr) override
 
virtual void visit (ShPtr< CommaOpExpr > expr) override
 
virtual void visit (ShPtr< DerefOpExpr > expr) override
 
virtual void visit (ShPtr< DivOpExpr > expr) override
 
virtual void visit (ShPtr< EqOpExpr > expr) override
 
virtual void visit (ShPtr< GtEqOpExpr > expr) override
 
virtual void visit (ShPtr< GtOpExpr > expr) override
 
virtual void visit (ShPtr< LtEqOpExpr > expr) override
 
virtual void visit (ShPtr< LtOpExpr > expr) override
 
virtual void visit (ShPtr< ModOpExpr > expr) override
 
virtual void visit (ShPtr< MulOpExpr > expr) override
 
virtual void visit (ShPtr< NegOpExpr > expr) override
 
virtual void visit (ShPtr< NeqOpExpr > expr) override
 
virtual void visit (ShPtr< NotOpExpr > expr) override
 
virtual void visit (ShPtr< OrOpExpr > expr) override
 
virtual void visit (ShPtr< StructIndexOpExpr > expr) override
 
virtual void visit (ShPtr< SubOpExpr > expr) override
 
virtual void visit (ShPtr< TernaryOpExpr > expr) override
 
virtual void visit (ShPtr< Variable > var) override
 
virtual void visit (ShPtr< BitCastExpr > expr) override
 
virtual void visit (ShPtr< ExtCastExpr > expr) override
 
virtual void visit (ShPtr< FPToIntCastExpr > expr) override
 
virtual void visit (ShPtr< IntToFPCastExpr > expr) override
 
virtual void visit (ShPtr< IntToPtrCastExpr > expr) override
 
virtual void visit (ShPtr< PtrToIntCastExpr > expr) override
 
virtual void visit (ShPtr< TruncCastExpr > expr) override
 
virtual void visit (ShPtr< ConstArray > constant) override
 
virtual void visit (ShPtr< ConstBool > constant) override
 
virtual void visit (ShPtr< ConstFloat > constant) override
 
virtual void visit (ShPtr< ConstInt > constant) override
 
virtual void visit (ShPtr< ConstNullPointer > constant) override
 
virtual void visit (ShPtr< ConstString > constant) override
 
virtual void visit (ShPtr< ConstStruct > constant) override
 
virtual void visit (ShPtr< ConstSymbol > constant) override
 
virtual void visit (ShPtr< ArrayType > type) override
 
virtual void visit (ShPtr< FloatType > type) override
 
virtual void visit (ShPtr< IntType > type) override
 
virtual void visit (ShPtr< PointerType > type) override
 
virtual void visit (ShPtr< StringType > type) override
 
virtual void visit (ShPtr< StructType > type) override
 
virtual void visit (ShPtr< FunctionType > type) override
 
virtual void visit (ShPtr< VoidType > type) override
 
virtual void visit (ShPtr< UnknownType > type) override
 
 OrderedAllVisitor (bool visitSuccessors=true, bool visitNestedStmts=true)
 Constructs a new visitor. More...
 
virtual void visitStmt (ShPtr< Statement > stmt, bool visitSuccessors=true, bool visitNestedStmts=true)
 Visits the given statement, and possibly its successors or nested statements. More...
 
void restart (bool visitSuccessors=true, bool visitNestedStmts=true)
 "Restarts" the visitor so it is in the state like it was when it was created. More...
 
bool makeAccessedAndCheckIfAccessed (ShPtr< Type > type)
 Makes the given type accessed. More...
 
- Private Member Functions inherited from retdec::llvmir2hll::Visitor
virtual ~Visitor ()=default
 
 Visitor ()=default
 
- Private Member Functions inherited from retdec::utils::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 

Private Attributes

ShPtr< Variablevar
 Variable whose uses are obtained. More...
 
ShPtr< Functionfunc
 Function whose body is being traversed. More...
 
ShPtr< ValueAnalysisva
 Analysis of values. More...
 
ShPtr< VarUsesvarUses
 Uses of var. More...
 
bool precomputing
 Are we pre-computing everything? More...
 
bool precomputingHasBeenDone
 Has everything been successfully precomputed? More...
 
bool cachingEnabled
 Is caching enabled? More...
 
FuncVarUsesMap cache
 Cache. More...
 
- Private Attributes inherited from retdec::llvmir2hll::OrderedAllVisitor
ShPtr< StatementlastStmt
 Statement that has been accessed as the last one. More...
 
StmtUSet accessedStmts
 A set of all accessed statements. More...
 
TypeUSet accessedTypes
 A set of all accessed types. More...
 
bool visitSuccessors
 Should statements' successor be accessed? More...
 
bool visitNestedStmts
 Should nested statements be accessed? More...
 

Detailed Description

A visitor for obtaining the uses of variables in a function.

Use create() to create instances. Instances of this class have reference object semantics.

Member Typedef Documentation

◆ FuncVarUsesMap

Mapping of a function into uses of its variables.

◆ VarUsesMap

Mapping of a variable into its uses.

Constructor & Destructor Documentation

◆ VarUsesVisitor()

retdec::llvmir2hll::VarUsesVisitor::VarUsesVisitor ( ShPtr< ValueAnalysis va,
bool  enableCaching = false 
)
private

Constructs a new provider.

For the description of the parameters, see create().

Member Function Documentation

◆ clearCache()

void retdec::llvmir2hll::VarUsesVisitor::clearCache ( )

Clears the cache of the already cached results.

◆ create()

ShPtr< VarUsesVisitor > retdec::llvmir2hll::VarUsesVisitor::create ( ShPtr< ValueAnalysis va,
bool  enableCaching = false,
ShPtr< Module module = nullptr 
)
static

Creates a new visitor.

Parameters
[in]vaThe used analysis of values.
[in]enableCachingIf true, it caches the results returned by getUses() until restartCache() or disableCaching() is called. This may speed up subsequent calls to getUses().
[in]moduleIf non-null, this function pre-computes information for every function and variable in the module.
Preconditions
  • va is non-null
  • if module is non-null, enableCaching has to be true
  • va is in a valid state

All methods of this class leave va in a valid state.

◆ disableCaching()

void retdec::llvmir2hll::VarUsesVisitor::disableCaching ( )

Disables caching.

It also clears the cache of the already cached results.

◆ dumpCache()

void retdec::llvmir2hll::VarUsesVisitor::dumpCache ( )
private

Dumps cache to standard error.

This function should be used only for debugging purposes.

◆ enableCaching()

void retdec::llvmir2hll::VarUsesVisitor::enableCaching ( )

Enables caching.

It also clears the cache of the already cached results.

◆ findAndStoreUses()

void retdec::llvmir2hll::VarUsesVisitor::findAndStoreUses ( ShPtr< Statement stmt)
private

Finds uses of var in the given statement and stores them.

It doesn't check nested statements or successors.

◆ getUses()

ShPtr< VarUses > retdec::llvmir2hll::VarUsesVisitor::getUses ( ShPtr< Variable var,
ShPtr< Function func 
)

Returns all uses of var in func.

Parameters
[in]varVariable whose uses are obtained.
[in]funcFunction whose body is checked.

For example, let var1 be a variable used in the following statement

func(1, var1 + var2, "test");
ShPtr< Function > func
Function whose body is being traversed.
Definition: var_uses_visitor.h:113

Then, this function obtains obtains

func(1, var1 + var2, "test");

A definition of a variable is also considered to be a use. Function parameters are skipped. Indirect uses are also included in the returned result.

Preconditions
  • var and func are non-null

◆ isCachingEnabled()

bool retdec::llvmir2hll::VarUsesVisitor::isCachingEnabled ( ) const

Returns true if caching is enabled, false otherwise.

◆ isUsed()

bool retdec::llvmir2hll::VarUsesVisitor::isUsed ( ShPtr< Variable var,
ShPtr< Function func,
bool  doNotIncludeFirstUse = false 
)

Returns true if var is used in func, false otherwise.

Parameters
[in]varVariable whose uses are obtained.
[in]funcFunction whose body is checked.
[in]doNotIncludeFirstUseDo not consider the first use of var to be a use.

See the description of getUses() for more details. If you want to just check whether a variable is used in a function and you don't care about the precise number/places of uses, use this function.

If var may or must be indirectly used, such a use is also counted as a use.

Preconditions
  • var and func are non-null

◆ precomputeEverything()

void retdec::llvmir2hll::VarUsesVisitor::precomputeEverything ( ShPtr< Module module)
private

Pre-computes uses of variables in all functions of the given module.

◆ stmtHasBeenAdded()

void retdec::llvmir2hll::VarUsesVisitor::stmtHasBeenAdded ( ShPtr< Statement stmt,
ShPtr< Function func 
)

Forces cache update (a new statement has been added to a function).

If caching is disabled, it does nothing. Otherwise, the function recomputes what is necessary to recompute.

Important note: The following sets of uses may be modified when this function is called:

  • dirUses
  • indirUses If you are iterating over any of these sets while calling this function, you have to first create a copy of the set and iterate over this set. Otherwise, the result is undefined.
Preconditions
  • stmt and func are non-null

◆ stmtHasBeenChanged()

void retdec::llvmir2hll::VarUsesVisitor::stmtHasBeenChanged ( ShPtr< Statement stmt,
ShPtr< Function func 
)

Forces cache update (the given statement in the given function has been altered).

If caching is disabled, it does nothing. Otherwise, the function recomputes what is necessary to recompute.

Important note: The following sets of uses may be modified when this function is called:

  • dirUses
  • indirUses If you are iterating over any of these sets while calling this function, you have to first create a copy of the set and iterate over this set. Otherwise, the result is undefined.
Preconditions
  • stmt and func are non-null

◆ stmtHasBeenRemoved()

void retdec::llvmir2hll::VarUsesVisitor::stmtHasBeenRemoved ( ShPtr< Statement stmt,
ShPtr< Function func 
)

Forces cache update (the given statement in the given function has been removed).

If caching is disabled, it does nothing. Otherwise, the function recomputes what is necessary to recompute.

Important note: The following sets of uses may be modified when this function is called:

  • dirUses
  • indirUses If you are iterating over any of these sets while calling this function, you have to first create a copy of the set and iterate over this set. Otherwise, the result is undefined.
Preconditions
  • stmt and func are non-null

◆ visit() [1/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [2/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [3/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [4/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [5/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [6/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [7/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [8/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< AssignStmt stmt)
overrideprivatevirtual

◆ visit() [9/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [10/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [11/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [12/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [13/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [14/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [15/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [16/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< BreakStmt stmt)
overrideprivatevirtual

◆ visit() [17/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [18/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [19/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< CallStmt stmt)
overrideprivatevirtual

◆ visit() [20/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [21/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [22/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [23/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [24/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [25/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [26/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [27/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [28/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [29/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [30/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< ContinueStmt stmt)
overrideprivatevirtual

◆ visit() [31/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [32/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [33/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [34/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< EmptyStmt stmt)
overrideprivatevirtual

◆ visit() [35/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [36/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [37/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [38/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [39/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< ForLoopStmt stmt)
overrideprivatevirtual

◆ visit() [40/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [41/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [42/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [43/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [44/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [45/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< GotoStmt stmt)
overrideprivatevirtual

◆ visit() [46/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [47/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [48/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [49/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< IfStmt stmt)
overrideprivatevirtual

◆ visit() [50/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [51/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [52/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [53/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [54/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [55/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [56/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [57/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [58/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [59/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [60/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [61/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [62/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [63/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [64/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< ReturnStmt stmt)
overrideprivatevirtual

◆ visit() [65/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [66/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [67/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [68/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [69/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [70/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< SwitchStmt stmt)
overrideprivatevirtual

◆ visit() [71/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [72/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [73/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [74/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< UForLoopStmt stmt)
overrideprivatevirtual

◆ visit() [75/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [76/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [77/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< UnreachableStmt stmt)
overrideprivatevirtual

◆ visit() [78/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [79/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< VarDefStmt stmt)
overrideprivatevirtual

◆ visit() [80/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [81/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [82/83]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprivate

◆ visit() [83/83]

void retdec::llvmir2hll::VarUsesVisitor::visit ( ShPtr< WhileLoopStmt stmt)
overrideprivatevirtual

Member Data Documentation

◆ cache

FuncVarUsesMap retdec::llvmir2hll::VarUsesVisitor::cache
private

Cache.

◆ cachingEnabled

bool retdec::llvmir2hll::VarUsesVisitor::cachingEnabled
private

Is caching enabled?

◆ func

ShPtr<Function> retdec::llvmir2hll::VarUsesVisitor::func
private

Function whose body is being traversed.

◆ precomputing

bool retdec::llvmir2hll::VarUsesVisitor::precomputing
private

Are we pre-computing everything?

◆ precomputingHasBeenDone

bool retdec::llvmir2hll::VarUsesVisitor::precomputingHasBeenDone
private

Has everything been successfully precomputed?

◆ va

ShPtr<ValueAnalysis> retdec::llvmir2hll::VarUsesVisitor::va
private

Analysis of values.

◆ var

ShPtr<Variable> retdec::llvmir2hll::VarUsesVisitor::var
private

Variable whose uses are obtained.

◆ varUses

ShPtr<VarUses> retdec::llvmir2hll::VarUsesVisitor::varUses
private

Uses of var.


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