|
| 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< Function > | getFuncByName (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 | renameGlobalVar (ShPtr< Variable > var) |
| Renames the given global variable. More...
|
|
|
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...
|
|
|
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 |
|
| 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 |
|
| Visitor ()=default |
|
virtual | ~Visitor ()=default |
|
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:
- create a new class that subclasses this class (you can copy and edit an existing renamer)
- override the needed virtual methods (if you want to simply just rename variables differently, it suffices to override renameGlobalVar(), renameFuncParam(), and renameFuncLocalVar())
- create a static create() function and register the renamer at VarRenamerFactory (see the implementation of existing subclasses)
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:
- use assignName() to assign a new to a variable (it not only checks that that the assigned name would not result in a name clash but also update data members, such as
renamedVars
)
- apart from giving them real names, function names should not be changed
Instances of this class have reference object semantics.