retdec
var_use_cfg_traversal.h
Go to the documentation of this file.
1 
8 #ifndef RETDEC_LLVMIR2HLL_GRAPHS_CFG_CFG_TRAVERSALS_VAR_USE_CFG_TRAVERSAL_H
9 #define RETDEC_LLVMIR2HLL_GRAPHS_CFG_CFG_TRAVERSALS_VAR_USE_CFG_TRAVERSAL_H
10 
12 
13 namespace retdec {
14 namespace llvmir2hll {
15 
16 class ValueAnalysis;
17 class Variable;
18 
26 class VarUseCFGTraversal final: public CFGTraversal {
27 public:
30 
31 private:
34 
37 
38 private:
41 
42  virtual bool visitStmt(ShPtr<Statement> stmt) override;
43  virtual bool getEndRetVal() const override;
44  virtual bool combineRetVals(bool origRetVal, bool newRetVal) const override;
45 };
46 
47 } // namespace llvmir2hll
48 } // namespace retdec
49 
50 #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 prior to every read access to it i...
Definition: var_use_cfg_traversal.h:26
ShPtr< ValueAnalysis > va
Analysis of values.
Definition: var_use_cfg_traversal.h:36
virtual bool getEndRetVal() const override
Returns the value that should be returned when an end of the traversal is reached.
Definition: var_use_cfg_traversal.cpp:85
VarUseCFGTraversal(ShPtr< Variable > var, ShPtr< CFG > cfg, ShPtr< ValueAnalysis > va)
Constructs a new traverser.
Definition: var_use_cfg_traversal.cpp:21
static bool isDefinedPriorToEveryAccess(ShPtr< Variable > var, ShPtr< CFG > cfg, ShPtr< ValueAnalysis > va)
Returns true if the given variable var is defined/modified prior to every read access to it in cfg.
Definition: var_use_cfg_traversal.cpp:39
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_use_cfg_traversal.cpp:89
virtual bool visitStmt(ShPtr< Statement > stmt) override
Visits the given statement stmt.
Definition: var_use_cfg_traversal.cpp:57
ShPtr< Variable > var
Variable whose definition/modification is looked for.
Definition: var_use_cfg_traversal.h:33
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
Definition: archive_wrapper.h:19