retdec
var_def_cfg_traversal.h
Go to the documentation of this file.
1 
8 #ifndef RETDEC_LLVMIR2HLL_GRAPHS_CFG_CFG_TRAVERSALS_VAR_DEF_CFG_TRAVERSAL_H
9 #define RETDEC_LLVMIR2HLL_GRAPHS_CFG_CFG_TRAVERSALS_VAR_DEF_CFG_TRAVERSAL_H
10 
13 
14 namespace retdec {
15 namespace llvmir2hll {
16 
17 class CFG;
18 class Statement;
19 class ValueAnalysis;
20 class VarDefCFGTraversal;
21 class Variable;
22 
30 class VarDefCFGTraversal final: public CFGTraversal {
31 public:
32  static bool isVarDefBetweenStmts(const VarSet &vars,
35 
36 private:
38  const VarSet &vars;
39 
42 
45 
46 private:
49 
50  virtual bool visitStmt(ShPtr<Statement> stmt) override;
51  virtual bool getEndRetVal() const override;
52  virtual bool combineRetVals(bool origRetVal, bool newRetVal) const override;
53 };
54 
55 } // namespace llvmir2hll
56 } // namespace retdec
57 
58 #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 checks whether a variable is defined/modified between two statements.
Definition: var_def_cfg_traversal.h:30
ShPtr< Statement > end
Statement at which we should end the traversal.
Definition: var_def_cfg_traversal.h:41
virtual bool visitStmt(ShPtr< Statement > stmt) override
Visits the given statement stmt.
Definition: var_def_cfg_traversal.cpp:60
virtual bool getEndRetVal() const override
Returns the value that should be returned when an end of the traversal is reached.
Definition: var_def_cfg_traversal.cpp:80
static bool isVarDefBetweenStmts(const VarSet &vars, ShPtr< Statement > start, ShPtr< Statement > end, ShPtr< CFG > cfg, ShPtr< ValueAnalysis > va)
Returns true if a variable from vars is defined between start and end in cfg, false otherwise.
Definition: var_def_cfg_traversal.cpp:48
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: var_def_cfg_traversal.cpp:84
ShPtr< ValueAnalysis > va
The used analysis of values.
Definition: var_def_cfg_traversal.h:44
const VarSet & vars
Variables for whose definition/modification we're looking for.
Definition: var_def_cfg_traversal.h:38
VarDefCFGTraversal(ShPtr< CFG > cfg, const VarSet &vars, ShPtr< Statement > end, ShPtr< ValueAnalysis > va)
Constructs a new traverser.
Definition: var_def_cfg_traversal.cpp:26
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
Definition: archive_wrapper.h:19
Aliases for several useful types.