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

Removes dead code. Examples are mentioned below. More...

#include <dead_code_optimizer.h>

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

Public Member Functions

 DeadCodeOptimizer (ShPtr< Module > module, ShPtr< ArithmExprEvaluator > arithmExprEvaluator)
 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< 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< UForLoopStmt > stmt) override
 
virtual void visit (ShPtr< GotoStmt > stmt) override
 
virtual void visit (ShPtr< ReturnStmt > stmt) override
 
virtual void visit (ShPtr< UnreachableStmt > stmt) override
 
virtual void visit (ShPtr< VarDefStmt > 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 Member Functions

SwitchStmt::clause_iterator findClauseWithCondEqualToControlExpr (ShPtr< SwitchStmt > stmt, ShPtr< Constant > controlExpr)
 Try to find the first clause with condition that is equal to control expression. More...
 
IfStmt::clause_iterator findTrueClause (ShPtr< IfStmt > stmt)
 Find first true clause in stmt and return it. More...
 
bool hasBreakContinueReturnInAllClausesAsLastStmt (ShPtr< SwitchStmt > stmt)
 Find if all clauses in stmt have break, continue, return statement at last statement. More...
 
void optimizeBecauseTrueClauseIsPresent (ShPtr< IfStmt > stmt, IfStmt::clause_iterator trueClause)
 Optimize stmt when one of clauses was evaluated as true. More...
 
void optimizeSwitchStmt (ShPtr< SwitchStmt > stmt, SwitchStmt::clause_iterator resultClause)
 Optimize stmt. More...
 
void removeFalseClausesWithoutGotoLabel (ShPtr< IfStmt > stmt)
 Removes if, else-if clauses with evaluated condition as false. Clause can be removed if doesn't have goto label. More...
 
void correctIfStmtDueToPresenceOfFalseClauses (ShPtr< IfStmt > stmt)
 Make correctness on stmt in special cases. More...
 
void tryToOptimizeForLoopStmt (ShPtr< ForLoopStmt > stmt)
 Try to optimize ForLoopStmt. More...
 
void tryToOptimizeIfStmt (ShPtr< IfStmt > stmt)
 Try to optimize stmt. More...
 
void tryToOptimizeSwitchStmt (ShPtr< SwitchStmt > stmt)
 Try to optimize SwitchStmt. More...
 
void tryToOptimizeWhileLoopStmt (ShPtr< WhileLoopStmt > stmt)
 Try to optimize WhileLoopStmt. More...
 
Visitor Interface
virtual void visit (ShPtr< IfStmt > stmt) override
 
virtual void visit (ShPtr< SwitchStmt > stmt) override
 
virtual void visit (ShPtr< ForLoopStmt > stmt) override
 
virtual void visit (ShPtr< WhileLoopStmt > 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< ArithmExprEvaluatorarithmExprEvaluator
 The used evaluator of arithmetical expressions. 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...
 
virtual void doOptimization () override
 Performs the optimization on all functions in the module. More...
 
virtual void runOnFunction (ShPtr< Function > func)
 Performs all optimizations on the given function. 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

Removes dead code. Examples are mentioned below.

WhileLoopStmt
while (false) {
statement;
}
statement2;
can be optimized to
statement2;
IfStmt
if (true) {
statement;
}
can be optimized to
statement;
if (false) {
statement;
} else {
statement2;
}
can be optimized to
statement2;
if (true) {
statement;
} else if (false) {
label: statement2;
} else if (anything) {
statement3;
} else if (false) {
statement4;
}
can be optimized to
if (true) {
statement;
} else if (false) {
label: statement2;
}
SwitchStmt
switch (2) {
case 2: statement; break;
}
can be optimized to
statement;
switch (2) {
case 2: statement; break;
case 4: label: statement; break;
case 8: statement; break;
}
can be optimized to
switch (2) {
case 2: statement; break;
case 4: label: statement; break;
}

Instances of this class have reference object semantics.

This is a concrete optimizer which should not be subclassed.

Constructor & Destructor Documentation

◆ DeadCodeOptimizer()

retdec::llvmir2hll::DeadCodeOptimizer::DeadCodeOptimizer ( ShPtr< Module module,
ShPtr< ArithmExprEvaluator arithmExprEvaluator 
)

Constructs a new optimizer.

Parameters
[in]moduleModule to be optimized.
[in]arithmExprEvaluatorThe used evaluator of arithmetical expressions.
Preconditions
  • module is non-null
  • arithmExprEvaluator is non-null

Member Function Documentation

◆ correctIfStmtDueToPresenceOfFalseClauses()

void retdec::llvmir2hll::DeadCodeOptimizer::correctIfStmtDueToPresenceOfFalseClauses ( ShPtr< IfStmt stmt)
private

Make correctness on stmt in special cases.

Due to removing false clauses we can get if statement without first if condition and body. We need to make correctness. For Example:

if () {}
statement2;

To:

statement2;
Parameters
[in]stmtStatement on which are made correctness.

◆ findClauseWithCondEqualToControlExpr()

SwitchStmt::clause_iterator retdec::llvmir2hll::DeadCodeOptimizer::findClauseWithCondEqualToControlExpr ( ShPtr< SwitchStmt stmt,
ShPtr< Constant controlExpr 
)
private

Try to find the first clause with condition that is equal to control expression.

Parameters
[in]stmtStatement to analyse.
[in]controlExprControl expression of stmt.
Returns
if clause found return iterator to this clause, otherwise clause_end().

◆ findTrueClause()

IfStmt::clause_iterator retdec::llvmir2hll::DeadCodeOptimizer::findTrueClause ( ShPtr< IfStmt stmt)
private

Find first true clause in stmt and return it.

Parameters
[in]stmtStatement where is true clause searched.
Returns
if clause found return iterator to this clause, otherwise clause_end().

◆ getId()

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

Returns the ID of the optimizer.

Implements retdec::llvmir2hll::Optimizer.

◆ hasBreakContinueReturnInAllClausesAsLastStmt()

bool retdec::llvmir2hll::DeadCodeOptimizer::hasBreakContinueReturnInAllClausesAsLastStmt ( ShPtr< SwitchStmt stmt)
private

Find if all clauses in stmt have break, continue, return statement at last statement.

Parameters
[in]stmtStatement to analyse.
Returns
true if all clauses in stmt have break, continue, return statement at last statement, otherwise false.

◆ optimizeBecauseTrueClauseIsPresent()

void retdec::llvmir2hll::DeadCodeOptimizer::optimizeBecauseTrueClauseIsPresent ( ShPtr< IfStmt stmt,
IfStmt::clause_iterator  trueClause 
)
private

Optimize stmt when one of clauses was evaluated as true.

Parameters
[in]stmtStatement to optimize.
[in]trueClauseFirst true clause.

◆ optimizeSwitchStmt()

void retdec::llvmir2hll::DeadCodeOptimizer::optimizeSwitchStmt ( ShPtr< SwitchStmt stmt,
SwitchStmt::clause_iterator  resultClause 
)
private

Optimize stmt.

Parameters
[in]stmtStatement to optimize.
[in]resultClauseClause that has equal evaluated condition as control expression.

◆ removeFalseClausesWithoutGotoLabel()

void retdec::llvmir2hll::DeadCodeOptimizer::removeFalseClausesWithoutGotoLabel ( ShPtr< IfStmt stmt)
private

Removes if, else-if clauses with evaluated condition as false. Clause can be removed if doesn't have goto label.

Parameters
[in]stmtStatement from which are removed false clause.

◆ tryToOptimizeForLoopStmt()

void retdec::llvmir2hll::DeadCodeOptimizer::tryToOptimizeForLoopStmt ( ShPtr< ForLoopStmt stmt)
private

Try to optimize ForLoopStmt.

Optimization is possible when end condition in for is evaluated as false and body of stmt doesn't have goto label.

Parameters
[in]stmtForLoopStmt to optimize.

◆ tryToOptimizeIfStmt()

void retdec::llvmir2hll::DeadCodeOptimizer::tryToOptimizeIfStmt ( ShPtr< IfStmt stmt)
private

Try to optimize stmt.

Parameters
[in]stmtStatement to optimize.

◆ tryToOptimizeSwitchStmt()

void retdec::llvmir2hll::DeadCodeOptimizer::tryToOptimizeSwitchStmt ( ShPtr< SwitchStmt stmt)
private

Try to optimize SwitchStmt.

Optimization is possible when all clauses have break, continue or return statement at last statement. Also is need to have clause with condition which is equal to control expression after evaluation.

Parameters
[in]stmtSwitchStmt to optimize.

◆ tryToOptimizeWhileLoopStmt()

void retdec::llvmir2hll::DeadCodeOptimizer::tryToOptimizeWhileLoopStmt ( ShPtr< WhileLoopStmt stmt)
private

Try to optimize WhileLoopStmt.

Optimization is possible when condition in while is evaluated as false and body of stmt doesn't have goto label.

Parameters
[in]stmtWhileLoopStmt to optimize.

◆ visit() [1/73]

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

◆ visit() [2/73]

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

◆ visit() [3/73]

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

◆ visit() [4/73]

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

◆ visit() [5/73]

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

◆ visit() [6/73]

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

◆ visit() [7/73]

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

◆ visit() [8/73]

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

◆ visit() [9/73]

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

◆ visit() [10/73]

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

◆ visit() [11/73]

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

◆ visit() [12/73]

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

◆ visit() [13/73]

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

◆ visit() [14/73]

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

◆ visit() [15/73]

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

◆ visit() [16/73]

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

◆ visit() [17/73]

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

◆ visit() [18/73]

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

◆ visit() [19/73]

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

◆ visit() [20/73]

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

◆ visit() [21/73]

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

◆ visit() [22/73]

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

◆ visit() [23/73]

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

◆ visit() [24/73]

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

◆ visit() [25/73]

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

◆ visit() [26/73]

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

◆ visit() [27/73]

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

◆ visit() [28/73]

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

◆ visit() [29/73]

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

◆ visit() [30/73]

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

◆ visit() [31/73]

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

◆ visit() [32/73]

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

◆ visit() [33/73]

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

◆ visit() [34/73]

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

◆ visit() [35/73]

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

◆ visit() [36/73]

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

◆ visit() [37/73]

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

◆ visit() [38/73]

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

◆ visit() [39/73]

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

◆ visit() [40/73]

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

◆ visit() [41/73]

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

◆ visit() [42/73]

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

◆ visit() [43/73]

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

◆ visit() [44/73]

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

◆ visit() [45/73]

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

◆ visit() [46/73]

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

◆ visit() [47/73]

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

◆ visit() [48/73]

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

◆ visit() [49/73]

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

◆ visit() [50/73]

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

◆ visit() [51/73]

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

◆ visit() [52/73]

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

◆ visit() [53/73]

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

◆ visit() [54/73]

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

◆ visit() [55/73]

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

◆ visit() [56/73]

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

◆ visit() [57/73]

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

◆ visit() [58/73]

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

◆ visit() [59/73]

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

◆ visit() [60/73]

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

◆ visit() [61/73]

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

◆ visit() [62/73]

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

◆ visit() [63/73]

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

◆ visit() [64/73]

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

◆ visit() [65/73]

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

◆ visit() [66/73]

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

◆ visit() [67/73]

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

◆ visit() [68/73]

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

◆ visit() [69/73]

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

◆ visit() [70/73]

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

◆ visit() [71/73]

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

◆ visit() [72/73]

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

◆ visit() [73/73]

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

Member Data Documentation

◆ arithmExprEvaluator

ShPtr<ArithmExprEvaluator> retdec::llvmir2hll::DeadCodeOptimizer::arithmExprEvaluator
private

The used evaluator of arithmetical expressions.


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