SVF
|
#include <PAGNode.h>
Public Types | |
enum | PNODEK { ValNode, ObjNode, RetNode, VarargNode, GepValNode, GepObjNode, FIObjNode, DummyValNode, DummyObjNode, CloneGepObjNode, CloneFIObjNode, CloneDummyObjNode } |
![]() | |
typedef NodeTy | NodeType |
typedef EdgeTy | EdgeType |
typedef s32_t | GNodeK |
Edge kind. More... | |
typedef OrderedSet< EdgeType *, typename EdgeType::equalGEdge > | GEdgeSetTy |
typedef GEdgeSetTy::iterator | iterator |
typedef GEdgeSetTy::const_iterator | const_iterator |
Public Member Functions | |
PAGNode (const Value *val, NodeID i, PNODEK k) | |
address-taken pointer More... | |
virtual | ~PAGNode () |
Destructor. More... | |
const Value * | getValue () const |
Get/has methods of the components. More... | |
virtual const Type * | getType () const |
Return type of the value. More... | |
bool | hasValue () const |
virtual bool | isPointer () const |
Whether it is a pointer. More... | |
bool | isTopLevelPtr () const |
Whether it is a top-level pointer. More... | |
bool | isAddressTakenPtr () const |
Whether it is an address-taken pointer. More... | |
bool | isConstantData () const |
bool | isIsolatedNode () const |
Whether this is an isoloated node on the PAG graph. More... | |
virtual const std::string | getValueName () const =0 |
Get name of the LLVM value. More... | |
virtual const Function * | getFunction () const |
Return the function that this PAGNode resides in. Return nullptr if it is a global or constantexpr node. More... | |
PAGEdge::PAGEdgeSetTy & | getIncomingEdges (PAGEdge::PEDGEK kind) |
Get incoming PAG edges. More... | |
PAGEdge::PAGEdgeSetTy & | getOutgoingEdges (PAGEdge::PEDGEK kind) |
Get outgoing PAG edges. More... | |
bool | hasIncomingEdges (PAGEdge::PEDGEK kind) const |
Has incoming PAG edges. More... | |
bool | hasIncomingVariantGepEdge () const |
Has incoming VariantGepEdges. More... | |
PAGEdge::PAGEdgeSetTy::iterator | getIncomingEdgesBegin (PAGEdge::PEDGEK kind) const |
Get incoming PAGEdge iterator. More... | |
PAGEdge::PAGEdgeSetTy::iterator | getIncomingEdgesEnd (PAGEdge::PEDGEK kind) const |
Get incoming PAGEdge iterator. More... | |
bool | hasOutgoingEdges (PAGEdge::PEDGEK kind) const |
Has outgoing PAG edges. More... | |
PAGEdge::PAGEdgeSetTy::iterator | getOutgoingEdgesBegin (PAGEdge::PEDGEK kind) const |
Get outgoing PAGEdge iterator. More... | |
PAGEdge::PAGEdgeSetTy::iterator | getOutgoingEdgesEnd (PAGEdge::PEDGEK kind) const |
Get outgoing PAGEdge iterator. More... | |
void | addInEdge (PAGEdge *inEdge) |
add methods of the components More... | |
void | addOutEdge (PAGEdge *outEdge) |
virtual const std::string | toString () const |
virtual const std::string | getNodeAttrForDotDisplay () const |
Get shape and/or color of node for .dot display. More... | |
void | dump () const |
Dump to console for debugging. More... | |
![]() | |
GenericNode (NodeID i, GNodeK k) | |
Constructor. More... | |
virtual | ~GenericNode () |
Destructor. More... | |
NodeID | getId () const |
Get ID. More... | |
GNodeK | getNodeKind () const |
Get node kind. More... | |
const GEdgeSetTy & | getOutEdges () const |
const GEdgeSetTy & | getInEdges () const |
bool | hasIncomingEdge () const |
Has incoming/outgoing edge set. More... | |
bool | hasOutgoingEdge () const |
iterator | OutEdgeBegin () |
iterators More... | |
iterator | OutEdgeEnd () |
iterator | InEdgeBegin () |
iterator | InEdgeEnd () |
const_iterator | OutEdgeBegin () const |
const_iterator | OutEdgeEnd () const |
const_iterator | InEdgeBegin () const |
const_iterator | InEdgeEnd () const |
virtual iterator | directOutEdgeBegin () |
Iterators used for SCC detection, overwrite it in child class if necessory. More... | |
virtual iterator | directOutEdgeEnd () |
virtual iterator | directInEdgeBegin () |
virtual iterator | directInEdgeEnd () |
virtual const_iterator | directOutEdgeBegin () const |
virtual const_iterator | directOutEdgeEnd () const |
virtual const_iterator | directInEdgeBegin () const |
virtual const_iterator | directInEdgeEnd () const |
bool | addIncomingEdge (EdgeType *inEdge) |
Add incoming and outgoing edges. More... | |
bool | addOutgoingEdge (EdgeType *outEdge) |
Size_t | removeIncomingEdge (EdgeType *edge) |
Size_t | removeOutgoingEdge (EdgeType *edge) |
EdgeType * | hasIncomingEdge (EdgeType *edge) const |
Find incoming and outgoing edges. More... | |
EdgeType * | hasOutgoingEdge (EdgeType *edge) const |
Protected Attributes | |
const Value * | value |
value of this PAG node More... | |
PAGEdge::PAGKindToEdgeSetMapTy | InEdgeKindToSetMap |
PAGEdge::PAGKindToEdgeSetMapTy | OutEdgeKindToSetMap |
bool | isTLPointer |
bool | isATPointer |
top-level pointer More... | |
Friends | |
raw_ostream & | operator<< (raw_ostream &o, const PAGNode &node) |
Overloading operator << for dumping PAGNode value. More... | |
enum SVF::PAGNode::PNODEK |
Nine kinds of PAG nodes ValNode: llvm pointer value ObjNode: memory object RetNode: unique return node Vararg: unique node for vararg parameter GepValNode: tempory gep value node for field sensitivity GepValNode: tempory gep obj node for field sensitivity FIObjNode: for field insensitive analysis DummyValNode and DummyObjNode: for non-llvm-value node Clone*Node: objects created by TBHC.
Enumerator | |
---|---|
ValNode | |
ObjNode | |
RetNode | |
VarargNode | |
GepValNode | |
GepObjNode | |
FIObjNode | |
DummyValNode | |
DummyObjNode | |
CloneGepObjNode | |
CloneFIObjNode | |
CloneDummyObjNode |
Definition at line 59 of file PAGNode.h.
address-taken pointer
Constructor
PAGNode constructor
Definition at line 1018 of file PAG.cpp.
|
inlinevirtual |
|
inline |
add methods of the components
Definition at line 237 of file PAGNode.h.
|
inline |
Definition at line 244 of file PAGNode.h.
|
inlinevirtual |
|
inline |
Get incoming PAG edges.
Definition at line 160 of file PAGNode.h.
|
inline |
Get incoming PAGEdge iterator.
Definition at line 193 of file PAGNode.h.
|
inline |
Get incoming PAGEdge iterator.
Definition at line 201 of file PAGNode.h.
|
virtual |
|
inline |
Get outgoing PAG edges.
Definition at line 166 of file PAGNode.h.
|
inline |
Get outgoing PAGEdge iterator.
Definition at line 219 of file PAGNode.h.
|
inline |
Get outgoing PAGEdge iterator.
Definition at line 227 of file PAGNode.h.
|
inlinevirtual |
Return type of the value.
Reimplemented in SVF::GepObjPN, SVF::GepValPN, and SVF::ObjPN.
Definition at line 102 of file PAGNode.h.
|
inline |
Get/has methods of the components.
Definition at line 93 of file PAGNode.h.
|
pure virtual |
Get name of the LLVM value.
Implemented in SVF::CloneFIObjPN, SVF::CloneGepObjPN, SVF::CloneDummyObjPN, SVF::DummyObjPN, SVF::DummyValPN, SVF::VarArgPN, SVF::RetPN, SVF::FIObjPN, SVF::GepObjPN, SVF::GepValPN, SVF::ObjPN, and SVF::ValPN.
|
inline |
Has incoming PAG edges.
Definition at line 172 of file PAGNode.h.
|
inline |
Has incoming VariantGepEdges.
Definition at line 182 of file PAGNode.h.
|
inline |
Has outgoing PAG edges.
Definition at line 209 of file PAGNode.h.
|
inline |
|
inline |
Whether it is constant data, i.e., "0", "1.001", "str" or llvm's metadata, i.e., metadata !4087
Definition at line 130 of file PAGNode.h.
bool PAGNode::isIsolatedNode | ( | ) | const |
|
inlinevirtual |
Whether it is a pointer.
Definition at line 114 of file PAGNode.h.
|
inline |
|
virtual |
Reimplemented in SVF::CloneFIObjPN, SVF::CloneGepObjPN, SVF::CloneDummyObjPN, SVF::DummyObjPN, SVF::DummyValPN, SVF::VarArgPN, SVF::RetPN, SVF::FIObjPN, SVF::GepObjPN, SVF::GepValPN, SVF::ObjPN, and SVF::ValPN.
Definition at line 46 of file PAG.cpp.
|
friend |
|
protected |
|
protected |
|
protected |