retdec
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
retdec::llvmir2hll::VarRenamer Class Referenceabstract

A base class for all variable renamers. More...

#include <var_renamer.h>

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

Public Member Functions

virtual std::string getId () const =0
 Returns the ID of the renamer. More...
 
void renameVars (ShPtr< Module > module)
 Renames variables in the given module according to the settings set when constructing the renamer. More...
 

Protected Types

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

 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...
 
Renaming Using Debug Names
virtual void renameUsingDebugNames ()
 Renames all variables in the module by using the assigned names from debug information. More...
 
Renaming of Global Variables
virtual void renameGlobalVars ()
 Renames all global variables in the module. More...
 
virtual void renameGlobalVar (ShPtr< Variable > var)
 Renames the given global variable. More...
 
Renaming of Variables in Functions
virtual void renameVarsInFuncs ()
 Renames the variables in all functions. More...
 
virtual void renameVarsInFunc (ShPtr< Function > func)
 Renames variables in the given function. More...
 
virtual void renameFuncParam (ShPtr< Variable > var, ShPtr< Function > func)
 Renames the given parameter var of function func. More...
 
virtual void renameFuncLocalVar (ShPtr< Variable > var, ShPtr< Function > func)
 Renames the given local variable var of function func. More...
 
Visitor Interface
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

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...
 

Private Member Functions

void storeFuncsByName ()
 Populates the funcsByName map. More...
 
std::string ensureNameUniqueness (ShPtr< Variable > var, const std::string &name, ShPtr< Function > func=nullptr)
 Ensures that the given name (possibly in the given function) is unique. More...
 
std::string generateUniqueName (ShPtr< Variable > var, const std::string &name, ShPtr< Function > func=nullptr)
 Generates a new, unique name based on the given name. More...
 
void assignRealNamesToFuncs ()
 Assigns real names to all functions, where available. More...
 
void assignNameToFunc (ShPtr< Function > func, const std::string &newName)
 Assigns name to the given function func. More...
 

Detailed Description

A base class for all variable renamers.

This class should be used as a base class for all variable renamers.

To implement a new renamer:

The following renames are done by default: (1) If a function has assigned a real name, it is used.

(2) If a variable has assigned a name from debug information, it is used.

(3) Other variables are assigned a name by using the passed variable name generator.

Notes:

Instances of this class have reference object semantics.

Member Typedef Documentation

◆ FuncByNameMap

using retdec::llvmir2hll::VarRenamer::FuncByNameMap = std::map<std::string, ShPtr<Function> >
protected

Mapping of a function's name into the function.

◆ FuncStringSetMap

Mapping of a function into a set of strings.

Constructor & Destructor Documentation

◆ VarRenamer()

retdec::llvmir2hll::VarRenamer::VarRenamer ( ShPtr< VarNameGen varNameGen,
bool  useDebugNames = true 
)
protected

Constructs a new variable renamer.

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

Member Function Documentation

◆ assignName()

void retdec::llvmir2hll::VarRenamer::assignName ( ShPtr< Variable var,
const std::string &  name,
ShPtr< Function func = nullptr 
)
protected

Assigns name to the given variable var, possibly in the given function.

Before the name is assigned, ensureNameUniqueness() is called to prevent name clashes.

Data members, like renamedVars, are appropriately set.

Note that this function does not check whether the variable has already been renamed. It simply renames it.

If renaming a global variable or a function, pass the null pointer as the third argument.

Preconditions
  • var is non-null
  • name is non-empty
  • if var is a local variable or a function parameter, func has to be non-null

◆ assignNameFromDebugInfoIfAvail()

void retdec::llvmir2hll::VarRenamer::assignNameFromDebugInfoIfAvail ( ShPtr< Variable var,
ShPtr< Function func = nullptr 
)
protected

Assigns the name from debug information (if available) to the given variable.

Parameters
[in]varVariable to be (possibly) renamed.
[in]funcFunction of the variable (if var is a local variable or a parameter).

Data members, like renamedVars, are appropriately set.

Preconditions
  • var is non-null
  • if var is a local variable or a function parameter, func has to be non-null

◆ assignNameToFunc()

void retdec::llvmir2hll::VarRenamer::assignNameToFunc ( ShPtr< Function func,
const std::string &  name 
)
private

Assigns name to the given function func.

Behaves as assignName().

◆ assignRealNamesToFuncs()

