|
template<typename ToOptimizeExpr > |
void | tryOptimizeWhenOneOfOperandsEqWithLhsOfAssignStmt (ShPtr< ToOptimizeExpr > expr) |
| Tries to optimize expr to compound operator when one of operands is equal with left-hand side of AssignStmt. More...
|
|
template<typename ToOptimizeExpr > |
void | tryOptimizeWhenLeftOperandEqWithLhsOfAssignStmt (ShPtr< ToOptimizeExpr > expr) |
| Tries to optimize expr to compound operator when left operand is equal with left-hand side of AssignStmt. More...
|
|
ShPtr< Expression > | getNextOpIfSecondOneIsEqWithLhsOfAssign (ShPtr< BinaryOpExpr > expr) |
| Checks if one of the operands is equal with the saved left-hand side of AssignStmt. More...
|
|
|
virtual void | visit (ShPtr< AddOpExpr > expr) override |
|
virtual void | visit (ShPtr< SubOpExpr > expr) override |
|
virtual void | visit (ShPtr< MulOpExpr > expr) override |
|
virtual void | visit (ShPtr< ModOpExpr > expr) override |
|
virtual void | visit (ShPtr< DivOpExpr > expr) override |
|
virtual void | visit (ShPtr< BitAndOpExpr > expr) override |
|
virtual void | visit (ShPtr< BitOrOpExpr > expr) override |
|
virtual void | visit (ShPtr< BitXorOpExpr > expr) override |
|
virtual void | visit (ShPtr< BitShlOpExpr > expr) override |
|
virtual void | visit (ShPtr< BitShrOpExpr > expr) 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 |
|
|
virtual void | optimizeToCompoundOp (ShPtr< AddOpExpr > expr, ShPtr< Expression > operand) |
| Sets the resulting operator to the default one which is the same like nothing is to be optimized. More...
|
|
virtual void | optimizeToCompoundOp (ShPtr< SubOpExpr > expr, ShPtr< Expression > operand) |
|
virtual void | optimizeToCompoundOp (ShPtr< MulOpExpr > expr, ShPtr< Expression > operand) |
|
virtual void | optimizeToCompoundOp (ShPtr< ModOpExpr > expr, ShPtr< Expression > operand) |
|
virtual void | optimizeToCompoundOp (ShPtr< DivOpExpr > expr, ShPtr< Expression > operand) |
|
virtual void | optimizeToCompoundOp (ShPtr< BitAndOpExpr > expr, ShPtr< Expression > operand) |
|
virtual void | optimizeToCompoundOp (ShPtr< BitOrOpExpr > expr, ShPtr< Expression > operand) |
|
virtual void | optimizeToCompoundOp (ShPtr< BitXorOpExpr > expr, ShPtr< Expression > operand) |
|
virtual void | optimizeToCompoundOp (ShPtr< BitShlOpExpr > expr, ShPtr< Expression > operand) |
|
virtual void | optimizeToCompoundOp (ShPtr< BitShrOpExpr > expr, ShPtr< Expression > operand) |
|
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< 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< CallExpr > expr) override |
|
virtual void | visit (ShPtr< CommaOpExpr > expr) override |
|
virtual void | visit (ShPtr< DerefOpExpr > 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< 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< 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 | ~Visitor ()=default |
|
| Visitor ()=default |
|
| NonCopyable (const NonCopyable &)=delete |
|
NonCopyable & | operator= (const NonCopyable &)=delete |
|
| NonCopyable ()=default |
|
| ~NonCopyable ()=default |
|
A base class for compound operator managers.
Every compound operator manager should subclass this class and override private methods optimizeToCompoundOp()
.
For how to use this class
- See also
- tryOptimizeToCompoundOp
Instances of this class have reference object semantics.