retdec
written_into_globals_visitor.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_LLVMIR2HLL_ANALYSIS_WRITTEN_INTO_GLOBALS_VISITOR_H
8 #define RETDEC_LLVMIR2HLL_ANALYSIS_WRITTEN_INTO_GLOBALS_VISITOR_H
9 
14 
15 namespace retdec {
16 namespace llvmir2hll {
17 
18 class Module;
19 class Function;
20 
29 public:
32 
33 private:
35 
39  virtual void visit(ShPtr<Variable> var) override;
40  virtual void visit(ShPtr<ArrayIndexOpExpr> expr) override;
41  virtual void visit(ShPtr<StructIndexOpExpr> expr) override;
42  virtual void visit(ShPtr<DerefOpExpr> expr) override;
43  virtual void visit(ShPtr<AssignStmt> stmt) override;
44  virtual void visit(ShPtr<VarDefStmt> stmt) override;
45  virtual void visit(ShPtr<ForLoopStmt> stmt) override;
47 
48 private:
51 
56 
59 
61  bool writing;
62 };
63 
64 } // namespace llvmir2hll
65 } // namespace retdec
66 
67 #endif
A visitor that visits everything in an ordered way.
Definition: ordered_all_visitor.h:44
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
A visitor for obtaining written-into global variables in functions.
Definition: written_into_globals_visitor.h:28
static VarSet getWrittenIntoGlobals(ShPtr< Function > func, ShPtr< Module > module)
Definition: written_into_globals_visitor.cpp:46
VarSet globalVars
Definition: written_into_globals_visitor.h:55
WrittenIntoGlobalsVisitor(ShPtr< Module > module)
Constructs a new visitor.
Definition: written_into_globals_visitor.cpp:33
VarSet writtenIntoGlobals
Written-into global variables for the current function.
Definition: written_into_globals_visitor.h:58
ShPtr< Module > module
The current module.
Definition: written_into_globals_visitor.h:50
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
bool writing
Are we writing into a variable?
Definition: written_into_globals_visitor.h:61
A mixin to make classes non-copyable.
Definition: non_copyable.h:27
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
A mixin to make classes non-copyable.
A visitor that visits everything in an ordered way.
Declarations, aliases, macros, etc. for the use of smart pointers.
Aliases for several useful types.