7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_PARAM_RETURN_PARAM_RETURN_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_PARAM_RETURN_PARAM_RETURN_H
13 #include <llvm/IR/Function.h>
14 #include <llvm/IR/Instructions.h>
15 #include <llvm/IR/Module.h>
16 #include <llvm/Pass.h>
75 llvm::CallInst*
getWrapper(llvm::Function* fnc)
const;
98 const std::vector<CallEntry>& calls)
const;
Config DB provider for bin2llvmirl.
Demangler provider for bin2llvmirl.
Definition: data_entries.h:110
std::unique_ptr< Collector > Ptr
Definition: collector.h:26
Definition: data_entries.h:150
Definition: demangler.h:34
std::pair< llvm::Function *, std::shared_ptr< retdec::ctypes::Function > > FunctionPair
Definition: demangler.h:38
Definition: fileimage.h:27
Definition: param_return.h:32
std::map< llvm::Value *, DataFlowEntry > _fnc2calls
Definition: param_return.h:109
void modifyWithDemangledData(DataFlowEntry &de, Demangler::FunctionPair &funcPair) const
Definition: param_return.cpp:738
bool runOnModuleCustom(llvm::Module &m, Config *c, Abi *abi, Demangler *demangler, FileImage *img=nullptr, DebugFormat *dbgf=nullptr, Lti *lti=nullptr)
Definition: param_return.cpp:67
void collectCallSpecificTypes(CallEntry *ce) const
ReachingDefinitionsAnalysis _RDA
Definition: param_return.h:110
llvm::Module * _module
Definition: param_return.h:101
void collectAllCalls()
Definition: param_return.cpp:114
void dumpInfo() const
Definition: param_return.cpp:561
void filterCalls()
Definition: param_return.cpp:682
void analyzeWithDemangler(DataFlowEntry &de) const
Definition: param_return.cpp:725
void modifyType(DataFlowEntry &de) const
Definition: param_return.cpp:831
void addDataFromCall(DataFlowEntry *dataflow, llvm::CallInst *call) const
Definition: param_return.cpp:538
Collector::Ptr _collector
Definition: param_return.h:111
void collectExtraData(DataFlowEntry *de) const
Definition: param_return.cpp:185
DebugFormat * _dbgf
Definition: param_return.h:105
void applyToIr()
Definition: param_return.cpp:924
llvm::Type * extractType(llvm::Value *from) const
Definition: param_return.cpp:806
std::map< llvm::CallInst *, std::vector< llvm::Value * > > fetchLoadsOfCalls(const std::vector< CallEntry > &calls) const
Definition: param_return.cpp:1139
DataFlowEntry createDataFlowEntry(llvm::Value *calledValue) const
Definition: param_return.cpp:159
common::CallingConventionID toCallConv(const std::string &cc) const
Definition: param_return.cpp:171
llvm::CallInst * getWrapper(llvm::Function *fnc) const
Definition: param_return.cpp:428
Abi * _abi
Definition: param_return.h:103
bool run()
Definition: param_return.cpp:88
static char ID
Definition: param_return.h:34
Lti * _lti
Definition: param_return.h:106
Demangler * _demangler
Definition: param_return.h:107
Config * _config
Definition: param_return.h:102
virtual bool runOnModule(llvm::Module &m) override
Definition: param_return.cpp:53
void connectWrappers(const DataFlowEntry &de)
Definition: param_return.cpp:1024
FileImage * _image
Definition: param_return.h:104
ParamReturn()
Definition: param_return.cpp:47
Definition: reaching_definitions.h:121
Definition: data_entries.h:21
eCC
Definition: calling_convention.h:24
Collects possible arguments and returns of functions.
Data entries for parameter analysis.
File image provider for bin2llvmirl.
Library type information provider for bin2llvmirl.
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19
Reaching definitions analysis (RDA) builds UD and DU chains.