133 assert(
v->getMR() ==
mr &&
"inserting different memory region?");
139 assert(
ver!=
nullptr &&
"version is nullptr, did not rename?");
151 return mr >
rhs.getMR();
368 assert(
v->getMR() ==
mr &&
"inserting different memory region?");
375 assert(
resVer!=
nullptr &&
"version is nullptr, did not rename?");
382 return mr >
rhs.getMR();
416 assert(
v->getMR() ==
this->getMR() &&
"inserting different memory region?");
423 assert(
opVer!=
nullptr &&
"version is nullptr, did not rename?");
653 assert(
v->getMR() ==
this->getMR() &&
"inserting different memory region?");
661 assert(
it!=
opVers.end() &&
"version is nullptr, did not rename?");
CallCHI(const CallICFGNode *cs, const MemRegion *m, Cond c=true)
Constructors for CallCHI.
static bool classof(const MSSACHI< Cond > *chi)
const CallICFGNode * callsite
const SVFBasicBlock * getBasicBlock() const
Return basic block.
static bool classof(const CallCHI *chi)
Methods for support type inquiry through isa, cast, and dyn_cast:
const CallICFGNode * getCallSite() const
Return callsite.
virtual void dump()
Print CHI.
static bool classof(const MSSADEF *chi)
const CallICFGNode * getCallSite() const
Return callsite.
static bool classof(const MSSAMU< Cond > *mu)
const SVFBasicBlock * getBasicBlock() const
Return basic block.
const CallICFGNode * callsite
CallMU(const CallICFGNode *cs, const MemRegion *m, Cond c=true)
Constructor/Destructor for MU.
virtual void dump()
Print MU.
static bool classof(const CallMU *)
Methods for support type inquiry through isa, cast, and dyn_cast:
EntryCHI(const SVFFunction *f, const MemRegion *m, Cond c=true)
Constructors for EntryCHI.
static bool classof(const MSSACHI< Cond > *chi)
virtual void dump()
Print CHI.
static bool classof(const MSSADEF *chi)
const SVFFunction * getFunction() const
Return function.
static bool classof(const EntryCHI *chi)
Methods for support type inquiry through isa, cast, and dyn_cast:
virtual const SVFBasicBlock * getBB() const
Return the basic block of this ICFGNode.
static bool classof(const MSSAMU< Cond > *mu)
const SVFBasicBlock * getBasicBlock() const
Return basic block.
static bool classof(const LoadMU *)
Methods for support type inquiry through isa, cast, and dyn_cast:
virtual void dump()
Print MU.
const LoadStmt * getLoadStmt() const
Return load instruction.
LoadMU(const SVFBasicBlock *b, const LoadStmt *i, const MemRegion *m, Cond c=true)
Constructor/Destructor for MU.
MRVer(const MemRegion *m, MRVERSION v, MSSADef *d)
Constructor.
MRVERSION getSSAVersion() const
Return SSA version.
const MemRegion * getMR() const
Return the memory region.
MRVERID getID() const
Get MRVERID.
MSSADef * getDef() const
Get MSSADef.
static u32_t totalVERNum
ver ID 0 is reserved
void setOpVer(MRVer *v)
Set operand ver.
static bool classof(const MSSADEF *chi)
static bool classof(const MSSACHI *chi)
Methods for support type inquiry through isa, cast, and dyn_cast:
virtual void dump()
Print CHI.
MRVer * getOpVer() const
Get operand ver.
Cond getCond() const
Get condition.
MSSACHI(CHITYPE t, const MemRegion *m, Cond c)
Constructor/Destructor for MSSACHI.
MSSADEF(DEFTYPE t, const MemRegion *m)
Constructor/Destructor for MSSADEF.
MRVer * getResVer() const
Set operand vers.
void setResVer(MRVer *v)
Set result operand ver.
DEFTYPE getType() const
Return type of this CHI.
const MemRegion * getMR() const
Return memory region.
virtual void dump()
Print MSSADef.
bool operator<(const MSSADEF &rhs) const
Avoid adding duplicated chis and phis.
MRVer * getMRVer() const
Get Ver.
MSSAMU(MUTYPE t, const MemRegion *m, Cond c)
Constructor/Destructor for MU.
void setVer(MRVer *v)
Set Ver.
virtual void dump()
Print MU.
const MemRegion * getMR() const
Return MR.
bool operator<(const MSSAMU &rhs) const
Avoid adding duplicated mus.
MUTYPE getType() const
Return type.
Cond getCond() const
Return condition.
Cond getCond() const
Return condition.
virtual void dump()
Print PHI.
OPVers::const_iterator opVerEnd() const
static bool classof(const MSSADEF *phi)
MSSAPHI(const SVFBasicBlock *b, const MemRegion *m, Cond c=true)
Constructors for PHI.
Map< u32_t, const MRVer * > OPVers
const MRVer * getOpVer(u32_t pos) const
Get operand ver.
void setOpVer(const MRVer *v, u32_t pos)
Set operand ver.
OPVers::const_iterator opVerBegin() const
Operand ver iterators.
const SVFBasicBlock * getBasicBlock() const
Return the basic block.
static bool classof(const MSSAPHI *phi)
Methods for support type inquiry through isa, cast, and dyn_cast:
u32_t getOpVerNum() const
Get the number of operand ver.
MRID getMRID() const
Return memory region ID.
std::string dumpStr() const
Dump string.
RetMU(const SVFFunction *f, const MemRegion *m, Cond c=true)
Constructor/Destructor for MU.
const SVFFunction * getFunction() const
Return function.
static bool classof(const RetMU *)
Methods for support type inquiry through isa, cast, and dyn_cast:
virtual void dump()
Print MU.
static bool classof(const MSSAMU< Cond > *mu)
static bool classof(const MSSADEF *chi)
static bool classof(const StoreCHI *chi)
Methods for support type inquiry through isa, cast, and dyn_cast:
const StoreStmt * getStoreStmt() const
Get store instruction.
static bool classof(const MSSACHI< Cond > *chi)
StoreCHI(const SVFBasicBlock *b, const StoreStmt *i, const MemRegion *m, Cond c=true)
Constructors for StoreCHI.
const SVFBasicBlock * getBasicBlock() const
Get basic block.
virtual void dump()
Print CHI.
std::ostream & outs()
Overwrite llvm::outs()
llvm::IRBuilder IRBuilder
IntervalValue operator<<(const IntervalValue &lhs, const IntervalValue &rhs)
Left binary shift of IntervalValues.