retdec
|
A visitor that visits everything in an ordered way. More...
#include <ordered_all_visitor.h>
Public Member Functions | |
Visitor Interface | |
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 |
![]() | |
virtual | ~Visitor ()=default |
Protected Member Functions | |
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... | |
![]() | |
Visitor ()=default | |
Protected Attributes | |
ShPtr< Statement > | lastStmt |
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... | |
A visitor that visits everything in an ordered way.
Concrete visitors should:
using OrderedAllVisitor::visit;
declaration; otherwise, they'll be hidden by the overridden ones)accessedStmts
set to avoid looping over the same statements. Also, when a statement is accessed, it should check this set before accessing any of its "nested statements". For example, an if statement should check whether its body has already been accessed or not. visitStmt() takes care of that, so you can use it to visit statements (blocks).accessedTypes
set to avoid looping over the same types. Also, when a type is accessed, it should check this set before accessing any of its "nested types".Instances of this class have reference object semantics.
By default, the functions from the Visitor interface go through all statements and expressions, calling value->accept(this)
on each value.
|
protected |
Constructs a new visitor.
|
protected |
Makes the given type accessed.
true
if type has already been accessed, false
otherwise.
|
protected |
"Restarts" the visitor so it is in the state like it was when it was created.
[in] | visitSuccessors | New value of this attribute. |
[in] | visitNestedStmts | New value of this attribute. |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ZeroSubOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::NegativeOperandSubOptimizer, retdec::llvmir2hll::EqualOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::WrittenIntoGlobalsVisitor, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedVarsVisitor.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::VoidReturnOptimizer, retdec::llvmir2hll::SimpleCopyPropagationOptimizer, retdec::llvmir2hll::SelfAssignOptimizer, retdec::llvmir2hll::RemoveUselessCastsOptimizer, retdec::llvmir2hll::CCastOptimizer, retdec::llvmir2hll::AggressiveDerefOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::WrittenIntoGlobalsVisitor, retdec::llvmir2hll::VarUsesVisitor, retdec::llvmir2hll::ValueAnalysis, retdec::llvmir2hll::UsedVarsVisitor, and retdec::llvmir2hll::ExprTypesAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ZeroSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BitOpToLogOpOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::RemoveAllCastsOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ZeroSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BitOpToLogOpOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::BitShiftOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::BitShiftOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ZeroSubOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::OneSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::BreakOutsideLoopValidator, retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::BreakContinueReturnOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::VarUsesVisitor, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::BreakInIfAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ConstSymbolConverter, retdec::llvmir2hll::LLVMIntrinsicsOptimizer, retdec::llvmir2hll::CCastOptimizer, retdec::llvmir2hll::CArrayArgOptimizer, retdec::llvmir2hll::CallsObtainer, retdec::llvmir2hll::CallsInModuleObtainer, retdec::llvmir2hll::LLVMIntrinsicConverter, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::CGBuilder, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::IndirectFuncRefAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::VoidReturnOptimizer, retdec::llvmir2hll::LLVMIntrinsicsOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::VarUsesVisitor, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::BreakOutsideLoopValidator, retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::BreakContinueReturnOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::VarUsesVisitor, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::DerefToArrayIndexOptimizer, retdec::llvmir2hll::DerefAddressOptimizer, retdec::llvmir2hll::AggressiveDerefOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::WrittenIntoGlobalsVisitor, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedVarsVisitor.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ZeroSubOptimizer, retdec::llvmir2hll::OneSubOptimizer, retdec::llvmir2hll::EqualOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BitOpToLogOpOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::EqualOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BoolComparisonSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::RemoveAllCastsOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, retdec::llvmir2hll::UsedTypesVisitor, and retdec::llvmir2hll::ExprTypesAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::VoidReturnOptimizer, retdec::llvmir2hll::VarDefForLoopOptimizer, retdec::llvmir2hll::LoopLastContinueOptimizer, retdec::llvmir2hll::DeadCodeOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::WrittenIntoGlobalsVisitor, retdec::llvmir2hll::VarUsesVisitor, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedVarsVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::RemoveAllCastsOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::ValueTextReprVisitor.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::GotoStmtOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::VarUsesVisitor, retdec::llvmir2hll::ValueAnalysis, retdec::llvmir2hll::GotoTargetAnalysis, and retdec::llvmir2hll::BreakInIfAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::VoidReturnOptimizer, retdec::llvmir2hll::IfToSwitchOptimizer, retdec::llvmir2hll::IfStructureOptimizer, retdec::llvmir2hll::IfBeforeLoopOptimizer, retdec::llvmir2hll::DeadCodeOptimizer, retdec::llvmir2hll::BitOpToLogOpOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::VarUsesVisitor, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::RemoveAllCastsOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, retdec::llvmir2hll::UsedTypesVisitor, and retdec::llvmir2hll::ExprTypesAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::RemoveAllCastsOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedTypesVisitor.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ZeroSubOptimizer, retdec::llvmir2hll::BitOpToLogOpOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ZeroSubOptimizer, retdec::llvmir2hll::OneSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::ChangeOrderOfOperandsSubOptimizer, retdec::llvmir2hll::BitOpToLogOpOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::EqualOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BoolComparisonSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::NegationOperatorSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::RemoveAllCastsOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::ReturnValidator, retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::VoidReturnOptimizer, retdec::llvmir2hll::CCastOptimizer, retdec::llvmir2hll::BreakContinueReturnOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::VarUsesVisitor, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::WrittenIntoGlobalsVisitor, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedVarsVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::UsedTypesVisitor.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::ZeroSubOptimizer, retdec::llvmir2hll::ThreeOperandsSubOptimizer, retdec::llvmir2hll::NegativeOperandSubOptimizer, retdec::llvmir2hll::EqualOperandsSubOptimizer, retdec::llvmir2hll::ConstOperatorConstSubOptimizer, retdec::llvmir2hll::CompoundOpManager, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::VoidReturnOptimizer, retdec::llvmir2hll::DeadCodeOptimizer, retdec::llvmir2hll::BitOpToLogOpOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::VarUsesVisitor, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::SimplifyArithmExprOptimizer, retdec::llvmir2hll::TernaryOperatorSubOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, and retdec::llvmir2hll::ValueAnalysis.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::RemoveAllCastsOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::ValueAnalysis, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::NoGlobalVarDefValidator, retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::ExprTypesFixer, retdec::llvmir2hll::VoidReturnOptimizer, retdec::llvmir2hll::SimpleCopyPropagationOptimizer, retdec::llvmir2hll::NoInitVarDefOptimizer, retdec::llvmir2hll::CCastOptimizer, retdec::llvmir2hll::AggressiveDerefOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::WrittenIntoGlobalsVisitor, retdec::llvmir2hll::VarUsesVisitor, retdec::llvmir2hll::ValueAnalysis, retdec::llvmir2hll::UsedVarsVisitor, retdec::llvmir2hll::NoInitVarDefAnalysis, and retdec::llvmir2hll::ExprTypesAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::VarRenamer, retdec::llvmir2hll::VariableReplacer, retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::UnusedGlobalVarOptimizer, retdec::llvmir2hll::BracketManager, retdec::llvmir2hll::ArithmExprEvaluator, retdec::llvmir2hll::WrittenIntoGlobalsVisitor, retdec::llvmir2hll::ValueAnalysis, retdec::llvmir2hll::UsedVarsVisitor, retdec::llvmir2hll::UsedTypesVisitor, and retdec::llvmir2hll::IndirectFuncRefAnalysis.
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, and retdec::llvmir2hll::UsedTypesVisitor.
|
overridevirtual |
Implements retdec::llvmir2hll::Visitor.
Reimplemented in retdec::llvmir2hll::ValueTextReprVisitor, retdec::llvmir2hll::StatementsCounter, retdec::llvmir2hll::WhileTrueToWhileCondOptimizer, retdec::llvmir2hll::WhileTrueToUForLoopOptimizer, retdec::llvmir2hll::WhileTrueToForLoopOptimizer, retdec::llvmir2hll::VoidReturnOptimizer, retdec::llvmir2hll::PreWhileTrueLoopConvOptimizer, retdec::llvmir2hll::LoopLastContinueOptimizer, retdec::llvmir2hll::DeadCodeOptimizer, retdec::llvmir2hll::BitOpToLogOpOptimizer, retdec::llvmir2hll::RecursiveCFGBuilder, retdec::llvmir2hll::VarUsesVisitor, and retdec::llvmir2hll::ValueAnalysis.
|
protectedvirtual |
Visits the given statement, and possibly its successors or nested statements.
[in] | stmt | Statement to be visited. |
[in] | visitSuccessors | If true , a successor of stmt is also visited (and a successor of this successor, and so on). |
[in] | visitNestedStmts | If true , nested statements are also visited, e.g. loop, if, and switch statement's bodies. |
If stmt has already been accessed, this function does nothing. If stmt is the null pointer, it also does nothing. Before visiting stmt, this function adds it to accessedStmts
.
Reimplemented in retdec::llvmir2hll::UnreachableCodeInCFGRemover, retdec::llvmir2hll::RecursiveCFGBuilder, and retdec::llvmir2hll::GotoTargetAnalysis.
|
protected |
A set of all accessed statements.
|
protected |
A set of all accessed types.
Statement that has been accessed as the last one.
|
protected |
Should nested statements be accessed?
|
protected |
Should statements' successor be accessed?