8 #ifndef RETDEC_LLVMIR2HLL_VAR_RENAMER_VAR_RENAMERS_READABLE_VAR_RENAMER_H
9 #define RETDEC_LLVMIR2HLL_VAR_RENAMER_VAR_RENAMERS_READABLE_VAR_RENAMER_H
58 virtual std::string
getId()
const override;
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
A renamer of variable names which names them to make the code as readable as possible.
Definition: readable_var_renamer.h:53
UPtr< VarNameGen > globalVarNameGen
Generator of names for global variables.
Definition: readable_var_renamer.h:103
void renameVarByChoosingNameFromList(ShPtr< Variable > var, ShPtr< Function > func, const char **names, std::size_t numOfAvailNames)
Renames the given variable in the given function by choosing the first fitting name from names.
Definition: readable_var_renamer.cpp:247
void visitFuncBody(ShPtr< Function > func)
Visits the body of the given function.
Definition: readable_var_renamer.cpp:140
void renameInductionVars(ShPtr< Function > func)
Properly renames induction variables in the given function.
Definition: readable_var_renamer.cpp:178
UPtr< VarNameGen > localVarNameGen
Generator of names for local variables.
Definition: readable_var_renamer.h:106
void renameResultsOfWellKnownFuncs(ShPtr< Function > func)
Renames variables storing the results of calls to well-known functions.
Definition: readable_var_renamer.cpp:211
virtual std::string getId() const override
Returns the ID of the renamer.
Definition: readable_var_renamer.cpp:89
bool renamingResultsOfWellKnownFuncs
Definition: readable_var_renamer.h:120
std::string genNameForFuncParam(ShPtr< Variable > var, ShPtr< Function > func) const
Generates a name for the given parameter of the given function.
Definition: readable_var_renamer.cpp:401
ShPtr< Variable > getVarFromCallArg(ShPtr< Expression > arg) const
Tries to obtain a variable from the given argument of a function call.
Definition: readable_var_renamer.cpp:378
void renameOtherLocalVars(ShPtr< Function > func)
Properly renames other local variables in the given function.
Definition: readable_var_renamer.cpp:229
virtual void renameGlobalVar(ShPtr< Variable > var) override
Renames the given global variable.
Definition: readable_var_renamer.cpp:93
void renameReturnedVars(ShPtr< Function > func)
Properly renames variables returned from the given function.
Definition: readable_var_renamer.cpp:201
ReadableVarRenamer(ShPtr< VarNameGen > varNameGen, bool useDebugNames)
Constructs a new renamer.
Definition: readable_var_renamer.cpp:61
void renameInductionVar(ShPtr< Variable > var, ShPtr< Function > func)
Renames the given induction variable in the given function.
Definition: readable_var_renamer.cpp:192
void visitSubsequentStmts(ShPtr< Statement > stmt)
Visits subsequent statements of stmt (if any).
Definition: readable_var_renamer.cpp:128
virtual void renameFuncLocalVar(ShPtr< Variable > var, ShPtr< Function > func) override
Renames the given local variable var of function func.
Definition: readable_var_renamer.cpp:118
bool renamingInductionVars
Are we renaming induction variables?
Definition: readable_var_renamer.h:113
static ShPtr< VarRenamer > create(ShPtr< VarNameGen > varNameGen, bool useDebugNames=true)
Creates a new renamer.
Definition: readable_var_renamer.cpp:82
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
StringSet indVarsNamesInCurrFunc
Definition: readable_var_renamer.h:110
bool renamingArgsOfWellKnownFuncs
Definition: readable_var_renamer.h:124
void renameMainParams(ShPtr< Function > func)
If the given function is "main", it properly renames its parameters.
Definition: readable_var_renamer.cpp:154
void renameArgsOfWellKnownFuncs(ShPtr< Function > func)
Renames variables passed as arguments to well-known functions.
Definition: readable_var_renamer.cpp:220
bool renamingReturnVars
Are we renaming return variables?
Definition: readable_var_renamer.h:116
ShPtr< Function > getDeclaredFunc(ShPtr< CallExpr > expr) const
Returns the function called in the given expression provided that it is a call to a declared function...
Definition: readable_var_renamer.cpp:359
virtual void renameFuncParam(ShPtr< Variable > var, ShPtr< Function > func) override
Renames the given parameter var of function func.
Definition: readable_var_renamer.cpp:111
virtual void renameVarsInFunc(ShPtr< Function > func) override
Renames variables in the given function.
Definition: readable_var_renamer.cpp:99
void tryRenameVarPassedAsArgToFuncCall(ShPtr< Function > calledFunc, ShPtr< Variable > var, unsigned argPos)
Tries to rename the given argument of the given call to a declared function.
Definition: readable_var_renamer.cpp:342
void tryRenameVarsPassedAsArgsToFuncCall(ShPtr< CallExpr > expr)
Tries to rename variables pass as arguments to the given call.
Definition: readable_var_renamer.cpp:316
void tryRenameVarStoringCallResult(ShPtr< Statement > stmt)
Tries to rename the variable on the left-hand side of the given statement based on the function that ...
Definition: readable_var_renamer.cpp:279
A base class for all variable renamers.
Definition: var_renamer.h:49
ShPtr< VarNameGen > varNameGen
Used generator of variable names.
Definition: var_renamer.h:110
bool useDebugNames
Should we use variable names from debugging information?
Definition: var_renamer.h:113
A library providing API for working with back-end IR.
std::shared_ptr< T > ShPtr
An alias for a shared pointer.
Definition: smart_ptr.h:18
std::unique_ptr< T > UPtr
An alias for a unique pointer.
Definition: smart_ptr.h:26
std::set< std::string > StringSet
Set of strings.
Definition: types.h:51
Definition: archive_wrapper.h:19
Declarations, aliases, macros, etc. for the use of smart pointers.
A base class for all variable renamers.