void retdec::llvmir2hll::VarRenamer::assignRealNamesToFuncs ( )
private

Assigns real names to all functions, where available.

We use real names to circumvent the fact that two variables (functions or global variables) cannot have the same name in LLVM IR. Instead of handling this on the LLVM IR level, we handle this here, in back-end.

◆ doVarsRenaming()

void retdec::llvmir2hll::VarRenamer::doVarsRenaming ( )
protectedvirtual

Renames the variables in module.

By default, this function does the following:

  • initializes
  • it assigns real names to all functions (when available)
  • if useDebugNames is true, it renames all variables by using debug information from the module by calling renameUsingDebugNames()
  • it renames all global variables by calling renameGlobalVars()
  • it renames all local variables by calling renameVarsInFuncs()

◆ ensureNameUniqueness()

std::string retdec::llvmir2hll::VarRenamer::ensureNameUniqueness ( ShPtr< Variable var,
const std::string &  name,
ShPtr< Function func = nullptr 
)
private

Ensures that the given name (possibly in the given function) is unique.

Parameters
[in]varVariable which is to be renamed.
[in]nameName to be checked.
[in]funcFunction of the variable (if var is a local variable or a parameter).
Returns
Either name (if name is unique) or a new generated name (if name is not unique).

If renaming a global variable, pass the null pointer as the third argument.

Preconditions
  • var is non-null
  • name is non-empty
  • if var is a local variable or a function parameter, func has to be non-null

◆ generateUniqueName()

std::string retdec::llvmir2hll::VarRenamer::generateUniqueName ( ShPtr< Variable var,
const std::string &  name,
ShPtr< Function func = nullptr 
)
private

Generates a new, unique name based on the given name.

Parameters
[in]varVariable which is to be renamed.
[in]nameName to be checked.
[in]funcFunction of the variable (if var is a local variable or a parameter).
Returns
A new, unique name based on name.

When name clashes with an existing name, the following approach is used to handle the clash. When name ends with a digit, underscores are appended after the name until a name without a clash is found. Otherwise, if name does not end with a digit, a number is appended after it (2, 3, ...).

If renaming a global variable, pass the null pointer as the third argument.

◆ getFuncByName()

ShPtr< Function > retdec::llvmir2hll::VarRenamer::getFuncByName ( const std::string &  name) const
protected

Returns a function with the given name.

If there is no function with the given name, the null pointer is returned.

◆ getId()

virtual std::string retdec::llvmir2hll::VarRenamer::getId ( ) const
pure virtual

◆ hasBeenRenamed()

bool retdec::llvmir2hll::VarRenamer::hasBeenRenamed ( ShPtr< Variable var) const
protected

Returns true if the given variable has already been renamed, false otherwise.

Preconditions
  • var is non-null

◆ isFunc()

bool retdec::llvmir2hll::VarRenamer::isFunc ( ShPtr< Variable var) const
protected

Returns true if the given variable corresponds to a function, false otherwise.

Preconditions
  • var is non-null

◆ isGlobalVar()

bool retdec::llvmir2hll::VarRenamer::isGlobalVar ( ShPtr< Variable var) const
protected

Returns true if the given variable is global, false otherwise.

Preconditions
  • var is non-null

◆ nameExists()

bool retdec::llvmir2hll::VarRenamer::nameExists ( const std::string &  name,
ShPtr< Function func = nullptr 
) const
protected

Returns true if the given name has already been assigned, false otherwise.

Parameters
[in]nameName that is being checked.
[in]funcIf non-null, it does the check in terms of this function.

More precisely, it returns true if naming a variable by name would introduce a name clash.

◆ renameFuncLocalVar()

void retdec::llvmir2hll::VarRenamer::renameFuncLocalVar ( ShPtr< Variable var,
ShPtr< Function func 
)
protectedvirtual

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 in retdec::llvmir2hll::UnifiedVarRenamer, retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::HungarianVarRenamer, and retdec::llvmir2hll::AddressVarRenamer.

◆ renameFuncParam()

void retdec::llvmir2hll::VarRenamer::renameFuncParam ( ShPtr< Variable var,
ShPtr< Function func 
)
protectedvirtual

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 in retdec::llvmir2hll::UnifiedVarRenamer, retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::HungarianVarRenamer, and retdec::llvmir2hll::AddressVarRenamer.

◆ renameGlobalVar()

