retdec
phi_remover.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_PHI_REMOVER_PHI_REMOVER_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_PHI_REMOVER_PHI_REMOVER_H
9 
10 #include <llvm/IR/Module.h>
11 #include <llvm/Pass.h>
12 
14 
15 namespace retdec {
16 namespace bin2llvmir {
17 
18 class PhiRemover : public llvm::ModulePass
19 {
20  public:
21  static char ID;
22  PhiRemover();
23  virtual bool runOnModule(llvm::Module& M) override;
24  bool runOnModuleCustom(llvm::Module& M, Config* c);
25 
26  private:
27  bool run();
28  bool demotePhiToStack(
29  llvm::PHINode* phi,
30  llvm::MDNode* faddr);
31 
32  private:
33  llvm::Module* _module = nullptr;
34  Config* _config = nullptr;
35 };
36 
37 } // namespace bin2llvmir
38 } // namespace retdec
39 
40 #endif
Config DB provider for bin2llvmirl.
Definition: config.h:24
Definition: phi_remover.h:19
llvm::Module * _module
Definition: phi_remover.h:33
bool demotePhiToStack(llvm::PHINode *phi, llvm::MDNode *faddr)
Definition: phi_remover.cpp:121
bool runOnModuleCustom(llvm::Module &M, Config *c)
Definition: phi_remover.cpp:40
Config * _config
Definition: phi_remover.h:34
PhiRemover()
Definition: phi_remover.cpp:27
bool run()
Definition: phi_remover.cpp:75
static char ID
Definition: phi_remover.h:21
virtual bool runOnModule(llvm::Module &M) override
Definition: phi_remover.cpp:33
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19