30#ifndef ANDERSENMEMSSA_H_
31#define ANDERSENMEMSSA_H_
91 std::unique_ptr<SVFG>
svfg;
OrderedMap< const CallICFGNode *, FunctionSet > CallEdgeMap
Set< const CallICFGNode * > CallSiteSet
Indirect call edges type, map a callsite to a set of callees.
Set< const SVFFunction * > FunctionSet
SVFGBuilder(bool _SVFGWithIndCall=false)
Constructor.
virtual std::unique_ptr< MemSSA > buildMSSA(BVDataPTAImpl *pta, bool ptrOnlyMSSA)
Build Memory SSA.
PointerAnalysis::FunctionSet FunctionSet
SVFG * getSVFG() const
Get SVFG instance.
void markValidVFEdge(SVFGEdgeSet &edges)
Mark feasible VF edge by removing it from set vfEdgesAtIndCallSite.
SVFG * build(BVDataPTAImpl *pta, VFG::VFGK kind)
Create a DDA SVFG. By default actualOut and FormalIN are removed, unless withAOFI is set true.
SVFG * buildFullSVFG(BVDataPTAImpl *pta)
SVFG::SVFGEdgeSetTy SVFGEdgeSet
virtual void releaseMemory()
Release global SVFG.
bool SVFGWithIndCall
SVFG with precomputed indirect call edges.
PointerAnalysis::CallSiteSet CallSiteSet
virtual ~SVFGBuilder()=default
Destructor.
bool isSpuriousVFEdgeAtIndCallSite(const SVFGEdge *edge)
Return true if this is an VF Edge pre-connected by Andersen's analysis.
SVFGEdgeSet vfEdgesAtIndCallSite
SVFG Edges connected at indirect call/ret sites.
SVFG * buildPTROnlySVFG(BVDataPTAImpl *pta)
PointerAnalysis::CallEdgeMap CallEdgeMap
virtual void buildSVFG()
Can be rewritten by subclasses.
std::unique_ptr< SVFG > svfg
VFGEdge::SVFGEdgeSetTy SVFGEdgeSetTy
llvm::IRBuilder IRBuilder