74 DBOUT(
DGENERAL,
outs() <<
"~~~Out of budget query, downgrade to andersen analysis \n");
86 if(
getPAG()->isIndirectCallSites(cbn))
91 if(funset.find(callee)!=funset.end())
160 tmpDstPts.
set(fieldSrcPtdNode);
#define DBOUT(TYPE, X)
LLVM debug macros, define type of your DBUG model of each pass.
APOffset getConstantStructFldIdx() const
Get methods.
virtual const PointsTo & getPts(NodeID id)
Operation of points-to set.
const PointsTo & getPts(NodeID id) override
virtual bool unionPts(NodeID id, const PointsTo &target)
const FunctionSet & getIndCSCallees(const CallICFGNode *cs) const
virtual void updateCachedPointsTo(const LocDPItem &dpm, const PointsTo &pts)
AndersenWaveDiff * getAndersenAnalysis() const
bool isOutOfBudgetQuery() const
virtual const PointsTo & findPT(const LocDPItem &dpm)
const SVFGNode * getDefSVFGNode(const ValVar *valVar) const
virtual LocDPItem getDPIm(const NodeID &var, const SVFGNode *loc) const
void addOutOfBudgetDpm(const LocDPItem &dpm)
virtual void resetQuery()
NodeID getCurNodeID() const
static void setMaxBudget(u32_t max)
set max step budge per query
DDAClient * _client
DDA client.
void computeDDAPts(NodeID id) override
Compute points-to set for all top variable.
bool testIndCallReachability(LocDPItem &dpm, const FunObjVar *callee, CallSiteID csId)
refine indirect call edge
void handleOutOfBudgetDpm(const LocDPItem &dpm)
Handle out-of-budget dpm.
virtual NodeID getPtrNodeID(const NodeID &var) const override
Override parent method.
virtual PointsTo processGepPts(const GepSVFGNode *gep, const PointsTo &srcPts) override
processGep node
virtual bool handleBKCondition(LocDPItem &dpm, const SVFGEdge *edge) override
Handle condition for flow analysis (backward analysis).
BVDataPTAImpl::FunctionSet FunctionSet
virtual bool isHeapCondMemObj(const NodeID &var, const StoreSVFGNode *store) override
NodeType * getSrcNode() const
bool isVariantFieldGep() const
Gep statement with a variant field index (pointer arithmetic) for struct field access.
const AccessPath & getAccessPath() const
static const Option< u32_t > FlowBudget
virtual bool isBlkObjOrConstantObj(NodeID ptd) const
bool printStat()
Whether print statistics.
PTAStat * stat
Statistics.
NodeID getFIObjVar(NodeID id)
CallGraph * getCallGraph() const
Return call graph.
NodeID getGepObjVar(NodeID id, const APOffset &ap)
bool hasIndCSCallees(const CallICFGNode *cs) const
void setObjFieldInsensitive(NodeID id)
const_iterator end() const
void set(u32_t n)
Inserts n in the set.
const_iterator begin() const
const ValVar * getValVar(NodeID id) const
static double getClk(bool mark=false)
NodeID getId() const
Get ID.
const SVFStmt * getSVFStmt() const
const CallICFGNode * getCallSite(CallSiteID id) const
std::enable_if_t<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > cast(const Y &Val)
LLVM_NODISCARD bool isa(const Y &Val)
std::ostream & outs()
Overwrite llvm::outs().
void dumpSet(NodeBS To, OutStream &O=SVFUtil::outs())
Dump sparse bitvector set.
StoreVFGNode StoreSVFGNode
StmtDPItem< SVFGNode > LocDPItem