45 addMDTag(const_cast<Instruction*>(sourceinst),rawstr.str());
48 assert(
false &&
"instruction of source node not found");
62 const Instruction* sinkinst = ap->getCallSite()->getCallSite();
63 assert(SVFUtil::isa<CallInst>(sinkinst) &&
"not a call instruction?");
64 const CallInst* sink = SVFUtil::cast<CallInst>(sinkinst);
68 addMDTag(const_cast<CallInst*>(sink),sink->getArgOperand(0),rawstr.str());
71 assert(
false &&
"sink node is not a actual parameter?");
81 assert((succPos == 0 || succPos == 1) &&
"branch instruction should only have two successors");
87 addMDTag(br,br->getCondition(),rawstr.str());
96 assert((succPos == 0 || succPos == 1) &&
"branch instruction should only have two successors");
102 addMDTag(br,br->getCondition(),rawstr.str());
111 assert(succPos < switchInst->getNumSuccessors() &&
"successor position not correct!");
const SVFGNode * getSource() const
root and sink operations
llvm::BranchInst BranchInst
void annotateSource()
Annotation.
const char * SB_SLICESOURCE
Saber annotations.
const Value * getLLVMValue(const SVFGNode *node) const
Get llvm value from a SVFGNode.
llvm::Instruction Instruction
llvm::raw_string_ostream raw_string_ostream
const char * SB_INFESIBLE
const ProgSlice * _curSlice
llvm::SwitchInst SwitchInst
void annotateFeasibleBranch(const BranchInst *brInst, u32_t succPos)
void annotateInfeasibleBranch(const BranchInst *brInst, u32_t succPos)
void addMDTag(Instruction *inst, std::string str)
Simple add/remove meta data information.
NodeID getId() const
Get ID.
const char * SB_SLICESINK
const SVFGNodeSet & getSinks() const
void annotateSwitch(SwitchInst *brInst, u32_t succPos)