ClearBlue
|
The node base of symbolic expression graph. More...
#include <SymbolicExprGraph.h>
Data Structures | |
class | ValueFlowIterator |
Public Member Functions | |
SEGNodeBase (PersistedSEGNodeBase *Node, SymbolicExprGraph *SEG) | |
virtual void | assembleSEGObject (std::map< int, SEGObject * > &FuncSEGObjMap) |
Assemble the SEG object's related objects. More... | |
Type * | getLLVMType () const |
get the type size of the node | |
uint64_t | getTypeSize () const |
get the type size of the node | |
bool | isVectorTy () const |
check whether LLVMType is vector type | |
bool | isPointerTy () const |
bool | isSized () const |
bool | isStructTy () const |
SEGType * | getSEGType () const |
unsigned | getVectorNumElements () const |
check the number of elements in LLVMType | |
SEGNodeBase * | getChild (unsigned I) const |
float | getConfidence (const SEGNodeBase *ParentNode) const |
unsigned | getNumChildren () const |
unsigned | getNumParents () const |
void | addChild (SEGNodeBase *N, float Confidence=1.0f) |
void | eraseAllChildren () |
void | addUseSite (SEGSiteBase *U) |
virtual bool | isTerminalNode () const |
SEGRegionNode * | getRegion () const |
bool | containsParentNode (const SEGNodeBase *N) const |
const std::string & | getDescription () const |
virtual void | dot (raw_fd_ostream &O) const =0 |
Dot its self to the given output stream. | |
ValueFlowIterator | vflow_begin () const |
ValueFlowIterator | vflow_end () const |
key_iterator< std::map< const SEGNodeBase *, float >::const_iterator > | parent_begin () const |
key_iterator< std::map< const SEGNodeBase *, float >::const_iterator > | parent_end () const |
iterator_range< std::map< const SEGNodeBase *, float >::const_iterator > | parents () const |
std::vector< SEGNodeBase * >::const_iterator | child_begin () const |
std::vector< SEGNodeBase * >::const_iterator | child_end () const |
iterator_range< std::vector< SEGNodeBase * >::const_iterator > | children () const |
std::map< const SEGNodeBase *, float >::const_iterator | parent_confidence_begin () const |
std::map< const SEGNodeBase *, float >::const_iterator | parent_confidence_end () const |
size_t | child_size () const |
size_t | parent_size () const |
std::vector< SEGSiteBase * >::const_iterator | use_site_begin () const |
std::vector< SEGSiteBase * >::const_iterator | use_site_end () const |
iterator_range< std::vector< SEGSiteBase * >::const_iterator > | use_sites () |
size_t | use_site_size () const |
Public Member Functions inherited from SEGObject | |
SEGObject (SEGObjectKind OK, SymbolicExprGraph *SEG, BasicBlock *BB) | |
SEGObject (PersistedSEGObject *Obj, SymbolicExprGraph *SEG) | |
virtual Value * | getLLVMDbgValue () const |
virtual WrappedValue * | getWrappedLLVMDbgValue () const |
virtual Instruction * | getLLVMDbgInstruction () const |
virtual WrappedInstruction * | getWrappedLLVMDbgInstruction () const |
SEGObjectKind | getKind () const |
int | getSEGIndex () const |
int | getObjIndex () const |
const char * | getKindName () const |
BasicBlock * | getParentBasicBlock () const |
WrappedBasicBlock * | getWrappedParentBasicBlock () const |
Function * | getParentFunction () const |
const SymbolicExprGraph * | getParentGraph () const |
SymbolicExprGraph * | getParentGraph () |
virtual PersistedSEGObject * | createPersistedObject () const =0 |
virtual void | persistSEGData (PersistedSymbolicExprGraph *PersistedSEG) |
bool | isFromLibrary () const |
virtual std::string | getSrcFile () const |
virtual std::int32_t | getSrcLine () const |
virtual std::string | getAuxiliaryDebugStr () const |
Static Public Member Functions | |
static bool | classof (const SEGObject *N) |
Protected Member Functions | |
SEGNodeBase (SEGObjectKind K, Type *Ty, SymbolicExprGraph *SEG, BasicBlock *BB) | |
void | setDescription (std::string &Desc) |
Friends | |
class | SymbolicExprGraph |
raw_ostream & | operator<< (llvm::raw_ostream &Out, const SEGNodeBase &N) |
Additional Inherited Members | |
Public Types inherited from SEGObject | |
enum | SEGObjectKind { SEGOBJK_NodeBegin, SEGOBJK_OperandBegin, SEGOBJK_ArgumentBegin, SEGOBJK_CommonArgument, SEGOBJK_VarArgument, SEGOBJK_PseudoArgument, SEGOBJK_ArgumentEnd, SEGOBJK_CallSiteOutputBegin, SEGOBJK_CallSiteCommonOutput, SEGOBJK_CallSitePseudoOutput, SEGOBJK_CallSiteOutputEnd, SEGOBJK_ReturnBegin, SEGOBJK_CommonReturn, SEGOBJK_PseudoReturn, SEGOBJK_ReturnEnd, SEGOBJK_LoadMem, SEGOBJK_StoreMem, SEGOBJK_Phi, SEGOBJK_Region, SEGOBJK_SimpleOperand, SEGOBJK_Undef, SEGOBJK_CallSitePseudoInput, SEGOBJK_CallSiteSummaryArgument, SEGOBJK_CallSiteSummaryReturn, SEGOBJK_OperandEnd, SEGOBJK_OpcodeBegin, SEGOBJK_BinaryWithIntConst, SEGOBJK_Cast, SEGOBJK_SimpleOpcode, SEGOBJK_OpcodeEnd, SEGOBJK_NodeEnd, SEGOBJK_SiteBegin, SEGOBJK_CallSite, SEGOBJK_ReturnSite, SEGOBJK_SimpleSiteBegin, SEGOBJK_GEPSite, SEGOBJK_DereferenceSite, SEGOBJK_DivSite, SEGOBJK_CmpSite, SEGOBJK_AllocSite, SEGOBJK_SimpleSiteEnd, SEGOBJK_SiteEnd } |
Protected Attributes inherited from SEGObject | |
PersistedSEGObject * | PersistedObj = nullptr |
the persistence object | |
The node base of symbolic expression graph.
SEGNodeBase::SEGNodeBase | ( | PersistedSEGNodeBase * | Node, |
SymbolicExprGraph * | SEG | ||
) |
A constructor specially designed for persistence Use the persistence obj to initialize SEGNodeBase
|
protected |
A constructor with node type, parent symbolic graph and the block where it is defined. It is private. Do not initialize the base class directly
|
virtual |
Assemble the SEG object's related objects.
initialize the children and parents
initialize the use sites
initialize the region
Implements SEGObject.
Reimplemented in SEGOpcodeNode, SEGOperandNode, SEGPseudoArgumentNode, SEGVarArgumentNode, SEGCallSitePseudoOutputNode, SEGPseudoReturnNode, SEGCommonReturnNode, SEGCallSiteCommonOutputNode, SEGCommonArgumentNode, SEGCallSitePseudoInputNode, SEGRegionNode, SEGPhiNode, SEGReturnNode, SEGStoreMemNode, SEGLoadMemNode, SEGBinaryWithIntConstNode, SEGCallSiteReturnSummaryNode, SEGSimpleOperandNode, SEGCallSiteOutputNode, SEGArgumentNode, SEGCastNode, SEGSimpleOpcodeNode, SEGCallSiteArgumentSummaryNode, and SEGUndefNode.