46 return pta->
alias(
v1->getId(),
v2->getId());
84 while (!worklist.
empty())
92 if (visited.find(
succNode) == visited.end())
118 while (!worklist.
empty())
126 if (visited.find(
succNode) == visited.end())
150 argc,
argv,
"Whole Program Points-to Analysis",
"[options] <input-bitcode...>"
184 for (
const auto&
it : *svfg)
195 if (
node2->getValue())
205 for (
const auto&
it : *icfg)
219 llvm::llvm_shutdown();
static std::vector< std::string > parseOptions(int argc, char *argv[], std::string description, std::string callFormat)
static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
static void releaseAndersenWaveDiff()
bool push(const Data &data)
NodeType * getGNode(NodeID id) const
Get a node.
const GEdgeSetTy & getOutEdges() const
ICFGEdge::ICFGEdgeSetTy::const_iterator const_iterator
static LLVMModuleSet * getLLVMModuleSet()
static void releaseLLVMModuleSet()
static void preProcessBCs(std::vector< std::string > &moduleNameVec)
static SVFModule * buildSVFModule(Module &mod)
void dumpModulesToFile(const std::string &suffix)
static const Option< bool > PTSPrint
static const Option< std::string > WriteAnder
virtual const PointsTo & getPts(NodeID ptr)=0
Get points-to targets of a pointer. It needs to be implemented in child class.
PTACallGraph * getCallGraph() const
Return call graph.
virtual AliasResult alias(const SVFValue *V1, const SVFValue *V2)=0
Interface exposed to users of our pointer analysis, given Value infos.
static void releaseSVFIR()
std::string toString() const
Needs to be implemented by a SVF front end.
const SVFValue * getValue() const
Get/has methods of the components.
virtual const SVFVar * getValue() const
Return the corresponding LLVM value, if possible, nullptr otherwise.
VFGEdge::VFGEdgeSetTy::const_iterator const_iterator
llvm::IRBuilder IRBuilder
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set
void traverseOnICFG(ICFG *icfg, const ICFGNode *iNode)
int main(int argc, char **argv)
std::string printPts(PointerAnalysis *pta, const SVFVar *svfval)
SVF::AliasResult aliasQuery(PointerAnalysis *pta, const SVFVar *v1, const SVFVar *v2)
void dummyVisit(const VFGNode *node)
void traverseOnVFG(const SVFG *vfg, const SVFVar *svfval)