void retdec::llvmir2hll::VarRenamer::renameGlobalVar ( ShPtr< Variable var)
protectedvirtual

Renames the given global variable.

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

Preconditions
  • var is non-null

Reimplemented in retdec::llvmir2hll::UnifiedVarRenamer, retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::HungarianVarRenamer, and retdec::llvmir2hll::AddressVarRenamer.

◆ renameGlobalVars()

void retdec::llvmir2hll::VarRenamer::renameGlobalVars ( )
protectedvirtual

Renames all global variables in the module.

By default, it calls renameGlobalVar() on every global variable in the module that does has not yet been renamed. Before that, it sorts them by their original name to make the renaming deterministic.

◆ renameUsingDebugNames()

void retdec::llvmir2hll::VarRenamer::renameUsingDebugNames ( )
protectedvirtual

Renames all variables in the module by using the assigned names from debug information.

◆ renameVars()

void retdec::llvmir2hll::VarRenamer::renameVars ( ShPtr< Module module)

Renames variables in the given module according to the settings set when constructing the renamer.

Parameters
[in,out]moduleModule whose variables are renamed.

Before that, however, it restarts the variable name generator passed when creating the renamer.

Function names are not renamed.

◆ renameVarsInFunc()

void retdec::llvmir2hll::VarRenamer::renameVarsInFunc ( ShPtr< Function func)
protectedvirtual

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 in retdec::llvmir2hll::UnifiedVarRenamer, retdec::llvmir2hll::ReadableVarRenamer, retdec::llvmir2hll::HungarianVarRenamer, and retdec::llvmir2hll::AddressVarRenamer.

◆ renameVarsInFuncs()

void retdec::llvmir2hll::VarRenamer::renameVarsInFuncs ( )
protectedvirtual

Renames the variables in all functions.

By default, it calls renameVarsInFunc() on every function in the module, including function declarations.

◆ storeFuncsByName()

void retdec::llvmir2hll::VarRenamer::storeFuncsByName ( )
private

Populates the funcsByName map.

◆ visit() [1/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [2/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [3/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [4/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [5/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [6/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [7/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [8/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [9/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [10/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [11/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [12/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [13/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [14/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [15/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [16/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [17/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [18/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [19/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [20/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [21/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [22/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [23/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [24/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [25/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [26/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [27/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [28/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [29/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [30/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [31/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [32/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [33/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [34/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [35/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [36/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [37/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [38/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [39/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [40/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [41/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [42/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [43/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [44/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [45/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [46/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [47/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [48/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [49/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [50/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [51/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [52/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [53/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [54/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [55/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [56/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [57/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [58/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [59/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [60/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [61/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [62/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [63/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [64/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [65/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [66/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [67/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [68/70]

void retdec::llvmir2hll::VarRenamer::visit ( ShPtr< Variable var)
overrideprotectedvirtual

◆ visit() [69/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

◆ visit() [70/70]

void retdec::llvmir2hll::OrderedAllVisitor::visit
overrideprotected

Member Data Documentation

◆ currFunc

ShPtr<Function> retdec::llvmir2hll::VarRenamer::currFunc
protected

The currently visited function.

◆ funcsByName

FuncByNameMap retdec::llvmir2hll::VarRenamer::funcsByName
protected

Mapping of function names into functions. This is here to speedup the renaming (module->getFuncByName() is too slow, I have profiled it).

◆ globalVars

VarSet retdec::llvmir2hll::VarRenamer::globalVars
protected

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

◆ globalVarsNames

StringSet retdec::llvmir2hll::VarRenamer::globalVarsNames
protected

Assigned names of global variables.

◆ localVarsNames

FuncStringSetMap retdec::llvmir2hll::VarRenamer::localVarsNames
protected

Assigned names to local variables of all functions in the module, including function parameters.

To get the set of names assigned to the current function func, use localVarsNames[func].

◆ module

ShPtr<Module> retdec::llvmir2hll::VarRenamer::module
protected

Module in which the variables are being renamed.

◆ renamedVars

VarSet retdec::llvmir2hll::VarRenamer::renamedVars
protected

Variables which have already been renamed.

◆ useDebugNames

bool retdec::llvmir2hll::VarRenamer::useDebugNames
protected

Should we use variable names from debugging information?

◆ varNameGen

ShPtr<VarNameGen> retdec::llvmir2hll::VarRenamer::varNameGen
protected

Used generator of variable names.


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