retdec
lhs_rhs_uses_cfg_traversal.h
Go to the documentation of this file.
1 
9 #ifndef RETDEC_LLVMIR2HLL_GRAPHS_CFG_CFG_TRAVERSALS_LHS_RHS_USES_CFG_TRAVERSAL_H
10 #define RETDEC_LLVMIR2HLL_GRAPHS_CFG_CFG_TRAVERSALS_LHS_RHS_USES_CFG_TRAVERSAL_H
11 
14 
15 namespace retdec {
16 namespace llvmir2hll {
17 
18 class CallInfoObtainer;
19 class Statement;
20 class ValueAnalysis;
21 
33 class LhsRhsUsesCFGTraversal final: public CFGTraversal {
34 public:
37 
38 private:
41 
44 
48 
51 
54 
57 
58 private:
62 
63  virtual bool visitStmt(ShPtr<Statement> stmt) override;
64  virtual bool getEndRetVal() const override;
65  virtual bool combineRetVals(bool origRetVal, bool newRetVal) const override;
66 };
67 
68 } // namespace llvmir2hll
69 } // namespace retdec
70 
71 #endif
A base class of all CFG traversals.
A base class of all CFG traversals.
Definition: cfg_traversal.h:28
ShPtr< CFG > cfg
CFG that is being traversed.
Definition: cfg_traversal.h:74
A CFG traversal that for an assign statement S returns the uses of its left-hand side such that there...
Definition: lhs_rhs_uses_cfg_traversal.h:33
StmtSet uses
Uses of the variable defined in origStmt.
Definition: lhs_rhs_uses_cfg_traversal.h:56
virtual bool visitStmt(ShPtr< Statement > stmt) override
Visits the given statement stmt.
Definition: lhs_rhs_uses_cfg_traversal.cpp:116
virtual bool combineRetVals(bool origRetVal, bool newRetVal) const override
Computes a new return value from the original return value (origRetVal) and the new return value (new...
Definition: lhs_rhs_uses_cfg_traversal.cpp:233
ShPtr< Variable > origLhsVar
The left-hand side of the original statement.
Definition: lhs_rhs_uses_cfg_traversal.h:43
ShPtr< Statement > origStmt
Original statement.
Definition: lhs_rhs_uses_cfg_traversal.h:40
LhsRhsUsesCFGTraversal(ShPtr< Statement > stmt, ShPtr< Variable > origLhsVar, const VarSet &origRhsVars, ShPtr< CFG > cfg, ShPtr< ValueAnalysis > va, ShPtr< CallInfoObtainer > cio)
Constructs a new traverser.
Definition: lhs_rhs_uses_cfg_traversal.cpp:25
const VarSet & origRhsVars
Definition: lhs_rhs_uses_cfg_traversal.h:47
static StmtSet getUses(ShPtr< Statement > stmt, ShPtr< CFG > cfg, ShPtr< ValueAnalysis > va, ShPtr< CallInfoObtainer > cio)
Returns the uses of left-hand side of stmt such that there are no modifications of variables used in ...
Definition: lhs_rhs_uses_cfg_traversal.cpp:55
ShPtr< CallInfoObtainer > cio
Obtainer of information about function calls.
Definition: lhs_rhs_uses_cfg_traversal.h:53
ShPtr< ValueAnalysis > va
Analysis of values.
Definition: lhs_rhs_uses_cfg_traversal.h:50
virtual bool getEndRetVal() const override
Returns the value that should be returned when an end of the traversal is reached.
Definition: lhs_rhs_uses_cfg_traversal.cpp:229
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::set< ShPtr< Variable > > VarSet
Set of variables.
Definition: types.h:57
std::set< ShPtr< Statement > > StmtSet
Set of statements.
Definition: types.h:69
Definition: archive_wrapper.h:19
Aliases for several useful types.