retdec
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
retdec::llvmir2hll::SimpleCopyPropagationOptimizer Class Referencefinal

A simple version of the copy propagation optimization. More...

#include <simple_copy_propagation_optimizer.h>

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

Public Member Functions

 SimpleCopyPropagationOptimizer (ShPtr< Module > module, ShPtr< ValueAnalysis > va, ShPtr< CallInfoObtainer > cio)
 Constructs a new optimizer. More...
 
virtual std::string getId () const override
 Returns the ID of the optimizer. More...
 
- Public Member Functions inherited from retdec::llvmir2hll::Optimizer
 Optimizer (ShPtr< Module > module)
 Constructs a new optimizer. More...
 
ShPtr< Moduleoptimize ()
 Performs all the optimizations of the specific optimizer. More...
 
- Public 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< 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< 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
 
- Public Member Functions inherited from retdec::llvmir2hll::Visitor
virtual ~Visitor ()=default
 

Private Types

using VarUSet = std::unordered_set< ShPtr< Variable > >
 Unordered set of variables. More...
 

Private Member Functions

virtual void doOptimization () override
 Performs the optimization on all functions in the module. More...
 
virtual void runOnFunction (ShPtr< Function > func) override
 Performs all optimizations on the given function. More...
 
void tryOptimization (ShPtr< Statement > stmt)
 Tries to perform the optimization on the given statement. More...
 
void tryOptimizationCase1 (ShPtr< Statement > stmt, ShPtr< Variable > lhsVar, ShPtr< Expression > rhs)
 Tries to perform the case (1) optimization from the class description on the given statement. More...
 
Visitor Interface
virtual void visit (ShPtr< AssignStmt > stmt) override
 
