113 assert(
false &&
"This pointer analysis has not been implemented yet.\n");
122 assert(SVFUtil::isa<AndersenBase>(
_pta) &&
"supports only andersen/steensgaard for pre-computed SVFG");
149 <<
" var" <<
node1->getId() <<
"[" <<
node1->getValueName()
150 <<
"@" << (
fun1==
nullptr?
"":
fun1->getName()) <<
"] --"
151 <<
" var" <<
node2->getId() <<
"[" <<
node2->getValueName()
152 <<
"@" << (
fun2==
nullptr?
"":
fun2->getName()) <<
"]\n";
159 assert(
_pta &&
"initialize a pointer analysis first");
166 assert(
_pta &&
"initialize a pointer analysis first");
iterator begin()
Iterators.
IDToNodeMapTy::iterator iterator
Node Iterators.
bool hasValueNode(const SVFValue *V)
NodeID getValueNode(const SVFValue *V)
ModRefInfo getModRefInfo(const CallICFGNode *cs)
MRGenerator * getMRGenerator()
Return MRGenerator.
static OptionMultiple< WPAPass::AliasCheckRule > AliasRule
static OptionMultiple< PointerAnalysis::PTATY > PASelected
static const Option< bool > PrintAliases
static const Option< bool > AnderSVFG
virtual const PointsTo & getPts(NodeID ptr)=0
Get points-to targets of a pointer. It needs to be implemented in child class.
PTATY
Pointer analysis type list.
@ VFS_WPA
Versioned sparse flow-sensitive WPA.
@ AndersenSCD_WPA
Selective cycle detection andersen-style WPA.
@ Andersen_WPA
Andersen PTA.
@ AndersenWaveDiff_WPA
Diff wave propagation andersen-style WPA.
@ TypeCPP_WPA
Type-based analysis for C++.
@ AndersenSFR_WPA
Stride-based field representation.
@ Steensgaard_WPA
Steensgaard PTA.
@ FSSPARSE_WPA
Sparse flow sensitive WPA.
@ Default_PTA
default pta without any analysis
virtual AliasResult alias(const SVFValue *V1, const SVFValue *V2)=0
Interface exposed to users of our pointer analysis, given Value infos.
virtual void analyze()=0
Start Analysis here (main part of pointer analysis). It needs to be implemented in child class.
SVFG * buildFullSVFG(BVDataPTAImpl *pta)
MemSSA * getMSSA() const
Get SVFG memory SSA.
PointerAnalysis * _pta
pointer analysis to be executed.
@ Conservative
return MayAlias if any pta says alias
@ Veto
return NoAlias if any pta says no alias
virtual const PointsTo & getPts(const SVFValue *value)
Retrieve points-to set information.
PTAVector ptaVector
all pointer analysis to be executed.
virtual ~WPAPass()
Destructor.
virtual ModRefInfo getModRefInfo(const CallICFGNode *callInst)
Interface of mod-ref analysis to determine whether a CallSite instruction can mod or ref any memory l...
virtual AliasResult alias(const SVFValue *V1, const SVFValue *V2)
Interface expose to users of our pointer analysis, given Value infos.
virtual void PrintAliasPairs(PointerAnalysis *pta)
Print all alias pairs.
SVFG * _svfg
svfg generated through -ander pointer analysis
void runPointerAnalysis(SVFIR *pag, u32_t kind)
Create pointer analysis according to specified kind and analyze the module.
virtual void runOnModule(SVFIR *svfModule)
Run pointer analysis on SVFModule.
std::ostream & outs()
Overwrite llvm::outs()
llvm::IRBuilder IRBuilder