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

A renamer of variable names which names the variables gX (global variables), aX (parameters), and vX (local variables). More...

#include <unified_var_renamer.h>

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

Public Member Functions

virtual std::string getId () const override
 Returns the ID of the renamer. More...
 
- Public Member Functions inherited from retdec::llvmir2hll::VarRenamer
void renameVars (ShPtr< Module > module)
 Renames variables in the given module according to the settings set when constructing the renamer. More...
 

Static Public Member Functions

static ShPtr< VarRenamercreate (ShPtr< VarNameGen > varNameGen, bool useDebugNames=true)
 Creates a new renamer. More...
 

Private Member Functions

 UnifiedVarRenamer (ShPtr< VarNameGen > varNameGen, bool useDebugNames)
 Constructs a new renamer. More...
 
virtual void renameGlobalVar (ShPtr< Variable > var) override
 Renames the given global variable. More...
 
virtual void renameVarsInFunc (ShPtr< Function > func) override
 Renames variables in the given function. More...
 
virtual void renameFuncParam (ShPtr< Variable > var, ShPtr< Function > func) override
 Renames the given parameter var of function func. More...
 
virtual void renameFuncLocalVar (ShPtr< Variable > var, ShPtr< Function > func) override
 Renames the given local variable var of function func. More...
 

Private Attributes

UPtr< VarNameGenglobalVarNameGen
 Generator of names for global variables. More...
 
UPtr< VarNameGenparamVarNameGen
 Generator of names for parameters. More...
 
UPtr< VarNameGenlocalVarNameGen
 Generator of names for local variables. More...
 

Additional Inherited Members

- Protected Types inherited from retdec::llvmir2hll::VarRenamer
using FuncStringSetMap = std::map< ShPtr< Function >, StringSet >
 Mapping of a function into a set of strings. More...
 
using FuncByNameMap = std::map< std::string, ShPtr< Function > >
 Mapping of a function's name into the function. More...
 
- Protected Member Functions inherited from retdec::llvmir2hll::VarRenamer
 VarRenamer (ShPtr< VarNameGen > varNameGen, bool useDebugNames=true)
 Constructs a new variable renamer. More...
 
void assignName (ShPtr< Variable > var, const std::string &name, ShPtr< Function > func=nullptr)
 Assigns name to the given variable var, possibly in the given function. More...
 
void assignNameFromDebugInfoIfAvail (ShPtr< Variable > var, ShPtr< Function > func=nullptr)
 Assigns the name from debug information (if available) to the given variable. More...
 
bool isGlobalVar (ShPtr< Variable > var) const
 Returns true if the given variable is global, false otherwise. More...
 
bool isFunc (ShPtr< Variable > var) const
 Returns true if the given variable corresponds to a function, false otherwise. More...
 
bool hasBeenRenamed (ShPtr< Variable > var) const
 Returns true if the given variable has already been renamed, false otherwise. More...
 
bool nameExists (const std::string &name, ShPtr< Function > func=nullptr) const
 Returns true if the given name has already been assigned, false otherwise. More...
 
ShPtr< FunctiongetFuncByName (const std::string &name) const
 Returns a function with the given name. More...
 
virtual void doVarsRenaming ()
 Renames the variables in module. More...
 
virtual void renameUsingDebugNames ()
 Renames all variables in the module by using the assigned names from debug information. More...
 
virtual void renameGlobalVars ()
 Renames all global variables in the module. More...
 
virtual void renameVarsInFuncs ()
 Renames the variables in all functions. More...
 
virtual void visit (ShPtr< Variable > var) 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
 
- 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...
 
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< 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
 
- Protected Member Functions inherited from retdec::llvmir2hll::Visitor
 Visitor ()=default
 
virtual ~Visitor ()=default
 
- Protected Attributes inherited from retdec::llvmir2hll::VarRenamer
ShPtr< VarNameGenvarNameGen
 Used generator of variable names. More...
 
bool useDebugNames
 Should we use variable names from debugging information? More...
 
ShPtr< Modulemodule
 Module in which the variables are being renamed. More...
 
VarSet globalVars
 
