56 Addr,
Copy,
Store,
Load,
Call,
Ret,
NormalGep,
VariantGep,
ThreadFork,
ThreadJoin,
Cmp,
BinaryOp,
UnaryOp 80 static inline bool classof(
const GenericPAGEdgeTy *edge)
151 Inst2LabelMap::const_iterator iter =
inst2LabelMap.find(store);
157 virtual const std::string
toString()
const;
190 void operator=(
const AddrPE &);
202 static inline bool classof(
const GenericPAGEdgeTy *edge)
213 virtual const std::string
toString()
const;
225 void operator=(
const CopyPE &);
237 static inline bool classof(
const GenericPAGEdgeTy *edge)
248 virtual const std::string
toString()
const;
260 void operator=(
const CmpPE &);
272 static inline bool classof(
const GenericPAGEdgeTy *edge)
283 virtual const std::string
toString()
const;
307 static inline bool classof(
const GenericPAGEdgeTy *edge)
318 virtual const std::string
toString()
const;
341 static inline bool classof(
const GenericPAGEdgeTy *edge)
352 virtual const std::string
toString()
const;
364 void operator=(
const StorePE &);
377 static inline bool classof(
const GenericPAGEdgeTy *edge)
389 virtual const std::string
toString()
const;
401 void operator=(
const LoadPE &);
414 static inline bool classof(
const GenericPAGEdgeTy *edge)
425 virtual const std::string
toString()
const;
437 void operator=(
const GepPE &);
451 static inline bool classof(
const GenericPAGEdgeTy *edge)
465 virtual const std::string
toString()
const;
496 static inline bool classof(
const GenericPAGEdgeTy *edge)
516 virtual const std::string
toString()
const;
544 static inline bool classof(
const GenericPAGEdgeTy *edge)
553 virtual const std::string
toString()
const;
566 void operator=(
const CallPE &);
581 static inline bool classof(
const GenericPAGEdgeTy *edge)
606 virtual const std::string
toString()
const;
618 void operator=(
const RetPE &);
633 static inline bool classof(
const GenericPAGEdgeTy *edge)
658 virtual const std::string
toString()
const;
683 static inline bool classof(
const GenericPAGEdgeTy *edge)
695 virtual const std::string
toString()
const;
721 static inline bool classof(
const GenericPAGEdgeTy *edge)
733 virtual const std::string
toString()
const;
static bool classof(const GenericPAGEdgeTy *edge)
const LocationSet & getLocationSet() const
GEdgeKind getEdgeKind() const
static bool classof(const GenericPAGEdgeTy *edge)
VariantGepPE(PAGNode *s, PAGNode *d)
constructor
const BasicBlock * basicBlock
LLVM BasicBlock.
static bool classof(const StorePE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
const Value * getValue() const
static bool classof(const PAGEdge *edge)
llvm::BasicBlock BasicBlock
llvm::raw_ostream raw_ostream
LLVM outputs.
void setBB(const BasicBlock *bb)
static Size_t totalEdgeNum
Total edge number.
LocationSet ls
location set of the gep edge
const CallBlockNode * getCallSite() const
static bool classof(const GenericPAGEdgeTy *edge)
NormalGepPE(PAGNode *s, PAGNode *d, const LocationSet &l)
constructor
GenericNode< PAGNode, PAGEdge >::GEdgeSetTy PAGEdgeSetTy
UnaryOPPE(PAGNode *s, PAGNode *d)
constructor
static bool classof(const PAGEdge *edge)
static Inst2LabelMap inst2LabelMap
Call site Instruction to label map.
CopyPE(PAGNode *s, PAGNode *d)
constructor
static bool classof(const TDJoinPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const PAGEdge *edge)
static bool classof(const PAGEdge *edge)
static bool classof(const GepPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
Map< EdgeID, PAGEdgeSetTy > PAGEdgeToSetMapTy
static GEdgeFlag makeEdgeFlagWithStoreInst(GEdgeKind k, const ICFGNode *store)
static bool classof(const TDForkPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
LoadPE(PAGNode *s, PAGNode *d)
constructor
static bool classof(const PAGEdge *edge)
static bool classof(const GenericPAGEdgeTy *edge)
std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map
bool isPTAEdge() const
Whether src and dst nodes are both of pointer type.
GenericEdge< PAGNode > GenericPAGEdgeTy
static bool classof(const LoadPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const PAGEdge *edge)
EdgeID getEdgeID() const
Return Edge ID.
static bool classof(const RetPE *)
the callsite instruction return to
static bool classof(const PAGEdge *edge)
const CallBlockNode * getCallSite() const
static bool classof(const PAGEdge *edge)
static bool classof(const PAGEdge *edge)
OrderedSet< EdgeType *, typename EdgeType::equalGEdge > GEdgeSetTy
ICFGNode * getICFGNode() const
llvm::Instruction Instruction
StorePE(PAGNode *s, PAGNode *d, const IntraBlockNode *st)
constructor
static u64_t callEdgeLabelCounter
Call site Instruction counter.
friend raw_ostream & operator<<(raw_ostream &o, const PAGEdge &edge)
Overloading operator << for dumping PAGNode value.
const Instruction * getInst() const
Get/set methods for llvm instruction.
static bool classof(const CopyPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
ICFGNode * icfgNode
ICFGNode.
RetPE(PAGNode *s, PAGNode *d, const CallBlockNode *i, GEdgeKind k=PAGEdge::Ret)
constructor
Map< const ICFGNode *, u32_t > Inst2LabelMap
void setValue(const Value *val)
TDJoinPE(PAGNode *s, PAGNode *d, const CallBlockNode *i)
Constructor.
static bool classof(const AddrPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const GenericPAGEdgeTy *edge)
CmpPE(PAGNode *s, PAGNode *d)
constructor
GepPE(PAGNode *s, PAGNode *d, PEDGEK k)
constructor
const BasicBlock * getBB() const
void setICFGNode(ICFGNode *node)
const CallBlockNode * getCallInst() const
Get method for the call instruction.
static bool classof(const GenericPAGEdgeTy *edge)
static bool classof(const PAGEdge *)
ClassOf.
static bool classof(const GenericPAGEdgeTy *edge)
const CallBlockNode * inst
llvm instruction for this call
const CallBlockNode * inst
const CallBlockNode * getCallInst() const
Get method for call instruction at caller.
static bool classof(const GepPE *edge)
static bool classof(const PAGEdge *edge)
static bool classof(const VariantGepPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const CallPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const PAGEdge *edge)
Size_t getOffset() const
Get methods.
static bool classof(const GepPE *edge)
AddrPE(PAGNode *s, PAGNode *d)
constructor
static bool classof(const GenericPAGEdgeTy *edge)
static bool classof(const GenericPAGEdgeTy *edge)
static GEdgeFlag makeEdgeFlagWithCallInst(GEdgeKind k, const ICFGNode *cs)
Compute the unique edgeFlag value from edge kind and call site Instruction.
TDForkPE(PAGNode *s, PAGNode *d, const CallBlockNode *i)
constructor
static bool classof(const GenericPAGEdgeTy *edge)
static bool classof(const GenericPAGEdgeTy *edge)
PAGEdge(PAGNode *s, PAGNode *d, GEdgeFlag k)
Constructor.
LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)
virtual const std::string toString() const
static bool classof(const GenericPAGEdgeTy *edge)
BinaryOPPE(PAGNode *s, PAGNode *d)
constructor
static bool classof(const CmpPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const GenericPAGEdgeTy *edge)
static bool classof(const UnaryOPPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
PAGEdgeToSetMapTy PAGKindToEdgeSetMapTy
const Value * value
LLVM value.
u32_t getOffset() const
offset of the gep edge
static bool classof(const PAGEdge *edge)
static bool classof(const GenericPAGEdgeTy *edge)
static u64_t storeEdgeLabelCounter
Store Instruction counter.
static bool classof(const PAGEdge *edge)
static constexpr unsigned char EdgeKindMaskBits
We use the lower 8 bits to denote edge kind.
CallPE(PAGNode *s, PAGNode *d, const CallBlockNode *i, GEdgeKind k=PAGEdge::Call)
constructor
static bool classof(const BinaryOPPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const GenericPAGEdgeTy *edge)
static bool classof(const NormalGepPE *)
Methods for support type inquiry through isa, cast, and dyn_cast:
static bool classof(const PAGEdge *edge)