virtual void visit (ShPtr< VarDefStmt > 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 Attributes

ShPtr< CFGBuildercfgBuilder
 The used builder of CFGs. More...
 
ShPtr< ValueAnalysisva
 Analysis of values. More...
 
ShPtr< CallInfoObtainercio
 Obtainer of information about function calls. More...
 
ShPtr< VarUsesVisitorvuv
 Visitor for obtaining uses of variables. More...
 
VarSet globalVars
 
ShPtr< CFGcurrCFG
 CFG of the currently optimized function. More...
 
VarUSet triedVars
 Set of variables that we have already tried to optimized. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from retdec::llvmir2hll::Optimizer
template<class OptimizerType , typename... Args>
static ShPtr< Moduleoptimize (ShPtr< Module > module, Args &&... args)
 Creates an instance of OptimizerType with the given arguments and optimizes the given module by it. More...
 
- Protected Member Functions inherited from retdec::llvmir2hll::FuncOptimizer
 FuncOptimizer (ShPtr< Module > module)
 Constructs a new function optimizer. More...
 
template<typename T >
void visitNestedAndSuccessorStatements (ShPtr< T > stmt)
 Visits the given statement, its nested statements, and successor statements (depending on the settings of the visitor). More...
 
- Protected Member Functions inherited from retdec::llvmir2hll::Optimizer
virtual void doInitialization ()
 Performs pre-optimization matters. More...
 
virtual void doFinalization ()
 Performs post-optimization matters. More...
 
- Protected Member Functions inherited from retdec::llvmir2hll::OrderedAllVisitor
 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...
 
- Protected Member Functions inherited from retdec::llvmir2hll::Visitor
 Visitor ()=default
 
- Protected Attributes inherited from retdec::llvmir2hll::FuncOptimizer
ShPtr< FunctioncurrFunc
 Function that is currently being optimized. More...
 
- Protected Attributes inherited from retdec::llvmir2hll::Optimizer
ShPtr< Modulemodule
 The module that is being optimized. More...
 
- Protected 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 simple version of the copy propagation optimization.

This is a simplified version of the copy propagation optimization (see CopyPropagationOptimizer). It performs a copy propagation only if the statement is of one of the following forms:

// (1)
a = expr (`expr` contains a function call)
// ... `a` is used here (only once) and there are no other uses of `a` in the
function. There may be some statements between `a = expr` and the use of
`a`; in such a case, the optimization is done only if it does not
change the code behavior.
bool contains(const std::string &str, const std::string &sub)
Checks if str contains sub.
Definition: string.cpp:311

or

// (2)
a = expr (`expr` is an arithmetical expression with no calls)
// ... `a` is used here (may be several times) before variables used in the
// statement `a = expr` are modified, and apart from all the uses, there
// are no other uses of `a` in the function.

The conditions (1) and (2) imply that a is just a temporary variable.

TODO Currently, we optimize (2) only if expr is a variable. Otherwise, in some cases, the result of the optimization is less readable than the original code.

The optimization is not performed when:

Instances of this class have reference object semantics.

This is a concrete optimizer which should not be subclassed.

Member Typedef Documentation

◆ VarUSet

Unordered set of variables.

Constructor & Destructor Documentation

◆ SimpleCopyPropagationOptimizer()

retdec::llvmir2hll::SimpleCopyPropagationOptimizer::SimpleCopyPropagationOptimizer ( ShPtr< Module module,
ShPtr< ValueAnalysis va,
ShPtr< CallInfoObtainer cio 
)

Constructs a new optimizer.

Parameters
[in]moduleModule to be optimized.
[in]vaAnalysis of values.
[in]cioObtainer of information about function calls.
Preconditions
  • module, va, and cio are non-null

Member Function Documentation

◆ doOptimization()

void retdec::llvmir2hll::SimpleCopyPropagationOptimizer::doOptimization ( )
overrideprivatevirtual

Performs the optimization on all functions in the module.

This function calls runOnFunction() for each function in the module.

Only redefine if you want to prescribe the order in which functions are optimized; otherwise, just override runOnFunction().

Reimplemented from retdec::llvmir2hll::FuncOptimizer.

◆ getId()

virtual std::string retdec::llvmir2hll::SimpleCopyPropagationOptimizer::getId ( ) const
inlineoverridevirtual

Returns the ID of the optimizer.

Implements retdec::llvmir2hll::Optimizer.

◆ runOnFunction()

void retdec::llvmir2hll::SimpleCopyPropagationOptimizer::runOnFunction ( ShPtr< Function func)
overrideprivatevirtual

Performs all optimizations on the given function.

Parameters
[in,out]funcFunction to be optimized.

By default, this function calls func->accept(this).

Reimplemented from retdec::llvmir2hll::FuncOptimizer.

◆ tryOptimization()

void retdec::llvmir2hll::SimpleCopyPropagationOptimizer::tryOptimization ( ShPtr< Statement stmt)
private

Tries to perform the optimization on the given statement.

Preconditions

◆ tryOptimizationCase1()

void retdec::llvmir2hll::SimpleCopyPropagationOptimizer::tryOptimizationCase1 ( ShPtr< Statement stmt,
ShPtr< Variable lhsVar,
ShPtr< Expression rhs 
)
private

Tries to perform the case (1) optimization from the class description on the given statement.

For the preconditions, see tryOptimization(), which is the place from where this function should be called.

◆ visit() [1/71]

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

◆ visit() [2/71]

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

◆ visit() [3/71]

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

◆ visit() [4/71]

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

◆ visit() [5/71]

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

◆ visit() [6/71]

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

◆ visit() [7/71]

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

◆ visit() [8/71]

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

◆ visit() [9/71]

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

◆ visit() [10/71]

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

◆ visit() [11/71]

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

◆ visit() [12/71]

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

◆ visit() [13/71]

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

◆ visit() [14/71]

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

◆ visit() [15/71]

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

◆ visit() [16/71]

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

◆ visit() [17/71]

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

◆ visit() [18/71]

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

◆ visit() [19/71]

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

◆ visit() [20/71]

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

◆ visit() [21/71]

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

◆ visit() [22/71]

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

◆ visit() [23/71]

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

◆ visit() [24/71]

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

◆ visit() [25/71]

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

◆ visit() [26/71]

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

◆ visit() [27/71]

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

◆ visit() [28/71]

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

◆ visit() [29/71]

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

◆ visit() [30/71]

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

◆ visit() [31/71]

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

◆ visit() [32/71]

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

◆ visit() [33/71]

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

◆ visit() [34/71]

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

◆ visit() [35/71]

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

◆ visit() [36/71]

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

◆ visit() [37/71]

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

◆ visit() [38/71]

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

◆ visit() [39/71]

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

◆ visit() [40/71]

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

◆ visit() [41/71]

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

◆ visit() [42/71]

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

◆ visit() [43/71]

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

◆ visit() [44/71]

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

◆ visit() [45/71]

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

◆ visit() [46/71]

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

◆ visit() [47/71]

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

◆ visit() [48/71]

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

◆ visit() [49/71]

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

◆ visit() [50/71]

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

◆ visit() [51/71]

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

◆ visit() [52/71]

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

◆ visit() [53/71]

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

◆ visit() [54/71]

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

◆ visit() [55/71]

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

◆ visit() [56/71]

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

◆ visit() [57/71]

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

◆ visit() [58/71]

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

◆ visit() [59/71]

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

◆ visit() [60/71]

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

◆ visit() [61/71]

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

◆ visit() [62/71]

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

◆ visit() [63/71]

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

◆ visit() [64/71]

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

◆ visit() [65/71]

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

◆ visit() [66/71]

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

◆ visit() [67/71]

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

◆ visit() [68/71]

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

◆ visit() [69/71]

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

◆ visit() [70/71]

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

◆ visit() [71/71]

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

Member Data Documentation

◆ cfgBuilder

ShPtr<CFGBuilder> retdec::llvmir2hll::SimpleCopyPropagationOptimizer::cfgBuilder
private

The used builder of CFGs.

◆ cio

ShPtr<CallInfoObtainer> retdec::llvmir2hll::SimpleCopyPropagationOptimizer::cio
private

Obtainer of information about function calls.

◆ currCFG

ShPtr<CFG> retdec::llvmir2hll::SimpleCopyPropagationOptimizer::currCFG
private

CFG of the currently optimized function.

◆ globalVars

VarSet retdec::llvmir2hll::SimpleCopyPropagationOptimizer::globalVars
private

Global variables in module. This is here to speedup the optimization. By using this set, we do not have to ask module every time we need such information.

◆ triedVars

VarUSet retdec::llvmir2hll::SimpleCopyPropagationOptimizer::triedVars
private

Set of variables that we have already tried to optimized.

◆ va

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

Analysis of values.

◆ vuv

ShPtr<VarUsesVisitor> retdec::llvmir2hll::SimpleCopyPropagationOptimizer::vuv
private

Visitor for obtaining uses of variables.


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