34using namespace SVFUtil;
139 else if (SVFUtil::isa<BaseObjVar, DummyObjVar>(
initPN))
143 assert(
false &&
"Not an object node!!");
156 for (
auto _s : strides)
static u32_t numOfFieldExpand
ConstraintGraph * consCG
Constraint Graph.
void initialize()
Initialize analysis.
bool processGepPts(const PointsTo &pts, const GepCGEdge *edge)
void fieldExpand(NodeSet &initials, APOffset offset, NodeBS &strides, PointsTo &expandPts)
static AndersenSFR * sfrAndersen
bool mergeSrcToTgt(NodeID nodeId, NodeID newRepId)
void setDetectPWC(bool flag)
virtual bool unionPts(NodeID id, const PointsTo &target)
virtual const PointsTo & getPts(NodeID id)
Operation of points-to set.
virtual bool processGepPts(const PointsTo &pts, const GepCGEdge *edge)
virtual bool mergeSrcToTgt(NodeID srcId, NodeID tgtId)
void find(NodeStack &candidates)
NodeID getGepObjVar(NodeID id, const APOffset &apOffset)
Get a field of a memory object.
bool isBlkObjOrConstantObj(NodeID id)
ConstraintNode * getConstraintNode(NodeID id) const
Get/add/remove constraint node.
NodeBS strides
For stride-based field representation.
NodeType * getGNode(NodeID id) const
Get a node.
u32_t getMaxFieldOffsetLimit() const
Get max field offset limit.
virtual void initialize()
Initialization of a pointer analysis, including building symbol table and SVFIR etc.
NodeID getId() const
Get ID.
const MemObj * getBaseObj(NodeID id) const
std::unique_ptr< SCC > scc
SCC.
SCC * getSCCDetector() const
Get SCC detector.
virtual void pushIntoWorklist(NodeID id)
llvm::IRBuilder IRBuilder