Static Value-Flow Analysis
|
#include <ICFGBuilder.h>
Public Types | |
typedef std::vector< const Instruction * > | InstVec |
typedef Set< const Instruction * > | BBSet |
typedef Map< const Instruction *, CallICFGNode * > | CSToCallNodeMapTy |
typedef Map< const Instruction *, RetICFGNode * > | CSToRetNodeMapTy |
typedef Map< const Instruction *, IntraICFGNode * > | InstToBlockNodeMapTy |
typedef Map< const Function *, FunEntryICFGNode * > | FunToFunEntryNodeMapTy |
typedef Map< const Function *, FunExitICFGNode * > | FunToFunExitNodeMapTy |
typedef FIFOWorkList< const Instruction * > | WorkList |
Public Member Functions | |
ICFGBuilder () | |
ICFG * | build () |
Private Member Functions | |
LLVMModuleSet * | llvmModuleSet () |
CSToRetNodeMapTy & | csToRetNodeMap () |
CSToCallNodeMapTy & | csToCallNodeMap () |
InstToBlockNodeMapTy & | instToBlockNodeMap () |
FunToFunEntryNodeMapTy & | funToFunEntryNodeMap () |
FunToFunExitNodeMapTy & | funToFunExitNodeMap () |
Definition at line 41 of file ICFGBuilder.h.
typedef Set<const Instruction*> SVF::ICFGBuilder::BBSet |
Definition at line 47 of file ICFGBuilder.h.
typedef Map<const Instruction*, CallICFGNode *> SVF::ICFGBuilder::CSToCallNodeMapTy |
Definition at line 48 of file ICFGBuilder.h.
typedef Map<const Instruction*, RetICFGNode *> SVF::ICFGBuilder::CSToRetNodeMapTy |
Definition at line 49 of file ICFGBuilder.h.
typedef Map<const Function*, FunEntryICFGNode *> SVF::ICFGBuilder::FunToFunEntryNodeMapTy |
Definition at line 51 of file ICFGBuilder.h.
typedef Map<const Function*, FunExitICFGNode *> SVF::ICFGBuilder::FunToFunExitNodeMapTy |
Definition at line 52 of file ICFGBuilder.h.
typedef Map<const Instruction*, IntraICFGNode *> SVF::ICFGBuilder::InstToBlockNodeMapTy |
Definition at line 50 of file ICFGBuilder.h.
typedef std::vector<const Instruction*> SVF::ICFGBuilder::InstVec |
Definition at line 46 of file ICFGBuilder.h.
typedef FIFOWorkList<const Instruction*> SVF::ICFGBuilder::WorkList |
Definition at line 59 of file ICFGBuilder.h.
|
inline |
Definition at line 61 of file ICFGBuilder.h.
|
inlineprivate |
Add/Get a basic block ICFGNode.
Definition at line 331 of file ICFGBuilder.cpp.
|
private |
Definition at line 355 of file ICFGBuilder.cpp.
|
inlineprivate |
Definition at line 361 of file ICFGBuilder.cpp.
|
inlineprivate |
Definition at line 175 of file ICFGBuilder.h.
|
private |
Create edges between ICFG nodes across functions.
Create edges between ICFG nodes across functions
direct call
if this is an external function (no function body)
otherwise connect interprocedural edges
indirect call (don't know callee)
Definition at line 278 of file ICFGBuilder.cpp.
|
private |
Add/Get an inter block ICFGNode.
(1) Add and get CallBlockICFGNode (2) Handle call instruction by creating interprocedural edges
Definition at line 237 of file ICFGBuilder.cpp.
|
private |
Add and get IntraBlock ICFGNode.
Definition at line 344 of file ICFGBuilder.cpp.
ICFG * ICFGBuilder::build | ( | ) |
Create ICFG nodes and edges
Definition at line 43 of file ICFGBuilder.cpp.
|
private |
Definition at line 84 of file ICFGBuilder.cpp.
|
private |
Definition at line 312 of file ICFGBuilder.cpp.
|
inlineprivate |
Definition at line 79 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 74 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 89 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 94 of file ICFGBuilder.h.
|
inlineprivate |
get a call node
Definition at line 131 of file ICFGBuilder.h.
|
inlineprivate |
get a function entry node
Definition at line 147 of file ICFGBuilder.h.
|
inlineprivate |
get a function exit node
Definition at line 152 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 157 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 120 of file ICFGBuilder.h.
|
inlineprivate |
get a intra node
Definition at line 141 of file ICFGBuilder.h.
|
inlineprivate |
get a return node
Definition at line 136 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 125 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 84 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 69 of file ICFGBuilder.h.
|
private |
function body
function body
branch condition value
default case is set to -1;
Definition at line 146 of file ICFGBuilder.cpp.
Create edges between ICFG nodes within a function
function entry
Definition at line 100 of file ICFGBuilder.cpp.
|
private |
function exit e.g., exit(0). In LLVM, it usually manifests as "unreachable" instruction If a function has multiple exit(0), we will only have one "unreachle" instruction after the UnifyFunctionExitNodes pass.
Definition at line 214 of file ICFGBuilder.cpp.
|
private |
bbs with no predecessors
Definition at line 126 of file ICFGBuilder.cpp.
|
private |
Definition at line 56 of file ICFGBuilder.h.
|
private |
Definition at line 182 of file ICFGBuilder.h.