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

A visitor for obtaining written-into global variables in functions. More...

#include <written_into_globals_visitor.h>

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

Static Public Member Functions

static VarSet getWrittenIntoGlobals (ShPtr< Function > func, ShPtr< Module > module)
 

Private Member Functions

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

Private Attributes

ShPtr< Modulemodule
 The current module. More...
 
VarSet globalVars
 
VarSet writtenIntoGlobals
 Written-into global variables for the current function. More...
 
bool writing
 Are we writing into a variable? More...
 
- Private Attributes inherited from retdec::llvmir2hll::OrderedAllVisitor
ShPtr< StatementlastStmt
 Statement that has been accessed as the last one. More...
 
StmtUSet accessedStmts
 A set of all accessed statements. More...
 
TypeUSet accessedTypes
 A set of all accessed types. More...
 
bool visitSuccessors
 Should statements' successor be accessed? More...
 
bool visitNestedStmts
 Should nested statements be accessed? More...
 

Detailed Description

A visitor for obtaining written-into global variables in functions.

This class implements the "static helper" (or "library") design pattern (it has just static functions and no instances can be created).

Constructor & Destructor Documentation

◆ WrittenIntoGlobalsVisitor()

retdec::llvmir2hll::WrittenIntoGlobalsVisitor::WrittenIntoGlobalsVisitor ( ShPtr< Module module)
private

Constructs a new visitor.

Parameters
[in]moduleThe current module.
Preconditions
  • module is non-null

Member Function Documentation

◆ getWrittenIntoGlobals()

VarSet retdec::llvmir2hll::WrittenIntoGlobalsVisitor::getWrittenIntoGlobals ( ShPtr< Function func,
ShPtr< Module module 
)
static

◆ visit() [1/76]

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

◆ visit() [2/76]

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

◆ visit() [3/76]

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

◆ visit() [4/76]

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

◆ visit() [5/76]

void retdec::llvmir2hll::WrittenIntoGlobalsVisitor::visit ( ShPtr< ArrayIndexOpExpr expr)
overrideprivatevirtual

◆ visit() [6/76]

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

◆ visit() [7/76]

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

◆ visit() [8/76]

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

◆ visit() [9/76]

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

◆ visit() [10/76]

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

◆ visit() [11/76]

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

◆ visit() [12/76]

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

◆ visit() [13/76]

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

◆ visit() [14/76]

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

◆ visit() [15/76]

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

◆ visit() [16/76]

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

◆ visit() [17/76]

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

◆ visit() [18/76]

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

◆ visit() [19/76]

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

◆ visit() [20/76]

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

◆ visit() [21/76]

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

◆ visit() [22/76]

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

◆ visit() [23/76]

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

◆ visit() [24/76]

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

◆ visit() [25/76]

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

◆ visit() [26/76]

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

◆ visit() [27/76]

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

◆ visit() [28/76]

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

◆ visit() [29/76]

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

◆ visit() [30/76]

void retdec::llvmir2hll::WrittenIntoGlobalsVisitor::visit ( ShPtr< DerefOpExpr expr)
overrideprivatevirtual

◆ visit() [31/76]

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

◆ visit() [32/76]

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

◆ visit() [33/76]

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

◆ visit() [34/76]

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

◆ visit() [35/76]

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

◆ visit() [36/76]

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

◆ visit() [37/76]

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

◆ visit() [38/76]

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

◆ visit() [39/76]

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

◆ visit() [40/76]

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

◆ visit() [41/76]

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

◆ visit() [42/76]

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

◆ visit() [43/76]

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

◆ visit() [44/76]

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

◆ visit() [45/76]

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

◆ visit() [46/76]

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

◆ visit() [47/76]

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

◆ visit() [48/76]

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

◆ visit() [49/76]

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

◆ visit() [50/76]

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

◆ visit() [51/76]

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

◆ visit() [52/76]

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

◆ visit() [53/76]

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

◆ visit() [54/76]

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

◆ visit() [55/76]

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

◆ visit() [56/76]

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

◆ visit() [57/76]

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

◆ visit() [58/76]

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

◆ visit() [59/76]

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

◆ visit() [60/76]

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

◆ visit() [61/76]

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

◆ visit() [62/76]

void retdec::llvmir2hll::WrittenIntoGlobalsVisitor::visit ( ShPtr< StructIndexOpExpr expr)
overrideprivatevirtual

◆ visit() [63/76]

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

◆ visit() [64/76]

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

◆ visit() [65/76]

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

◆ visit() [66/76]

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

◆ visit() [67/76]

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

◆ visit() [68/76]

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

◆ visit() [69/76]

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

◆ visit() [70/76]

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

◆ visit() [71/76]

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

◆ visit() [72/76]

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

◆ visit() [73/76]

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

◆ visit() [74/76]

void retdec::llvmir2hll::WrittenIntoGlobalsVisitor::visit ( ShPtr< Variable var)
overrideprivatevirtual

◆ visit() [75/76]

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

◆ visit() [76/76]

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

Member Data Documentation

◆ globalVars

VarSet retdec::llvmir2hll::WrittenIntoGlobalsVisitor::globalVars
private

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

◆ module

ShPtr<Module> retdec::llvmir2hll::WrittenIntoGlobalsVisitor::module
private

The current module.

◆ writing

bool retdec::llvmir2hll::WrittenIntoGlobalsVisitor::writing
private

Are we writing into a variable?

◆ writtenIntoGlobals

VarSet retdec::llvmir2hll::WrittenIntoGlobalsVisitor::writtenIntoGlobals
private

Written-into global variables for the current function.


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