10 #ifndef FLOWSENSITIVETYPEFILTER_H_ 11 #define FLOWSENSITIVETYPEFILTER_H_ 41 virtual void analyze()
override;
48 virtual const std::string
PTAName()
const override 96 virtual void countAliases(
Set<std::pair<NodeID, NodeID>> cmp,
unsigned *mayAliases,
unsigned *noAliases)
override;
virtual void finalize() override
Finalize analysis.
static bool classof(const PointerAnalysis *pta)
For LLVM RTTI.
virtual bool processPhi(const PHISVFGNode *phi) override
virtual const NodeBS & getAllFieldsObjNode(NodeID id) override
bool storeReuse
Whether to allow for reuse at stores.
virtual bool processCopy(const CopySVFGNode *copy) override
void determineWhichGepsAreLoads(void)
virtual void initialize() override
Initialize analysis.
Sparse flow-sensitive type-based heap cloning WPA.
PTATY getAnalysisTy() const
Type of pointer analysis.
std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map
virtual bool propAlongDirectEdge(const DirectSVFGEdge *edge) override
Propagate points-to information along a DIRECT SVFG edge.
virtual ~FlowSensitiveTBHC()
Destructor.
virtual void expandFIObjs(const PointsTo &pts, PointsTo &expandedPts) override
Expand FI objects.
virtual void backPropagate(NodeID clone) override
BVDataPTAImpl * pta
PTA extending this class.
NodeBS loadGeps
Maps whether a (SVFG) GEP node is a load or not.
virtual bool processLoad(const LoadSVFGNode *load) override
virtual bool processStore(const StoreSVFGNode *store) override
bool gepIsLoad(NodeID gep)
virtual bool propAlongIndirectEdge(const IndirectSVFGEdge *edge) override
Propagate points-to information along an INDIRECT SVFG edge.
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set
virtual void countAliases(Set< std::pair< NodeID, NodeID >> cmp, unsigned *mayAliases, unsigned *noAliases) override
Fills may/noAliases for the location/pointer pairs in cmp.
virtual bool processGep(const GepSVFGNode *gep) override
virtual void analyze() override
Flow sensitive analysis with FSTBHC.
const DIType * getTypeFromCTirMetadata(const SVFGNode *)
virtual bool unionPtsFromIn(const SVFGNode *stmt, NodeID srcVar, NodeID dstVar) override
virtual bool processAddr(const AddrSVFGNode *addr) override
virtual bool propDFOutToIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar) override
virtual bool unionPtsFromTop(const SVFGNode *stmt, NodeID srcVar, NodeID dstVar) override
virtual bool propDFInToIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar) override
static const MDNode * getRawCTirMetadata(const SVFGNode *)
llvm::SparseBitVector NodeBS
FlowSensitiveTBHC(PAG *_pag, PTATY type=FSTBHC_WPA)
Constructor.
Map< NodeID, NodeBS > gepToSVFGRetrievers
Maps GEP objects to the SVFG nodes that retrieved them with getGepObjClones.
virtual const std::string PTAName() const override
Get PTA name.
virtual bool updateInFromOut(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar) override
PTATY
Pointer analysis type list.
static bool classof(const FlowSensitiveTBHC *)
For LLVM RTTI.
virtual bool updateInFromIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar) override