7 #ifndef RETDEC_BIN2LLVMIR_ANALYSES_REACHABLE_FUNCS_ANALYSIS_H
8 #define RETDEC_BIN2LLVMIR_ANALYSES_REACHABLE_FUNCS_ANALYSIS_H
12 #include <llvm/ADT/SCCIterator.h>
13 #include <llvm/Analysis/CallGraph.h>
24 std::string
getName()
const {
return "ReachableFuncsAnalysis"; }
27 llvm::Module &
module, llvm::CallGraph &callGraph);
32 const std::set<llvm::Function*> &funcs, llvm::CallGraph &callGraph)
const;
34 llvm::CallGraphNode &reachableFrom)
const;
36 const std::set<llvm::Function*> &funcs, llvm::Module &
module)
const;
Analysis for finding out which defined functions are directly and indirectly reachable from some func...
Definition: reachable_funcs_analysis.h:22
std::string getName() const
Definition: reachable_funcs_analysis.h:24
static std::set< llvm::Function * > getGloballyReachableFuncsFor(llvm::Module &module)
Returns functions that are referenced from global variables, such as virtual function tables.
Definition: reachable_funcs_analysis.cpp:179
std::set< llvm::Function * > getDirectlyReachableDefinedFuncsFor(const std::set< llvm::Function * > &funcs, llvm::CallGraph &callGraph) const
Returns defined functions that are directly reachable from funcs.
Definition: reachable_funcs_analysis.cpp:202
static std::set< llvm::Function * > getReachableDefinedFuncsFor(llvm::Function &func, llvm::Module &module, llvm::CallGraph &callGraph)
Returns defined functions that are reachable directly and indirectly from function func.
Definition: reachable_funcs_analysis.cpp:144
std::set< llvm::Function * > getIndirectlyReachableDefinedFuncsFor(const std::set< llvm::Function * > &funcs, llvm::Module &module) const
Returns indirectly reachable functions from funcs that are in module.
Definition: reachable_funcs_analysis.cpp:267
ShPtr< Module > module
The current module.
Definition: hll_writer.cpp:100
The frontend-end part of the decompiler.
Definition: archive_wrapper.h:19