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 ()=default | |
ICFG * | build () |
Private Member Functions | |
LLVMModuleSet * | llvmModuleSet () |
Definition at line 41 of file ICFGBuilder.h.
Definition at line 47 of file ICFGBuilder.h.
Definition at line 48 of file ICFGBuilder.h.
Definition at line 49 of file ICFGBuilder.h.
Definition at line 51 of file ICFGBuilder.h.
Definition at line 52 of file ICFGBuilder.h.
Definition at line 50 of file ICFGBuilder.h.
typedef std::vector<const Instruction*> SVF::ICFGBuilder::InstVec |
Definition at line 46 of file ICFGBuilder.h.
Definition at line 59 of file ICFGBuilder.h.
|
default |
|
inlineprivate |
Add/Get a basic block ICFGNode.
Definition at line 330 of file ICFGBuilder.cpp.
|
private |
Definition at line 353 of file ICFGBuilder.cpp.
|
inlineprivate |
Definition at line 359 of file ICFGBuilder.cpp.
|
inlineprivate |
Definition at line 148 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 277 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 239 of file ICFGBuilder.cpp.
|
private |
Add and get IntraBlock ICFGNode.
Definition at line 343 of file ICFGBuilder.cpp.
ICFG * ICFGBuilder::build | ( | ) |
Create ICFG nodes and edges
Definition at line 45 of file ICFGBuilder.cpp.
Definition at line 87 of file ICFGBuilder.cpp.
|
private |
Definition at line 311 of file ICFGBuilder.cpp.
|
inlineprivate |
get a call node
Definition at line 104 of file ICFGBuilder.h.
|
inlineprivate |
get a function entry node
Definition at line 120 of file ICFGBuilder.h.
|
inlineprivate |
get a function exit node
Definition at line 125 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 130 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 93 of file ICFGBuilder.h.
|
inlineprivate |
get a intra node
Definition at line 114 of file ICFGBuilder.h.
|
inlineprivate |
get a return node
Definition at line 109 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 98 of file ICFGBuilder.h.
|
inlineprivate |
Definition at line 67 of file ICFGBuilder.h.
|
private |
function body
function body
branch condition value
default case is set to -1;
Definition at line 148 of file ICFGBuilder.cpp.
Create edges between ICFG nodes within a function
function entry
Definition at line 103 of file ICFGBuilder.cpp.
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 216 of file ICFGBuilder.cpp.
bbs unreachable from function entry
Definition at line 129 of file ICFGBuilder.cpp.
|
private |
Definition at line 56 of file ICFGBuilder.h.
|
private |
Definition at line 155 of file ICFGBuilder.h.