133 assert(v->
getMR() ==
mr &&
"inserting different memory region?");
139 assert(
ver!=
nullptr &&
"version is nullptr, did not rename?");
368 assert(v->
getMR() ==
mr &&
"inserting different memory region?");
375 assert(
resVer!=
nullptr &&
"version is nullptr, did not rename?");
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?");
660 OPVers::const_iterator it =
opVers.find(pos);
661 assert(it!=
opVers.end() &&
"version is nullptr, did not rename?");
712 for(OPVers::iterator it =
opVers.begin(), eit =
opVers.end(); it!=eit; ++it)
719 std::ostream&
operator<<(std::ostream &o,
const MRVer& mrver);
CallCHI(const CallICFGNode *cs, const MemRegion *m, Cond c=true)
Constructors for StoreCHI.
static bool classof(const MSSACHI< Cond > *chi)
const CallICFGNode * callsite
static bool classof(const CallCHI *chi)
Methods for support type inquiry through isa, cast, and dyn_cast:
const SVFBasicBlock * getBasicBlock() const
Return basic block.
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 CallICFGNode * getCallSite() const
Return callsite.
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)
static bool classof(const EntryCHI *chi)
Methods for support type inquiry through isa, cast, and dyn_cast:
const SVFFunction * getFunction() const
Return function.
virtual const SVFBasicBlock * getBB() const
Return the basic block of this ICFGNode.
const SVFBasicBlock * getBasicBlock() const
Return basic block.
static bool classof(const MSSAMU< Cond > *mu)
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.
MRVERID getID() const
Get MRVERID.
MSSADef * getDef() const
Get MSSADef.
const MemRegion * getMR() const
Return the memory region.
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.
virtual void dump()
Print MSSADef.
const MemRegion * getMR() const
Return memory region.
bool operator<(const MSSADEF &rhs) const
Avoid adding duplicated chis and phis.
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.
MRVer * getMRVer() const
Get Ver.
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
void setOpVer(const MRVer *v, u32_t pos)
Set operand ver.
OPVers::const_iterator opVerBegin() const
Operand ver iterators.
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.
const MRVer * getOpVer(u32_t pos) const
Get operand ver.
const SVFBasicBlock * getBasicBlock() const
Return the basic block.
MRID getMRID() const
Return memory region ID.
std::string dumpStr() const
Dump string.
const SVFFunction * getFunction() const
Return function.
RetMU(const SVFFunction *f, const MemRegion *m, Cond c=true)
Constructor/Destructor for MU.
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)
const StoreStmt * getStoreStmt() const
Get store instruction.
static bool classof(const MSSADEF *chi)
static bool classof(const StoreCHI *chi)
Methods for support type inquiry through isa, cast, and dyn_cast:
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()
std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map
IntervalValue operator<<(const IntervalValue &lhs, const IntervalValue &rhs)
Left binary shift of IntervalValues.