ClearBlue
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends
SEGOperandNode Class Referenceabstract

#include <SymbolicExprGraph.h>

Inheritance diagram for SEGOperandNode:
Inheritance graph
[legend]
Collaboration diagram for SEGOperandNode:
Collaboration graph
[legend]

Public Member Functions

Value * getLLVMValue () const
 
SEGValuegetSEGValue () const
 
void dot (raw_fd_ostream &O) const override
 Dot its self to the given output stream.
 
virtual Value * getLLVMDbgValue () const override
 
- Public Member Functions inherited from SEGNodeBase
Type * getLLVMType () const
 get the type size of the node
 
SEGNodeBasegetChild (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
 
SEGRegionNodegetRegion () const
 
bool containsParentNode (const SEGNodeBase *N) const
 
const std::string & getDescription () const
 
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, bool fromDisk)
 
virtual Instruction * getLLVMDbgInstruction () const
 
SEGObjectKind getKind () const
 
int64_t getSEGIndex () const
 
void setObjIndex (int64_t index)
 
int64_t getObjIndex () const
 
const char * getKindName () const
 
BasicBlock * getParentBasicBlock () const
 
Function * getParentFunction () const
 
const SymbolicExprGraphgetParentGraph () const
 
SymbolicExprGraphgetParentGraph ()
 

Static Public Member Functions

static bool classof (const SEGObject *N)
 
- Static Public Member Functions inherited from SEGNodeBase
static bool classof (const SEGObject *N)
 

Protected Member Functions

 SEGOperandNode (SEGObjectKind K, Type *Ty, SymbolicExprGraph *SEG, BasicBlock *BB, bool fromDisk)
 A node whose value which will be set to null.
 
 SEGOperandNode (SEGObjectKind K, Value *Val, Type *Ty, SymbolicExprGraph *SEG, BasicBlock *BB, bool fromDisk)
 
- Protected Member Functions inherited from SEGNodeBase
 SEGNodeBase (SEGObjectKind K, Type *Ty, SymbolicExprGraph *SEG, BasicBlock *BB, bool fromDisk)
 
void setDescription (std::string &Desc)
 

Protected Attributes

Value * LLVMValue = nullptr
 
SEGValuesegValue = nullptr
 

Friends

class SymbolicExprGraph
 The class only can be initialized in the seg graph.
 
class SEGHash
 
raw_ostream & operator<< (llvm::raw_ostream &Out, const SEGOperandNode &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
}
 

Detailed Description

The operand node of symbolic expression graph Each node has a corresponding llvm value (may be nullptr), as well as the value's type (cannot be nullptr)

Constructor & Destructor Documentation

◆ SEGOperandNode()

SEGOperandNode::SEGOperandNode ( SEGObjectKind  K,
Value *  Val,
Type *  Ty,
SymbolicExprGraph SEG,
BasicBlock *  BB,
bool  fromDisk 
)
protected

Note that when val is an llvm constant, users should do the following pre-process.
Global Value:
Please assign constant int values to them
Constant pointer null & undef:
A zero constant int (bit width should be the same as the type)
constant int/fp:
Use them directly
Other composite constant types:
Transform it to a bit vector first, and then compute the corresponding constant int of the bit vector. If the composite type contains floating point type, we model the floating point constant in the composite constant as integer without changing type size. E.g. {intN_t x=2, float y=1.2} is modeled as {intN_t x = 2, int' y = 1}, here sizeof(float) == sizeof(int')
The opcode node's llvm type should be the same as the result's type of the operation

Field Documentation

◆ LLVMValue

Value* SEGOperandNode::LLVMValue = nullptr
protected

The llvm value corresponding to the node It may be nullptr


The documentation for this class was generated from the following files: