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

Optimizes while loops into for loops. More...

#include <while_true_to_for_loop_optimizer.h>

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

Public Member Functions

 WhileTrueToForLoopOptimizer (ShPtr< Module > module, ShPtr< ValueAnalysis > va, 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< 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< 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

virtual void doOptimization () override
 Performs the optimization on all functions in the module. More...
 
ShPtr< ExpressioncomputeStartValueOfForLoop (ShPtr< IndVarInfo > indVarInfo) const
 Returns the start value of the resulting for loop. More...
 
ShPtr< ExpressioncomputeStepOfForLoop (ShPtr< IndVarInfo > indVarInfo) const
 Returns the step of the resulting for loop. More...
 
ShPtr< ExpressioncomputeEndCondOfForLoop (ShPtr< IndVarInfo > indVarInfo, ShPtr< Expression > startValue, ShPtr< Expression > step) const
 Returns the end condition of the resulting for loop. More...
 
ShPtr< ConstIntevaluate (ShPtr< Expression > expr) const
 Tries to evaluate the given arithmetical expression and returns the resulting value. More...
 
Visitor Interface
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
 

Static Private Member Functions

static ShPtr< BinaryOpExprexchangeCompOpAndOperands (ShPtr< BinaryOpExpr > expr)
 Exchanges the operation and operands in the given binary comparison expression. More...
 
static bool isNonNegative (ShPtr< Expression > expr)
 Returns true if the given expression represents a non-negative value, false otherwise. More...
 
static bool isPositive (ShPtr< Expression > expr)
 Returns true if the given expression represents a positive value, false otherwise. More...
 

Private Attributes

ShPtr< ValueAnalysisva
 Analysis of values. More...
 
ShPtr< ArithmExprEvaluatorarithmExprEvaluator
 Evaluator of 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 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

Optimizes while loops into for loops.

For example, the following loop

i = 0
while True:
printf("test")
if i >= g:
break
i = i + 1

can be optimized into

for i in range(0, g + 1):
printf("test")

Prerequisities:

Instances of this class have reference object semantics.

This is a concrete optimizer which should not be subclassed.

Constructor & Destructor Documentation

◆ WhileTrueToForLoopOptimizer()

retdec::llvmir2hll::WhileTrueToForLoopOptimizer::WhileTrueToForLoopOptimizer ( ShPtr< Module module,
ShPtr< ValueAnalysis va,
ShPtr< ArithmExprEvaluator arithmExprEvaluator 
)

Constructs a new optimizer.

Parameters
[in]moduleModule to be optimized.
[in]vaAnalysis of values.
[in]arithmExprEvaluatorEvaluator of expressions.
Preconditions
  • module, va, and arithmExprEvaluator are non-null

Member Function Documentation

◆ computeEndCondOfForLoop()

ShPtr< Expression > retdec::llvmir2hll::WhileTrueToForLoopOptimizer::computeEndCondOfForLoop ( ShPtr< IndVarInfo indVarInfo,
ShPtr< Expression startValue,
ShPtr< Expression step 
) const
private

Returns the end condition of the resulting for loop.

If the end condition cannot be computed, the null pointer is returned.

Preconditions
  • both startValue and step are non-null

◆ computeStartValueOfForLoop()

ShPtr< Expression > retdec::llvmir2hll::WhileTrueToForLoopOptimizer::computeStartValueOfForLoop ( ShPtr< IndVarInfo indVarInfo) const
private

Returns the start value of the resulting for loop.

If the start value cannot be computed, the null pointer is returned.

◆ computeStepOfForLoop()

ShPtr< Expression > retdec::llvmir2hll::WhileTrueToForLoopOptimizer::computeStepOfForLoop ( ShPtr< IndVarInfo indVarInfo) const
private

Returns the step of the resulting for loop.

If the step cannot be computed, the null pointer is returned.

◆ doOptimization()

void retdec::llvmir2hll::WhileTrueToForLoopOptimizer::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.

◆ evaluate()

ShPtr< ConstInt > retdec::llvmir2hll::WhileTrueToForLoopOptimizer::evaluate ( ShPtr< Expression expr) const
private

Tries to evaluate the given arithmetical expression and returns the resulting value.

If the expression cannot be evaluated, the null pointer is returned.

◆ exchangeCompOpAndOperands()

ShPtr< BinaryOpExpr > retdec::llvmir2hll::WhileTrueToForLoopOptimizer::exchangeCompOpAndOperands ( ShPtr< BinaryOpExpr expr)
staticprivate

Exchanges the operation and operands in the given binary comparison expression.

For example, i < j is converted into j > i.

The original expression is not modified.

If the operation is is not comparison, it returns the null pointer.

◆ getId()

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

Returns the ID of the optimizer.

Implements retdec::llvmir2hll::Optimizer.

◆ isNonNegative()

bool retdec::llvmir2hll::WhileTrueToForLoopOptimizer::isNonNegative ( ShPtr< Expression expr)
staticprivate

Returns true if the given expression represents a non-negative value, false otherwise.

If the non-negativeness of expr cannot be determined, this function returns false.

◆ isPositive()

bool retdec::llvmir2hll::WhileTrueToForLoopOptimizer::isPositive ( ShPtr< Expression expr)
staticprivate

Returns true if the given expression represents a positive value, false otherwise.

If the positiveness of expr cannot be determined, this function returns false.

◆ visit() [1/70]

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

◆ visit() [2/70]

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

◆ visit() [3/70]

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

◆ visit() [4/70]

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

◆ visit() [5/70]

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

◆ visit() [6/70]

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

◆ visit() [7/70]

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

◆ visit() [8/70]

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

◆ visit() [9/70]

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

◆ visit() [10/70]

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

◆ visit() [11/70]

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

◆ visit() [12/70]

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

◆ visit() [13/70]

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

◆ visit() [14/70]

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

◆ visit() [15/70]

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

◆ visit() [16/70]

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

◆ visit() [17/70]

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

◆ visit() [18/70]

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

◆ visit() [19/70]

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

◆ visit() [20/70]

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

◆ visit() [21/70]

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

◆ visit() [22/70]

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

◆ visit() [23/70]

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

◆ visit() [24/70]

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

◆ visit() [25/70]

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

◆ visit() [26/70]

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

◆ visit() [27/70]

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

◆ visit() [28/70]

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

◆ visit() [29/70]

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

◆ visit() [30/70]

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

◆ visit() [31/70]

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

◆ visit() [32/70]

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

◆ visit() [33/70]

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

◆ visit() [34/70]

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

◆ visit() [35/70]

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

◆ visit() [36/70]

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

◆ visit() [37/70]

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

◆ visit() [38/70]

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

◆ visit() [39/70]

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

◆ visit() [40/70]

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

◆ visit() [41/70]

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

◆ visit() [42/70]

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

◆ visit() [43/70]

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

◆ visit() [44/70]

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

◆ visit() [45/70]

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

◆ visit() [46/70]

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

◆ visit() [47/70]

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

◆ visit() [48/70]

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

◆ visit() [49/70]

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

◆ visit() [50/70]

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

◆ visit() [51/70]

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

◆ visit() [52/70]

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

◆ visit() [53/70]

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

◆ visit() [54/70]

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

◆ visit() [55/70]

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

◆ visit() [56/70]

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

◆ visit() [57/70]

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

◆ visit() [58/70]

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

◆ visit() [59/70]

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

◆ visit() [60/70]

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

◆ visit() [61/70]

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

◆ visit() [62/70]

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

◆ visit() [63/70]

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

◆ visit() [64/70]

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

◆ visit() [65/70]

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

◆ visit() [66/70]

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

◆ visit() [67/70]

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

◆ visit() [68/70]

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

◆ visit() [69/70]

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

◆ visit() [70/70]

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

Member Data Documentation

◆ arithmExprEvaluator

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

Evaluator of expressions.

◆ va

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

Analysis of values.


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