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 329 of file ICFGBuilder.cpp.
|
private |
Definition at line 352 of file ICFGBuilder.cpp.
|
inlineprivate |
Definition at line 358 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 276 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 342 of file ICFGBuilder.cpp.
ICFG * ICFGBuilder::build | ( | ) |
Create ICFG nodes and edges
Definition at line 43 of file ICFGBuilder.cpp.
Definition at line 85 of file ICFGBuilder.cpp.
|
private |
Definition at line 310 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 146 of file ICFGBuilder.cpp.
Create edges between ICFG nodes within a function
function entry
Definition at line 101 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 214 of file ICFGBuilder.cpp.
bbs unreachable from function entry
Definition at line 127 of file ICFGBuilder.cpp.
|
private |
Definition at line 56 of file ICFGBuilder.h.
|
private |
Definition at line 155 of file ICFGBuilder.h.