86 if ((*it2)->isIndirectVFGEdge())
88 toRemove.insert(*it2);
93 svfg->removeSVFGEdge(edge);
#define DBOUT(TYPE, X)
LLVM debug macros, define type of your DBUG model of each pass.
virtual void rmIncomingEdgeForSUStore(BVDataPTAImpl *pta)
virtual void buildSVFG()
Re-write create SVFG method.
BVDataPTAImpl * getPTA() const
Return PTA.
bool printStat()
Whether print statistics.
CallGraph * getCallGraph() const
Return call graph.
std::unique_ptr< SVFG > svfg
bool isStrongUpdate(const SVFGNode *node, NodeID &singleton, BVDataPTAImpl *pta)
Return TRUE if this is a strong update STORE statement.
void collectGlobals(BVDataPTAImpl *pta)
virtual void AddExtActualParmSVFGNodes(CallGraph *callgraph)
Add actual parameter SVFGNode for 1st argument of a deallocation like external function.
void rmDerefDirSVFGEdges(BVDataPTAImpl *pta)
VFGEdge::VFGEdgeSetTy::const_iterator const_iterator
VFGNodeIDToNodeMapTy::iterator iterator
std::string pasMsg(const std::string &msg)
Print each pass/phase message by converting a string into blue string output.
LLVM_NODISCARD bool isa(const Y &Val)
std::ostream & outs()
Overwrite llvm::outs().
LLVM_NODISCARD std::enable_if_t<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type > dyn_cast(const Y &Val)
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set
StoreVFGNode StoreSVFGNode