retdec
register_localization.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_REGISTER_LOCALIZATION_REGISTER_LOCALIZATION_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_REGISTER_LOCALIZATION_REGISTER_LOCALIZATION_H
9 
10 #include <llvm/IR/Function.h>
11 #include <llvm/IR/Module.h>
12 #include <llvm/Pass.h>
13 
16 
17 namespace retdec {
18 namespace bin2llvmir {
19 
20 class RegisterLocalization : public llvm::ModulePass
21 {
22  public:
23  static char ID;
25  virtual bool runOnModule(llvm::Module& M) override;
26  bool runOnModuleCustom(llvm::Module& M, Abi* a, Config* c);
27 
28  private:
29  bool run();
30  llvm::AllocaInst* getLocalized(
31  llvm::GlobalVariable* reg,
32  llvm::Function* fnc,
33  std::map<llvm::Function*, llvm::AllocaInst*>& fnc2alloca);
34  bool localize(
35  llvm::GlobalVariable* reg,
36  std::map<llvm::Function*, llvm::AllocaInst*>& fnc2alloca,
37  llvm::Instruction* insn);
38 
39  private:
40  llvm::Module* _module = nullptr;
41  Abi* _abi = nullptr;
42  Config* _config = nullptr;
43 };
44 
45 } // namespace bin2llvmir
46 } // namespace retdec
47 
48 #endif
ABI information.
Config DB provider for bin2llvmirl.
Definition: abi.h:27
Definition: config.h:24
Definition: register_localization.h:21
Abi * _abi
Definition: register_localization.h:41
bool run()
Definition: register_localization.cpp:60
Config * _config
Definition: register_localization.h:42
bool runOnModuleCustom(llvm::Module &M, Abi *a, Config *c)
Definition: register_localization.cpp:48
static char ID
Definition: register_localization.h:23
bool localize(llvm::GlobalVariable *reg, std::map< llvm::Function *, llvm::AllocaInst * > &fnc2alloca, llvm::Instruction *insn)
Definition: register_localization.cpp:137
llvm::AllocaInst * getLocalized(llvm::GlobalVariable *reg, llvm::Function *fnc, std::map< llvm::Function *, llvm::AllocaInst * > &fnc2alloca)
Definition: register_localization.cpp:109
RegisterLocalization()
Definition: register_localization.cpp:34
virtual bool runOnModule(llvm::Module &M) override
Definition: register_localization.cpp:40
llvm::Module * _module
Definition: register_localization.h:40
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19