ClearBlue
Data Structures | Public Types | Public Member Functions | Friends
SymbolicExprGraph Class Reference

Data Structures

class  ArgumentIterator
 
struct  CDGCond
 
class  ReturnIterator
 

Public Types

typedef std::vector< SEGCallSite * >::const_iterator SEGCallSiteIterator
 

Public Member Functions

int64_t getSEGIndex () const
 
template<class T >
T * getSEGObject (int64_t index)
 
size_t getNumCommonArgument () const
 
size_t getNumPseudoArgument () const
 
size_t getNumVarArgument () const
 
size_t getNumPseudoReturn () const
 
bool hasCommonReturnNode () const
 
const SEGCommonReturnNodegetCommonReturn () const
 
const SEGPseudoReturnNodegetPseudoReturn (size_t Index) const
 
const SEGCommonArgumentNodegetCommonArgument (size_t Index) const
 
const SEGPseudoArgumentNodegetPseudoArgument (size_t Index) const
 
const SEGVarArgumentNodegetVarArgument (size_t Index) const
 
bool isSummaryArgument (const SEGNodeBase *Node) const
 
int getSummaryArgumentAPDepth (const SEGNodeBase *Node) const
 
std::unordered_set< SEGNodeBase * > * getSummaryArgument (int APDepth) const
 
bool isSummaryReturn (const SEGNodeBase *Node) const
 
int getSummaryReturnAPDepth (const SEGNodeBase *Node) const
 
std::unordered_set< SEGNodeBase * > * getSummaryReturn (int APDepth) const
 
bool isDirectlyPassedToCaller (const SEGNodeBase *Node) const
 
bool isDirectlyPassedFromCaller (const SEGNodeBase *Node) const
 
 SymbolicExprGraph (Function *)
 
Function * getBaseFunc () const
 
template<class SiteTy >
SiteTy * findSite (Instruction *I) const
 
template<class SiteTy >
SiteTy * findSite (SEGValue *sValue) const
 Get site node based on Value and specific comparison method. More...
 
SEGOperandNodefindNode (Value *) const
 
SEGOperandNodefindNode (SEGValue *) const
 Get operand node based on Value. More...
 
SEGRegionNodefindUnitRegion (SEGNodeBase *cond_node, bool cond) const
 Return nullptr if the node does not exist.
 
SEGRegionNodefindAndRegion (SEGRegionNode *region1, SEGRegionNode *region2) const
 Return nullptr if the node does not exist.
 
SEGRegionNodefindOrRegion (SEGRegionNode *region1, SEGRegionNode *region2) const
 Return nullptr if the node does not exist.
 
SEGRegionNodefindNotRegion (SEGRegionNode *region1) const
 Return nullptr if the node does not exist.
 
const std::set< CDGCond > * getBlockCond (BasicBlock *BB) const
 
void dot (const char *FileName) const
 Dot this graph to a file with filename.
 
void dot (std::vector< const SEGNodeBase * > Srcs, const char *FileName) const
 Dot value flow from the given source nodes.
 
void validate ()
 validate this is a DAG
 
SEGRegionNodefindOrCreateRegionForBB (BasicBlock *BB)
 
SEGRegionNodefindRegionForBB (BasicBlock *BB) const
 
std::unordered_map< Value *, SEGOperandNode * >::const_iterator value_node_begin () const
 
std::unordered_map< Value *, SEGOperandNode * >::const_iterator value_node_end () const
 
std::vector< std::pair< Value *, SEGOperandNode * > >::const_iterator value_node_pair_begin () const
 
std::vector< std::pair< Value *, SEGOperandNode * > >::const_iterator value_node_pair_end () const
 
std::set< SEGNodeBase * >::const_iterator non_value_node_begin () const
 
std::set< SEGNodeBase * >::const_iterator non_value_node_end () const
 
std::map< Instruction *, SEGSiteBase * >::const_iterator inst_site_begin () const
 
std::map< Instruction *, SEGSiteBase * >::const_iterator inst_site_end () const
 
std::map< std::pair< Instruction *, Value * >, SEGStoreMemNode * >::const_iterator store_mem_node_begin () const
 
std::map< std::pair< Instruction *, Value * >, SEGStoreMemNode * >::const_iterator store_mem_node_end () const
 
std::map< Instruction *, SEGSiteBase * >::const_iterator site_begin () const
 
std::map< Instruction *, SEGSiteBase * >::const_iterator site_end () const
 
std::vector< SEGObject * >::const_iterator node_begin () const
 
std::vector< SEGObject * >::const_iterator node_end () const
 
ReturnIterator return_begin () const
 
ReturnIterator return_end () const
 
ReturnIterator pseudo_return_begin () const
 
ReturnIterator pseudo_return_end () const
 
ArgumentIterator arg_begin () const
 
ArgumentIterator arg_end () const
 
ArgumentIterator common_arg_begin () const
 
ArgumentIterator common_arg_end () const
 
ArgumentIterator pseudo_arg_begin () const
 
ArgumentIterator pseudo_arg_end () const
 
ArgumentIterator var_arg_begin () const
 
ArgumentIterator var_arg_end () const
 
SEGCallSiteIterator seg_callsite_begin () const
 
SEGCallSiteIterator seg_callsite_end () const
 

Friends

class SEGRegionNode
 
class SymbolicExprGraphBuilder
 
class IntraFalcon
 
class MantaIntraFalcon
 
class PTGraph
 
class SEGObject
 
class OCValueFlowBuilder
 
class SEGSerializer
 
class FalconPlus::AbstractCond
 
class FalconPlus::RegionCond
 
class FalconPlus::FreeCond
 
class FalconPlus::BitCondVec
 
class FalconPlus::IntraFalcon
 
class FalconPlus::AbstractCondPtr
 
class FalconPlus::FalconAA
 

Member Function Documentation

◆ findNode() [1/2]

SEGOperandNode * SymbolicExprGraph::findNode ( SEGValue sValue) const

Get operand node based on Value.

Parameters
sValueSEGValue to be compared
Here is the call graph for this function:

◆ findNode() [2/2]

SEGOperandNode * SymbolicExprGraph::findNode ( Value *  Val) const

Find node only. Return nullptr if the node does not exist

◆ findSite() [1/2]

template<class SiteTy >
SiteTy* SymbolicExprGraph::findSite ( Instruction *  I) const
inline

find a special use site according to the specified type

◆ findSite() [2/2]

template<class SiteTy >
SiteTy* SymbolicExprGraph::findSite ( SEGValue sValue) const
inline

Get site node based on Value and specific comparison method.

Template Parameters
SiteTythe specific site type that is applied to site node
Parameters
sValueSEGValue to be compared
Here is the call graph for this function:

◆ getBlockCond()

const std::set<CDGCond>* SymbolicExprGraph::getBlockCond ( BasicBlock *  BB) const
inline

See SymbolicExprGraph::blockCondMap. Note that it will return nullptr, if blockCondMap does not contain b.


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