retdec
unreachable_funcs.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_UNREACHABLE_FUNCS_UNREACHABLE_FUNCS_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_UNREACHABLE_FUNCS_UNREACHABLE_FUNCS_H
9 
10 #include <llvm/Analysis/CallGraph.h>
11 #include <llvm/IR/Module.h>
12 #include <llvm/Pass.h>
13 
15 
16 namespace retdec {
17 namespace bin2llvmir {
18 
30 class UnreachableFuncs: public llvm::ModulePass
31 {
32  public:
33  static char ID;
35  virtual void getAnalysisUsage(llvm::AnalysisUsage& au) const override;
36  virtual bool runOnModule(llvm::Module& m) override;
37  bool runOnModuleCustom(llvm::Module& m, Config* c);
38 
39  private:
40  bool run();
42  std::set<llvm::Function*>& funcsThatCannotBeOptimized);
44  const std::set<llvm::Function*>& funcsThatCannotBeOptimized);
45 
46  private:
47  llvm::Module* module = nullptr;
48  Config* config = nullptr;
49  llvm::CallGraph* callGraph = nullptr;
50  llvm::Function *mainFunc = nullptr;
51  unsigned NumFuncsRemoved = 0;
52 };
53 
54 } // namespace bin2llvmir
55 } // namespace retdec
56 
57 #endif
Config DB provider for bin2llvmirl.
Definition: config.h:24
Removes unreachable functions from main.
Definition: unreachable_funcs.h:31
static char ID
Definition: unreachable_funcs.h:33
llvm::Function * mainFunc
Definition: unreachable_funcs.h:50
llvm::Module * module
Definition: unreachable_funcs.h:47
UnreachableFuncs()
Created a new unreachable functions optimizer.
Definition: unreachable_funcs.cpp:104
bool runOnModuleCustom(llvm::Module &m, Config *c)
Definition: unreachable_funcs.cpp:123
Config * config
Definition: unreachable_funcs.h:48
unsigned NumFuncsRemoved
Definition: unreachable_funcs.h:51
void getFuncsThatCannotBeOptimized(std::set< llvm::Function * > &funcsThatCannotBeOptimized)
Definition: unreachable_funcs.cpp:161
llvm::CallGraph * callGraph
Definition: unreachable_funcs.h:49
virtual void getAnalysisUsage(llvm::AnalysisUsage &au) const override
Definition: unreachable_funcs.cpp:111
virtual bool runOnModule(llvm::Module &m) override
Definition: unreachable_funcs.cpp:116
bool run()
Definition: unreachable_funcs.cpp:130
void removeFuncsThatCanBeOptimized(const std::set< llvm::Function * > &funcsThatCannotBeOptimized)
Definition: unreachable_funcs.cpp:190
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19