41using namespace SVFUtil;
45 stat = std::make_unique<MTAStat>();
94 tct = std::make_unique<TCT>(pta);
95 tcg =
tct->getThreadCallGraph();
101 stat->performThreadCallGraphStat(
tcg);
102 stat->performTCTStat(
tct.get());
146 for(
const SVFStmt*
stmt : pag->getSVFStmtList(icfgNode))
#define DBOUT(TYPE, X)
LLVM debug macros, define type of your DBUG model of each pass.
static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
NodeID getRHSVarID() const
NodeID getLHSVarID() const
virtual const std::string toString() const override
bool isProtectedByCommonLock(const ICFGNode *i1, const ICFGNode *i2)
void analyze()
Start analysis here.
virtual bool mayHappenInParallelInst(const ICFGNode *i1, const ICFGNode *i2)
TCT * getTCT() const
Get Thread Creation Tree.
virtual LockAnalysis * computeLocksets(TCT *tct)
Compute locksets.
std::unique_ptr< TCT > tct
virtual MHP * computeMHP(SVFModule *module)
Compute MHP.
virtual void detect(SVFModule *module)
Perform detection.
virtual ~MTA()
Destructor.
std::unique_ptr< MTAStat > stat
virtual bool runOnModule(SVFIR *module)
We start the pass here.
static const Option< bool > RaceCheck
data race checker, Default: false
void dump(const std::string &filename)
Dump the graph.
bool printStat()
Whether print statistics.
PTACallGraph * getCallGraph() const
Return call graph.
virtual AliasResult alias(const SVFValue *V1, const SVFValue *V2)=0
Interface exposed to users of our pointer analysis, given Value infos.
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.
ICFGNode * getICFGNode() const
const SVFInstruction * getInst() const
Get/set methods for llvm instruction.
virtual const std::string toString() const override
std::string bugMsg1(const std::string &msg)
std::string pasMsg(const std::string &msg)
Print each pass/phase message by converting a string into blue string output.
std::ostream & outs()
Overwrite llvm::outs()
llvm::IRBuilder IRBuilder
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set