7 #ifndef RETDEC_BIN2LLVMIR_OPTIMIZATIONS_PARAM_RETURN_COLLECTOR_COLLECTOR_H
8 #define RETDEC_BIN2LLVMIR_OPTIMIZATIONS_PARAM_RETURN_COLLECTOR_COLLECTOR_H
13 #include <llvm/IR/Instructions.h>
14 #include <llvm/IR/Module.h>
26 typedef std::unique_ptr<Collector>
Ptr;
51 std::vector<llvm::StoreInst*>& stores)
const;
55 std::vector<llvm::LoadInst*>& loads)
const;
59 std::vector<llvm::LoadInst*>& loads,
60 std::set<llvm::Value*>& excluded)
const;
64 std::vector<llvm::StoreInst*>& stores)
const;
68 std::vector<llvm::StoreInst*>& stores,
69 std::map<llvm::BasicBlock*,
70 std::set<llvm::Value*>>& seen)
const;
74 std::set<llvm::Value*>& values,
75 std::vector<llvm::StoreInst*>& stores)
const;
80 bool storesString(llvm::StoreInst* si, std::string& str)
const;
81 llvm::Value*
getRoot(llvm::Value* i)
const;
82 llvm::Value*
_getRoot(llvm::Value* i, std::set<llvm::Value*>& seen)
const;
Definition: data_entries.h:110
Definition: collector.h:91
static Collector::Ptr createCollector(const Abi *abi, llvm::Module *m, const ReachingDefinitionsAnalysis *rda)
Definition: collector.cpp:606
Definition: collector.h:24
void collectStoresBeforeInstruction(llvm::Instruction *i, std::vector< llvm::StoreInst * > &stores) const
Definition: collector.cpp:133
virtual ~Collector()=default
virtual void collectCallArgs(CallEntry *ce) const
Definition: collector.cpp:30
virtual void collectCallSpecificTypes(CallEntry *ce) const
Definition: collector.cpp:466
bool storesString(llvm::StoreInst *si, std::string &str) const
Definition: collector.cpp:516
void collectStoresInSinglePredecessors(llvm::Instruction *i, std::vector< llvm::StoreInst * > &stores) const
Definition: collector.cpp:177
const ReachingDefinitionsAnalysis * _rda
Definition: collector.h:87
bool collectStoresInInstructionBlock(llvm::Instruction *i, std::set< llvm::Value * > &values, std::vector< llvm::StoreInst * > &stores) const
Definition: collector.cpp:304
bool extractFormatString(CallEntry *ce) const
Definition: collector.cpp:490
void collectRetStores(ReturnEntry *re) const
Definition: collector.cpp:107
llvm::Module * _module
Definition: collector.h:86
virtual void collectDefArgs(DataFlowEntry *de) const
Definition: collector.cpp:52
std::unique_ptr< Collector > Ptr
Definition: collector.h:26
void collectStoresRecursively(llvm::Instruction *i, std::vector< llvm::StoreInst * > &stores, std::map< llvm::BasicBlock *, std::set< llvm::Value * >> &seen) const
Definition: collector.cpp:242
virtual void collectCallRets(CallEntry *ce) const
Definition: collector.cpp:41
void collectLoadsAfterInstruction(llvm::Instruction *i, std::vector< llvm::LoadInst * > &loads) const
Definition: collector.cpp:370
Collector(const Abi *abi, llvm::Module *m, const ReachingDefinitionsAnalysis *rda)
Definition: collector.cpp:20
llvm::Value * _getRoot(llvm::Value *i, std::set< llvm::Value * > &seen) const
Definition: collector.cpp:553
llvm::Value * getRoot(llvm::Value *i) const
Definition: collector.cpp:547
virtual void collectDefRets(DataFlowEntry *de) const
Definition: collector.cpp:88
const Abi * _abi
Definition: collector.h:85
Definition: data_entries.h:150
Definition: reaching_definitions.h:121
Definition: data_entries.h:21
Data entries for parameter analysis.
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19
Reaching definitions analysis (RDA) builds UD and DU chains.