retdec
dead_local_assign_optimizer.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_LLVMIR2HLL_OPTIMIZER_OPTIMIZERS_DEAD_LOCAL_ASSIGN_OPTIMIZER_H
8 #define RETDEC_LLVMIR2HLL_OPTIMIZER_OPTIMIZERS_DEAD_LOCAL_ASSIGN_OPTIMIZER_H
9 
12 
13 namespace retdec {
14 namespace llvmir2hll {
15 
16 class Module;
17 class ValueAnalysis;
18 class VarUses;
19 class VarUsesVisitor;
20 
43 public:
45 
46  virtual std::string getId() const override { return "DeadLocalAssign"; }
47 
48 private:
49  virtual void doOptimization() override;
50  virtual void runOnFunction(ShPtr<Function> func) override;
51 
53  bool tryToOptimize(ShPtr<Function> func);
54 
59 
60 private:
63 
66 };
67 
68 } // namespace llvmir2hll
69 } // namespace retdec
70 
71 #endif
Elimination of dead assignments to local variables.
Definition: dead_local_assign_optimizer.h:42
virtual void doOptimization() override
Performs the optimization on all functions in the module.
Definition: dead_local_assign_optimizer.cpp:41
bool tryToOptimize(ShPtr< Function > func)
Tries to optimize the given function.
Definition: dead_local_assign_optimizer.cpp:104
virtual void runOnFunction(ShPtr< Function > func) override
Performs all optimizations on the given function.
Definition: dead_local_assign_optimizer.cpp:52
virtual std::string getId() const override
Returns the ID of the optimizer.
Definition: dead_local_assign_optimizer.h:46
bool canBeOptimized(ShPtr< Variable > var, ShPtr< VarUses > varUses)
Returns true if the given variable with the given uses can be optimized, false otherwise.
Definition: dead_local_assign_optimizer.cpp:64
DeadLocalAssignOptimizer(ShPtr< Module > module, ShPtr< ValueAnalysis > va)
Constructs a new optimizer.
Definition: dead_local_assign_optimizer.cpp:34
ShPtr< VarUsesVisitor > vuv
Visitor for obtaining uses of variables.
Definition: dead_local_assign_optimizer.h:65
ShPtr< ValueAnalysis > va
Analysis of used values.
Definition: dead_local_assign_optimizer.h:62
A base class of all function optimizers.
Definition: func_optimizer.h:44
ShPtr< Module > module
The module that is being optimized.
Definition: optimizer.h:79
virtual void visit(ShPtr< GlobalVarDef > varDef) override
Definition: ordered_all_visitor.cpp:95
A base class of all function optimizers.
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
Declarations, aliases, macros, etc. for the use of smart pointers.