30#ifndef INCLUDE_UTIL_ICFGBUILDER_H_
31#define INCLUDE_UTIL_ICFGBUILDER_H_
46 typedef std::vector<const Instruction*>
InstVec;
ICFGNode * getICFGNode(const Instruction *inst)
FunEntryICFGNode * addFunEntryBlock(const Function *fun)
Map< const Instruction *, CallICFGNode * > CSToCallNodeMapTy
void connectGlobalToProgEntry()
Map< const Instruction *, RetICFGNode * > CSToRetNodeMapTy
FunEntryICFGNode * getFunEntryICFGNode(const Function *fun)
get a function entry node
FIFOWorkList< const Instruction * > WorkList
FunExitICFGNode * getFunExitICFGNode(const Function *fun)
get a function exit node
IntraICFGNode * addIntraBlockICFGNode(const Instruction *inst)
Add and get IntraBlock ICFGNode.
Map< const Instruction *, IntraICFGNode * > InstToBlockNodeMapTy
CallICFGNode * getCallICFGNode(const Instruction *cs)
get a call node
std::vector< const Instruction * > InstVec
LLVMModuleSet * llvmModuleSet()
Map< const Function *, FunEntryICFGNode * > FunToFunEntryNodeMapTy
void processUnreachableFromEntry(const Function *fun, WorkList &worklist)
Map< const Function *, FunExitICFGNode * > FunToFunExitNodeMapTy
InterICFGNode * addInterBlockICFGNode(const Instruction *inst)
Add/Get an inter block ICFGNode.
IntraICFGNode * getIntraICFGNode(const Instruction *inst)
get a intra node
bool hasICFGNode(const Instruction *inst)
void processFunBody(WorkList &worklist)
Set< const Instruction * > BBSet
GlobalICFGNode * getGlobalICFGNode() const
void checkICFGNodesVisited(const Function *fun)
void processFunEntry(const Function *fun, WorkList &worklist)
FunExitICFGNode * addFunExitBlock(const Function *fun)
ICFGNode * addBlockICFGNode(const Instruction *inst)
Add/Get a basic block ICFGNode.
RetICFGNode * getRetICFGNode(const Instruction *cs)
get a return node
void addICFGInterEdges(const Instruction *cs, const Function *callee)
Create edges between ICFG nodes across functions.
void processFunExit(const Function *fun)
virtual void addICFGNode(ICFGNode *node)
Add a ICFG node.
GlobalICFGNode * globalBlockNode
unique basic block for all globals
GlobalICFGNode * getGlobalICFGNode() const
static LLVMModuleSet * getLLVMModuleSet()
FunEntryICFGNode * getFunEntryICFGNode(const Function *fun)
Add a function entry node.
bool hasICFGNode(const Instruction *inst)
ICFGNode * getICFGNode(const Instruction *inst)
Get a basic block ICFGNode.
CallICFGNode * getCallICFGNode(const Instruction *cs)
get a call node
RetICFGNode * getRetICFGNode(const Instruction *cs)
get a return node
FunExitICFGNode * getFunExitICFGNode(const Function *fun)
Add a function exit node.
IntraICFGNode * getIntraICFGNode(const Instruction *inst)
get a intra node
llvm::Instruction Instruction
llvm::IRBuilder IRBuilder