FuncByNameMap funcsByName
 
VarSet renamedVars
 Variables which have already been renamed. More...
 
StringSet globalVarsNames
 Assigned names of global variables. More...
 
FuncStringSetMap localVarsNames
 
ShPtr< FunctioncurrFunc
 The currently visited function. More...
 
- Protected Attributes inherited from retdec::llvmir2hll::OrderedAllVisitor
ShPtr< StatementlastStmt
 Statement that has been accessed as the last one. More...
 
StmtUSet accessedStmts
 A set of all accessed statements. More...
 
TypeUSet accessedTypes
 A set of all accessed types. More...
 
bool visitSuccessors
 Should statements' successor be accessed? More...
 
bool visitNestedStmts
 Should nested statements be accessed? More...
 

Detailed Description

A renamer of variable names which names the variables gX (global variables), aX (parameters), and vX (local variables).

Use create() to create instances.

Constructor & Destructor Documentation

◆ UnifiedVarRenamer()

retdec::llvmir2hll::UnifiedVarRenamer::UnifiedVarRenamer ( ShPtr< VarNameGen varNameGen,
bool  useDebugNames 
)
private

Constructs a new renamer.

For more details, see create().

Member Function Documentation

◆ create()

ShPtr< VarRenamer > retdec::llvmir2hll::UnifiedVarRenamer::create ( ShPtr< VarNameGen varNameGen,
bool  useDebugNames = true 
)
static

Creates a new renamer.

Parameters
[in]varNameGenUsed generator of variable names (not used in this renamer).
[in]useDebugNamesShould we use variable names from debugging information?
Preconditions
  • varNameGen is non-null

◆ getId()

std::string retdec::llvmir2hll::UnifiedVarRenamer::getId ( ) const
overridevirtual

Returns the ID of the renamer.

Implements retdec::llvmir2hll::VarRenamer.

◆ renameFuncLocalVar()

void retdec::llvmir2hll::UnifiedVarRenamer::renameFuncLocalVar ( ShPtr< Variable var,
ShPtr< Function func 
)
overrideprivatevirtual

Renames the given local variable var of function func.

By default, it uses varNameGen to generate a new name for the variable.

Preconditions
  • var and func are non-null

Reimplemented from retdec::llvmir2hll::VarRenamer.

◆ renameFuncParam()

void retdec::llvmir2hll::UnifiedVarRenamer::renameFuncParam ( ShPtr< Variable var,
ShPtr< Function func 
)
overrideprivatevirtual

Renames the given parameter var of function func.

By default, it uses varNameGen to generate a new name for the variable.

Preconditions
  • var and func are non-null

Reimplemented from retdec::llvmir2hll::VarRenamer.

◆ renameGlobalVar()

void retdec::llvmir2hll::UnifiedVarRenamer::renameGlobalVar ( ShPtr< Variable var)
overrideprivatevirtual

Renames the given global variable.

By default, it uses varNameGen to generate a new name for the variable.

Preconditions
  • var is non-null

Reimplemented from retdec::llvmir2hll::VarRenamer.

◆ renameVarsInFunc()

void retdec::llvmir2hll::UnifiedVarRenamer::renameVarsInFunc ( ShPtr< Function func)
overrideprivatevirtual

Renames variables in the given function.

By default, it sets currFunc, calls renameFuncParam() on every function parameter that has not yet been renamed. Then, if func is a definition, it calls visitStmt(func->getBody()) to call renameFuncLocalVar() on every local variable in the function.

Preconditions
  • func is non-null

Reimplemented from retdec::llvmir2hll::VarRenamer.

Member Data Documentation

◆ globalVarNameGen

UPtr<VarNameGen> retdec::llvmir2hll::UnifiedVarRenamer::globalVarNameGen
private

Generator of names for global variables.

◆ localVarNameGen

UPtr<VarNameGen> retdec::llvmir2hll::UnifiedVarRenamer::localVarNameGen
private

Generator of names for local variables.

◆ paramVarNameGen

UPtr<VarNameGen> retdec::llvmir2hll::UnifiedVarRenamer::paramVarNameGen
private

Generator of names for parameters.


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