41 using namespace SVFUtil;
43 MTA::MTA() : tcg(nullptr), tct(nullptr), mhp(nullptr), lsa(nullptr)
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());
144 for (
const ICFGNode* icfgNode : svfbb->getICFGNodeList())
148 if (
const LoadStmt* l = SVFUtil::dyn_cast<LoadStmt>(stmt))
152 else if (
const StoreStmt* s = SVFUtil::dyn_cast<StoreStmt>(stmt))
#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.
TCT * getTCT() const
Get Thread Creation Tree.
virtual bool mayHappenInParallelInst(const ICFGNode *i1, const ICFGNode *i2)
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.
SVFStmtList & getSVFStmtList(const ICFGNode *inst)
Given an instruction, get all its PAGEdges.
const FunctionSetType & getFunctionSet() const
const SVFInstruction * getInst() const
Get/set methods for llvm instruction.
ICFGNode * getICFGNode() const
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()
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set