ClearBlue
|
#include <SymbolicExprGraph.h>
Public Member Functions | |
Value * | getLLVMValue () const |
SEGValue * | getSEGValue () 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 | |
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 |
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 SymbolicExprGraph * | getParentGraph () const |
SymbolicExprGraph * | getParentGraph () |
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 |
SEGValue * | segValue = 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 } |
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)
|
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
|
protected |
The llvm value corresponding to the node It may be nullptr