Static Value-Flow Analysis
Loading...
Searching...
No Matches
SVF Namespace Reference

for isBitcode More...

Namespaces

namespace  cppUtil
namespace  LLVMUtil
namespace  DOT
namespace  GraphProgram
namespace  SVFUtil

Classes

class  BreakConstantGEPs
class  MergeFunctionRets
class  CHGBuilder
class  ICFGBuilder
class  LLVMLoopAnalysis
class  LLVMModuleSet
class  ObjTypeInference
class  SVFIRBuilder
class  SymbolTableBuilder
class  AbstractState
class  AbstractValue
class  AddressValue
class  ICFGWTO
class  IntervalValue
class  BoundedInt
 A class representing a bounded 64-bit integer. More...
class  BoundedDouble
class  RelationSolver
class  RelExeState
class  AbsExtAPI
 Handles external API calls and manages abstract states. More...
class  FILOWorkList
class  AbstractInterpretation
class  AEDetector
 Base class for all detectors. More...
class  AEException
 Exception class for handling errors in Abstract Execution. More...
class  BufOverflowDetector
 Detector for identifying buffer overflow issues. More...
class  NullptrDerefDetector
class  AEStat
 AEStat: Statistic for AE. More...
class  AEWTO
class  SemiSparseAbstractInterpretation
class  FullSparseAbstractInterpretation
class  CFGNormalizer
class  GrammarBase
class  CFGrammar
class  CFLFIFOWorkList
class  CFLAlias
class  POCRAlias
class  POCRHybrid
class  CFLBase
 CFL Client Base Class. More...
class  CFLGramGraphChecker
class  CFLGraphBuilder
class  AliasCFLGraphBuilder
 AliasCFLGraphBuilder: a CFLGraphBuilder specialized for handling aliasing. More...
class  VFCFLGraphBuilder
 VFCFLGraphBuilder: a CFLGraphBuilder specialized for handling value-flow. More...
class  CFLSolver
class  POCRSolver
 Solver Utilize CFLData. More...
class  POCRHybridSolver
 Solver Utilize Hybrid Representation of Graph. More...
class  CFLStat
class  CFLSVFGBuilder
class  CFLVF
class  GrammarBuilder
class  ContextDDA
class  DDAClient
class  FunptrDDAClient
class  AliasDDAClient
class  DDAPass
class  DDAStat
class  DDAVFSolver
class  FlowDDA
class  BasicBlockEdge
class  SVFBasicBlock
class  BasicBlockGraph
class  CallGraphEdge
class  CallGraphNode
class  CallGraph
struct  GenericGraphTraits< SVF::CallGraphNode * >
struct  GenericGraphTraits< Inverse< SVF::CallGraphNode * > >
 Inverse GenericGraphTraits specializations for call graph node, it is used for inverse traversal. More...
struct  GenericGraphTraits< SVF::CallGraph * >
class  CDGEdge
class  CDGNode
class  CDG
struct  GenericGraphTraits< SVF::CDGNode * >
struct  GenericGraphTraits< Inverse< SVF::CDGNode * > >
 Inverse GenericGraphTraits specializations for call graph node, it is used for inverse ICFGTraversal. More...
struct  GenericGraphTraits< SVF::CDG * >
struct  DOTGraphTraits< SVF::CDG * >
class  CFLEdge
class  CFLNode
class  CFLGraph
struct  GenericGraphTraits< SVF::CFLNode * >
struct  GenericGraphTraits< Inverse< SVF::CFLNode * > >
 Inverse GenericGraphTraits specializations for call graph node, it is used for inverse traversal. More...
struct  GenericGraphTraits< SVF::CFLGraph * >
class  CommonCHGraph
 Common base for class hierarchy graph. Only implements what PointerAnalysis needs. More...
class  CHEdge
class  CHNode
class  CHGraph
struct  GenericGraphTraits< SVF::CHNode * >
struct  GenericGraphTraits< Inverse< SVF::CHNode * > >
struct  GenericGraphTraits< SVF::CHGraph * >
class  ConstraintGraph
struct  GenericGraphTraits< SVF::ConstraintNode * >
struct  GenericGraphTraits< Inverse< SVF::ConstraintNode * > >
 Inverse GenericGraphTraits specializations for Value flow node, it is used for inverse traversal. More...
struct  GenericGraphTraits< SVF::ConstraintGraph * >
class  ConstraintEdge
class  AddrCGEdge
class  CopyCGEdge
class  StoreCGEdge
class  LoadCGEdge
class  GepCGEdge
class  NormalGepCGEdge
class  VariantGepCGEdge
class  ConstraintNode
struct  DefaultDOTGraphTraits
struct  DOTGraphTraits
class  GenericGraphWriter
class  GenericGraphReader
class  GenericEdge
class  GenericNode
class  GenericGraph
class  mapped_iter
struct  GenericGraphTraits< SVF::GenericNode< NodeTy, EdgeTy > * >
struct  GenericGraphTraits< Inverse< SVF::GenericNode< NodeTy, EdgeTy > * > >
struct  GenericGraphTraits< SVF::GenericGraph< NodeTy, EdgeTy > * >
class  GraphPrinter
struct  GenericGraphTraits
struct  Inverse
struct  GenericGraphTraits< Inverse< Inverse< T > > >
class  GraphWriter
class  ICFG
struct  GenericGraphTraits< SVF::ICFGNode * >
struct  GenericGraphTraits< Inverse< SVF::ICFGNode * > >
 Inverse GenericGraphTraits specializations for call graph node, it is used for inverse traversal. More...
struct  GenericGraphTraits< SVF::ICFG * >
class  ICFGEdge
class  IntraCFGEdge
class  CallCFGEdge
class  RetCFGEdge
class  ICFGNode
class  GlobalICFGNode
class  IntraICFGNode
class  InterICFGNode
class  FunEntryICFGNode
class  FunExitICFGNode
class  CallICFGNode
class  RetICFGNode
class  ICFGStat
class  IRGraph
struct  GenericGraphTraits< SVF::SVFVar * >
struct  GenericGraphTraits< Inverse< SVF::SVFVar * > >
 Inverse GenericGraphTraits specializations for SVFIR node, it is used for inverse traversal. More...
struct  GenericGraphTraits< SVF::IRGraph * >
class  SCCDetection
class  SlicedICFGView
class  SlicedPAGView
class  SlicedThreadCallGraphView
class  SlicedSVFGView
class  SlicedSVFIRView
struct  SlicedNodeRef
struct  SlicedICFGEdgeRef
class  SlicedICFGEdgeIterImpl
class  SlicedICFGChildIterImpl
class  SlicedICFGNodeIter
struct  SlicedCallGraphEdgeRef
class  SlicedCGEdgeIterImpl
class  SlicedCGChildIterImpl
class  SlicedCGNodeIter
struct  SlicedPAGEdgeRef
class  SlicedPAGEdgeIterImpl
class  SlicedPAGChildIterImpl
class  SlicedPAGNodeIter
struct  SlicedSVFGEdgeRef
class  SlicedSVFGEdgeIterImpl
class  SlicedSVFGChildIterImpl
class  SlicedSVFGNodeIter
struct  GenericGraphTraits< const SlicedICFGView * >
struct  GenericGraphTraits< Inverse< const SlicedICFGView * > >
struct  GenericGraphTraits< const SlicedThreadCallGraphView * >
struct  GenericGraphTraits< Inverse< const SlicedThreadCallGraphView * > >
struct  GenericGraphTraits< const SlicedPAGView * >
struct  GenericGraphTraits< Inverse< const SlicedPAGView * > >
struct  GenericGraphTraits< const SlicedSVFGView * >
struct  GenericGraphTraits< Inverse< const SlicedSVFGView * > >
class  SparseObjEdge
 An edge carries the source packed Obj to the target ICFG location. More...
class  SparseObjNode
class  SparseObjGraph
struct  GenericGraphTraits< SparseObjNode * >
struct  GenericGraphTraits< Inverse< SparseObjNode * > >
struct  GenericGraphTraits< SparseObjGraph * >
class  SVFG
struct  GenericGraphTraits< SVF::SVFG * >
class  IndirectSVFGEdge
class  IntraIndSVFGEdge
class  CallIndSVFGEdge
class  RetIndSVFGEdge
class  ThreadMHPIndSVFGEdge
class  MRSVFGNode
class  FormalINSVFGNode
class  FormalOUTSVFGNode
class  ActualINSVFGNode
class  ActualOUTSVFGNode
class  MSSAPHISVFGNode
class  IntraMSSAPHISVFGNode
class  InterMSSAPHISVFGNode
class  DummyVersionPropSVFGNode
class  SVFGOPT
class  MemSSAStat
class  SVFGStat
class  ThreadForkEdge
class  ThreadJoinEdge
class  HareParForEdge
class  ThreadCallGraph
struct  GenericGraphTraits< SVF::ThreadCallGraph * >
class  VFG
struct  GenericGraphTraits< SVF::VFGNode * >
struct  GenericGraphTraits< Inverse< SVF::VFGNode * > >
 Inverse GenericGraphTraits specializations for call graph node, it is used for inverse traversal. More...
struct  GenericGraphTraits< SVF::VFG * >
class  VFGEdge
class  DirectSVFGEdge
class  IntraDirSVFGEdge
class  CallDirSVFGEdge
class  RetDirSVFGEdge
class  VFGNode
class  StmtVFGNode
class  LoadVFGNode
class  StoreVFGNode
class  CopyVFGNode
class  CmpVFGNode
class  BinaryOPVFGNode
class  UnaryOPVFGNode
class  BranchVFGNode
class  GepVFGNode
class  PHIVFGNode
class  IntraPHIVFGNode
class  AddrVFGNode
class  ArgumentVFGNode
class  ActualParmVFGNode
class  FormalParmVFGNode
class  ActualRetVFGNode
class  FormalRetVFGNode
class  InterPHIVFGNode
class  NullPtrVFGNode
class  WTO
class  WTONode
class  WTOCycle
class  WTOComponentVisitor
struct  has_nodetype
struct  has_nodetype< T, std::void_t< typename T::NodeType > >
struct  has_edgetype
struct  has_edgetype< T, std::void_t< typename T::EdgeType > >
class  WTOCycleDepth
class  WTOComponent
class  PTData
class  DiffPTData
class  DFPTData
class  VersionedPTData
class  AccessPath
class  CondVar
class  CondStdSet
class  CondPointsToSet
class  MutableDFPTData
class  MutablePTData
 PTData implemented using points-to sets which are created once and updated continuously. More...
class  MutableDiffPTData
 DiffPTData implemented with points-to sets which are updated continuously. More...
class  MutableIncDFPTData
 Incremental version of the mutable data-flow points-to data structure. More...
class  MutableVersionedPTData
class  PersistentPointsToCache
class  PersistentDFPTData
 DFPTData backed by a PersistentPointsToCache. More...
class  PersistentIncDFPTData
 Incremental version of the persistent data-flow points-to data structure. More...
class  PersistentVersionedPTData
class  PersistentPTData
 PTData backed by a PersistentPointsToCache. More...
class  PersistentDiffPTData
 DiffPTData implemented with a persistent points-to backing. More...
class  PointerAnalysis
class  BVDataPTAImpl
class  CondPTAImpl
class  PointsTo
class  SVFLoop
class  DistinctMRG
class  IntraDisjointMRG
class  InterDisjointMRG
class  MemRegion
 Memory Region class. More...
class  MRGenerator
class  MemSSA
class  MRVer
class  MSSAMU
class  LoadMU
class  CallMU
class  RetMU
class  MSSADEF
class  MSSACHI
class  StoreCHI
class  CallCHI
class  EntryCHI
class  MSSAPHI
class  SVFGBuilder
class  FSMPTA
class  LockAnalysis
class  MHP
class  ForkJoinAnalysis
class  MTA
class  SlicedMTA
struct  ValueFlowSlice
class  SlicedTCT
class  MTASlicerBase
class  MultiStageSlicer
class  SingleSlicer
class  ScopedPhaseTimer
class  MTAStat
class  MTASVFGBuilder
class  TCTEdge
class  TCTNode
class  TCT
struct  GenericGraphTraits< SVF::TCTNode * >
struct  GenericGraphTraits< Inverse< SVF::TCTNode * > >
 Inverse GenericGraphTraits specializations for Value flow node, it is used for inverse traversal. More...
struct  GenericGraphTraits< SVF::TCT * >
class  DoubleFreeChecker
class  FileChecker
class  LeakChecker
class  ProgSlice
class  SaberCheckerAPI
class  SaberCondAllocator
class  SaberSVFGBuilder
class  SrcSnkDDA
class  SrcSnkSolver
class  ObjTypeInfo
class  PAGBuilderFromFile
class  SVFIR
class  SVFStmt
class  AssignStmt
class  AddrStmt
class  CopyStmt
class  StoreStmt
class  LoadStmt
class  GepStmt
class  RetPE
class  MultiOpndStmt
class  CallPE
class  PhiStmt
class  SelectStmt
class  CmpStmt
class  BinaryOPStmt
class  UnaryOPStmt
class  BranchStmt
class  TDForkPE
class  TDJoinPE
class  StInfo
class  SVFType
class  SVFPointerType
class  SVFIntegerType
class  SVFFunctionType
class  SVFStructType
class  SVFArrayType
class  SVFOtherType
class  SVFValue
class  SVFVar
class  ValVar
class  ObjVar
class  ArgValVar
 Class representing a function argument variable in the SVFIR. More...
class  GepValVar
class  BaseObjVar
class  GepObjVar
class  HeapObjVar
 Class representing a heap object variable in the SVFIR. More...
class  StackObjVar
 Represents a stack-allocated object variable in the SVFIR (SVF Intermediate Representation) @inherits BaseObjVar. More...
class  FunObjVar
class  FunValVar
class  GlobalValVar
class  ConstDataValVar
class  BlackHoleValVar
class  ConstFPValVar
class  ConstIntValVar
class  ConstNullPtrValVar
class  GlobalObjVar
class  ConstDataObjVar
class  ConstFPObjVar
class  ConstIntObjVar
class  ConstNullPtrObjVar
class  RetValPN
class  VarArgValPN
class  DummyValVar
class  IntrinsicValVar
class  AsmPCValVar
class  DummyObjVar
class  BitVector
class  CallGraphBuilder
class  CDGBuilder
class  CoreBitVector
struct  Hash< CoreBitVector >
class  CxtStmt
class  CxtThreadStmt
class  CxtThread
class  CxtProc
class  CxtThreadProc
class  DPItem
class  StmtDPItem
class  ContextCond
class  CxtStmtDPItem
class  CxtDPItem
class  ExtAPI
struct  Hash< NodePair >
class  GraphReachSolver
struct  Hash
 provide extra hash function for std::pair handling More...
struct  Hash< std::pair< S, T > >
class  iter_facade_base
class  iter_adaptor_base
struct  pointee_iter
class  pointer_iterator
class  iter_range
class  NodeIDAllocator
class  Options
 Carries around command line options. More...
class  PTAStat
struct  TrailingZerosCounter
struct  PopulationCounter
struct  LeadingZerosCounter
struct  PopulationCounter< T, 8 >
struct  SparseBitVectorElement
class  SparseBitVector
class  SVFBugEvent
class  GenericBug
class  BufferOverflowBug
class  FullBufferOverflowBug
class  PartialBufferOverflowBug
class  NeverFreeBug
class  PartialLeakBug
class  DoubleFreeBug
class  FileNeverCloseBug
class  FilePartialCloseBug
class  FullNullPtrDereferenceBug
class  PartialNullPtrDereferenceBug
class  SVFBugReport
class  SVFLoopAndDomInfo
class  SVFStat
class  ThreadAPI
class  List
class  FIFOWorkList
class  Z3Expr
class  AndersenBase
class  Andersen
class  AndersenWaveDiff
class  AndersenSCD
class  AndersenSFR
class  CSC
class  FlowSensitive
class  Steensgaard
class  TypeAnalysis
class  VersionedFlowSensitive
class  WPAFSSolver
class  WPASCCSolver
class  WPAMinimumSolver
class  WPAPass
class  WPASolver
class  AndersenStat
class  FlowSensitiveStat
class  VersionedFlowSensitiveStat
struct  DOTGraphTraits< CallGraph * >
struct  DOTGraphTraits< CFLGraph * >
struct  DOTGraphTraits< CHGraph * >
struct  DOTGraphTraits< ConstraintGraph * >
struct  DOTGraphTraits< ICFG * >
struct  DOTGraphTraits< IRGraph * >
struct  DOTGraphTraits< const SlicedICFGView * >
struct  DOTGraphTraits< const SlicedThreadCallGraphView * >
struct  DOTGraphTraits< const SlicedPAGView * >
struct  DOTGraphTraits< const SlicedSVFGView * >
struct  DOTGraphTraits< SparseObjGraph * >
struct  DOTGraphTraits< SVFG * >
struct  DOTGraphTraits< VFG * >
struct  DOTGraphTraits< TCT * >

Typedefs

typedef llvm::LLVMContext LLVMContext
typedef llvm::GlobalObject GlobalObject
typedef llvm::Use Use
typedef llvm::ModulePass ModulePass
typedef llvm::IRBuilder IRBuilder
typedef llvm::UnifyFunctionExitNodesPass UnifyFunctionExitNodes
typedef llvm::Value Value
 LLVM Basic classes.
typedef llvm::Type Type
typedef llvm::Module Module
typedef llvm::Function Function
typedef llvm::BasicBlock BasicBlock
typedef llvm::Instruction Instruction
typedef llvm::GlobalValue GlobalValue
typedef llvm::SMDiagnostic SMDiagnostic
typedef llvm::BlockAddress BlockAddress
typedef llvm::StructType StructType
 LLVM types.
typedef llvm::ArrayType ArrayType
typedef llvm::PointerType PointerType
typedef llvm::IntegerType IntegerType
typedef llvm::FunctionType FunctionType
typedef llvm::MDString MDString
typedef llvm::MetadataAsValue MetadataAsValue
typedef llvm::StructLayout StructLayout
typedef llvm::ConstantStruct ConstantStruct
typedef llvm::MemoryLocation MemoryLocation
typedef llvm::DataLayout DataLayout
typedef llvm::NamedMDNode NamedMDNode
 LLVM metadata and debug information.
typedef llvm::MDNode MDNode
typedef llvm::DISubprogram DISubprogram
typedef llvm::ConstantData ConstantData
typedef llvm::ConstantAggregate ConstantAggregate
typedef llvm::ConstantAggregateZero ConstantAggregateZero
typedef llvm::ConstantDataSequential ConstantDataSequential
typedef llvm::ConstantExpr ConstantExpr
typedef llvm::ConstantDataArray ConstantDataArray
typedef llvm::ConstantArray ConstantArray
typedef llvm::Constant Constant
typedef llvm::ConstantInt ConstantInt
typedef llvm::ConstantFP ConstantFP
typedef llvm::ConstantPointerNull ConstantPointerNull
typedef llvm::InlineAsm InlineAsm
typedef llvm::DSOLocalEquivalent DSOLocalEquivalent
typedef llvm::NoCFIValue NoCFIValue
typedef llvm::GlobalAlias GlobalAlias
typedef llvm::GlobalIFunc GlobalIFunc
typedef llvm::GlobalVariable GlobalVariable
typedef llvm::DominatorTree DominatorTree
 LLVM Dominators.
typedef llvm::DomTreeNode DomTreeNode
typedef llvm::DominanceFrontier DominanceFrontier
typedef llvm::PostDominatorTree PostDominatorTree
typedef llvm::DominanceFrontierBase< llvm::BasicBlock, false > DominanceFrontierBase
typedef llvm::Loop Loop
 LLVM Loop.
typedef llvm::LoopInfo LoopInfo
typedef llvm::User User
typedef llvm::Argument Argument
typedef llvm::CallBase CallBase
typedef llvm::CallInst CallInst
typedef llvm::StoreInst StoreInst
typedef llvm::LoadInst LoadInst
typedef llvm::AllocaInst AllocaInst
typedef llvm::AtomicCmpXchgInst AtomicCmpXchgInst
typedef llvm::AtomicRMWInst AtomicRMWInst
typedef llvm::BitCastInst BitCastInst
typedef llvm::BranchInst BranchInst
typedef llvm::SwitchInst SwitchInst
typedef llvm::CallBrInst CallBrInst
typedef llvm::ReturnInst ReturnInst
typedef llvm::CastInst CastInst
typedef llvm::CmpInst CmpInst
typedef llvm::ExtractValueInst ExtractValueInst
typedef llvm::ExtractElementInst ExtractElementInst
typedef llvm::GetElementPtrInst GetElementPtrInst
typedef llvm::InvokeInst InvokeInst
typedef llvm::ShuffleVectorInst ShuffleVectorInst
typedef llvm::PHINode PHINode
typedef llvm::IntToPtrInst IntToPtrInst
typedef llvm::InsertValueInst InsertValueInst
typedef llvm::FenceInst FenceInst
typedef llvm::FreezeInst FreezeInst
typedef llvm::UnreachableInst UnreachableInst
typedef llvm::InsertElementInst InsertElementInst
typedef llvm::LandingPadInst LandingPadInst
typedef llvm::ResumeInst ResumeInst
typedef llvm::SelectInst SelectInst
typedef llvm::VAArgInst VAArgInst
typedef llvm::VACopyInst VACopyInst
typedef llvm::VAEndInst VAEndInst
typedef llvm::VAStartInst VAStartInst
typedef llvm::BinaryOperator BinaryOperator
typedef llvm::UnaryOperator UnaryOperator
typedef llvm::UndefValue UndefValue
typedef llvm::GEPOperator GEPOperator
typedef std::pair< const BasicBlock *, const ConstantInt * > SuccBBAndCondValPair
typedef std::vector< SuccBBAndCondValPair > SuccBBAndCondValPairVec
typedef llvm::IntrinsicInst IntrinsicInst
typedef llvm::DbgInfoIntrinsic DbgInfoIntrinsic
typedef llvm::DbgVariableIntrinsic DbgVariableIntrinsic
typedef llvm::DbgDeclareInst DbgDeclareInst
typedef llvm::DbgValueInst DbgValueInst
typedef llvm::DbgLabelInst DbgLabelInst
typedef llvm::VPIntrinsic VPIntrinsic
typedef llvm::ConstrainedFPIntrinsic ConstrainedFPIntrinsic
typedef llvm::ConstrainedFPCmpIntrinsic ConstrainedFPCmpIntrinsic
typedef llvm::MinMaxIntrinsic MinMaxIntrinsic
typedef llvm::BinaryOpIntrinsic BinaryOpIntrinsic
typedef llvm::WithOverflowInst WithOverflowInst
typedef llvm::SaturatingInst SaturatingInst
typedef llvm::AtomicMemIntrinsic AtomicMemIntrinsic
typedef llvm::AtomicMemSetInst AtomicMemSetInst
typedef llvm::AtomicMemTransferInst AtomicMemTransferInst
typedef llvm::AtomicMemCpyInst AtomicMemCpyInst
typedef llvm::AtomicMemMoveInst AtomicMemMoveInst
typedef llvm::MemIntrinsic MemIntrinsic
typedef llvm::MemSetInst MemSetInst
typedef llvm::MemTransferInst MemTransferInst
typedef llvm::MemCpyInst MemCpyInst
typedef llvm::MemMoveInst MemMoveInst
typedef llvm::MemCpyInlineInst MemCpyInlineInst
typedef llvm::AnyMemIntrinsic AnyMemIntrinsic
typedef llvm::AnyMemSetInst AnyMemSetInst
typedef llvm::AnyMemTransferInst AnyMemTransferInst
typedef llvm::AnyMemCpyInst AnyMemCpyInst
typedef llvm::AnyMemMoveInst AnyMemMoveInst
typedef llvm::InstrProfIncrementInst InstrProfIncrementInst
typedef llvm::InstrProfIncrementInstStep InstrProfIncrementInstStep
typedef llvm::InstrProfValueProfileInst InstrProfValueProfileInst
typedef llvm::PseudoProbeInst PseudoProbeInst
typedef llvm::NoAliasScopeDeclInst NoAliasScopeDeclInst
typedef llvm::GCStatepointInst GCStatepointInst
typedef llvm::GCProjectionInst GCProjectionInst
typedef llvm::GCRelocateInst GCRelocateInst
typedef llvm::GCResultInst GCResultInst
typedef llvm::AssumeInst AssumeInst
typedef llvm::DIType DIType
typedef llvm::DICompositeType DICompositeType
typedef llvm::DIDerivedType DIDerivedType
typedef llvm::DebugInfoFinder DebugInfoFinder
typedef llvm::DISubroutineType DISubroutineType
typedef llvm::DIBasicType DIBasicType
typedef llvm::DISubrange DISubrange
typedef llvm::DINode DINode
typedef llvm::DINodeArray DINodeArray
typedef llvm::DITypeRefArray DITypeRefArray
typedef llvm::inst_iterator inst_iterator
typedef llvm::const_inst_iterator const_inst_iterator
typedef llvm::gep_type_iterator gep_type_iterator
typedef llvm::bridge_gep_iterator bridge_gep_iterator
typedef llvm::const_pred_iterator const_pred_iterator
typedef llvm::ScalarEvolutionWrapperPass ScalarEvolutionWrapperPass
typedef llvm::SCEVAddRecExpr SCEVAddRecExpr
typedef llvm::SCEVConstant SCEVConstant
typedef llvm::ScalarEvolution ScalarEvolution
typedef llvm::SCEV SCEV
typedef llvm::raw_fd_ostream raw_fd_ostream
 LLVM outputs.
typedef llvm::VectorType VectorType
typedef llvm::FunctionCallee FunctionCallee
typedef llvm::const_succ_iterator succ_const_iterator
 LLVM Iterators.
typedef WTOComponent< ICFG > ICFGWTOComp
typedef WTONode< ICFG > ICFGSingletonWTO
typedef WTOCycle< ICFG > ICFGCycleWTO
typedef GrammarBase::Symbol Label
typedef CxtStmtDPItem< SVFGNode > CxtLocDPItem
typedef StmtDPItem< SVFGNode > LocDPItem
typedef GenericEdge< SVFBasicBlock > GenericBasicBlockEdgeTy
typedef GenericNode< SVFBasicBlock, BasicBlockEdge > GenericBasicBlockNodeTy
typedef GenericGraph< SVFBasicBlock, BasicBlockEdge > GenericBasicBlockGraphTy
typedef GenericEdge< CallGraphNode > GenericPTACallGraphEdgeTy
typedef GenericNode< CallGraphNode, CallGraphEdge > GenericPTACallGraphNodeTy
typedef GenericGraph< CallGraphNode, CallGraphEdge > GenericPTACallGraphTy
typedef GenericEdge< CDGNode > GenericCDGEdgeTy
typedef GenericNode< CDGNode, CDGEdge > GenericCDGNodeTy
typedef std::vector< std::pair< NodeID, NodeID > > NodePairVector
typedef GenericGraph< CDGNode, CDGEdge > GenericCDGTy
typedef GenericEdge< CFLNode > GenericCFLEdgeTy
typedef GenericNode< CFLNode, CFLEdge > GenericCFLNodeTy
typedef GenericGraph< CFLNode, CFLEdge > GenericCFLGraphTy
 Edge-labeled graph for CFL Reachability analysis.
typedef Set< const GlobalObjVar * > VTableSet
typedef Set< const FunObjVar * > VFunSet
typedef GenericEdge< CHNode > GenericCHEdgeTy
typedef GenericNode< CHNode, CHEdge > GenericCHNodeTy
typedef GenericGraph< CHNode, CHEdge > GenericCHGraphTy
 class hierarchy graph
typedef GenericEdge< ConstraintNode > GenericConsEdgeTy
typedef GenericNode< ConstraintNode, ConstraintEdge > GenericConsNodeTy
typedef GenericGraph< ICFGNode, ICFGEdge > GenericICFGTy
typedef GenericEdge< ICFGNode > GenericICFGEdgeTy
typedef GenericNode< ICFGNode, ICFGEdge > GenericICFGNodeTy
typedef SVFVar PAGNode
typedef SVFStmt PAGEdge
using SlicedICFGNodeRef = SlicedNodeRef<SlicedICFGView, ICFGNode>
using SlicedCallGraphNodeRef = SlicedNodeRef<SlicedThreadCallGraphView, CallGraphNode>
using SlicedPAGNodeRef = SlicedNodeRef<SlicedPAGView, SVFVar>
using SlicedSVFGNodeRef = SlicedNodeRef<SlicedSVFGView, SVFGNode>
typedef GenericEdge< SparseObjNode > GenericSparseObjEdgeTy
typedef GenericNode< SparseObjNode, SparseObjEdge > GenericSparseObjNodeTy
typedef GenericGraph< SparseObjNode, SparseObjEdge > GenericSparseObjGraphTy
typedef VFGEdge SVFGEdge
typedef VFGNode SVFGNode
typedef ActualParmVFGNode ActualParmSVFGNode
typedef ActualRetVFGNode ActualRetSVFGNode
typedef FormalParmVFGNode FormalParmSVFGNode
typedef FormalRetVFGNode FormalRetSVFGNode
typedef NullPtrVFGNode NullPtrSVFGNode
typedef StmtVFGNode StmtSVFGNode
typedef AddrVFGNode AddrSVFGNode
typedef CopyVFGNode CopySVFGNode
typedef StoreVFGNode StoreSVFGNode
typedef LoadVFGNode LoadSVFGNode
typedef GepVFGNode GepSVFGNode
typedef PHIVFGNode PHISVFGNode
typedef IntraPHIVFGNode IntraPHISVFGNode
typedef InterPHIVFGNode InterPHISVFGNode
typedef GenericGraph< VFGNode, VFGEdge > GenericVFGTy
typedef GenericEdge< VFGNode > GenericVFGEdgeTy
typedef GenericNode< VFGNode, VFGEdge > GenericVFGNodeTy
typedef NodeID MRID
typedef NodeID MRVERID
typedef NodeID MRVERSION
typedef GenericEdge< TCTNode > GenericTCTEdgeTy
typedef GenericNode< TCTNode, TCTEdge > GenericTCTNodeTy
typedef GenericGraph< TCTNode, TCTEdge > GenericThreadCreateTreeTy
typedef GraphReachSolver< SVFG *, CxtDPItem > CFLSrcSnkSolver
typedef SVFIR PAG
typedef GenericEdge< SVFVar > GenericPAGEdgeTy
typedef GenericNode< SVFVar, SVFStmt > GenericPAGNodeTy
typedef CondVar< ContextCond > CxtVar
typedef CondStdSet< CxtVar > CxtPtSet
template<typename Key, typename Hash = Hash<Key>, typename KeyEqual = std::equal_to<Key>, typename Allocator = std::allocator<Key>>
using Set = std::unordered_set<Key, Hash, KeyEqual, Allocator>
template<typename Key, typename Value, typename Hash = Hash<Key>, typename KeyEqual = std::equal_to<Key>, typename Allocator = std::allocator<std::pair<const Key, Value>>>
using Map = std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>
template<typename Key, typename Compare = std::less<Key>, typename Allocator = std::allocator<Key>>
using OrderedSet = std::set<Key, Compare, Allocator>
template<typename Key, typename Value, typename Compare = std::less<Key>, typename Allocator = std::allocator<std::pair<const Key, Value>>>
using OrderedMap = std::map<Key, Value, Compare, Allocator>
typedef std::ostream OutStream
typedef unsigned u32_t
typedef signed s32_t
typedef unsigned long long u64_t
typedef signed long long s64_t
typedef unsigned char u8_t
typedef signed char s8_t
typedef unsigned short u16_t
typedef signed short s16_t
typedef u32_t NodeID
typedef u32_t EdgeID
typedef unsigned CallSiteID
typedef unsigned ThreadID
typedef s64_t APOffset
typedef SparseBitVector NodeBS
typedef unsigned PointsToID
typedef std::pair< NodeID, NodeID > NodePair
typedef OrderedSet< NodeID > OrderedNodeSet
typedef Set< NodeID > NodeSet
typedef Set< NodePair > NodePairSet
typedef Map< NodePair, NodeID > NodePairMap
typedef std::vector< NodeID > NodeVector
typedef std::vector< EdgeID > EdgeVector
typedef std::stack< NodeID > NodeStack
typedef std::list< NodeID > NodeList
typedef std::deque< NodeID > NodeDeque
typedef NodeSet EdgeSet
typedef std::vector< u32_t > CallStrCxt
typedef unsigned Version
typedef Set< Version > VersionSet
typedef std::pair< NodeID, Version > VersionedVar
typedef Set< VersionedVar > VersionedVarSet
template<typename WrappedIteratorT, typename T1 = std::remove_reference_t<decltype( **std::declval<WrappedIteratorT>())>, typename T2 = std::add_pointer_t<T1>>
using raw_pointer_iterator
typedef WPASolver< ConstraintGraph * > WPAConstraintSolver
typedef SCCDetection< ConstraintGraph * > CGSCC
typedef WPAFSSolver< SVFG * > WPASVFGFSSolver

Enumerations

enum class  TargetABI { Itanium , MSVC }
 C++ ABI inferred from the target triple. More...
enum class  BuildDirection { plain , bidirection }
enum  PTATY {
  Andersen_BASE , Andersen_WPA , AndersenSCD_WPA , AndersenSFR_WPA ,
  AndersenWaveDiff_WPA , Steensgaard_WPA , CSCallString_WPA , CSSummary_WPA ,
  FSDATAFLOW_WPA , FSSPARSE_WPA , VFS_WPA , FSCS_WPA ,
  CFLFICI_WPA , CFLFSCI_WPA , CFLFSCS_WPA , TypeCPP_WPA ,
  FieldS_DDA , FlowS_DDA , PathS_DDA , Cxt_DDA ,
  Default_PTA
}
 Pointer analysis type list. More...
enum  PTAImplTy { BaseImpl , BVDataImpl , CondImpl }
 Implementation type: BVDataPTAImpl or CondPTAImpl. More...
enum  PTBackingType { Mutable , Persistent }
 How the PTData used is implemented. More...
enum  ModRefInfo { ModRef , Ref , Mod , NoModRef }
enum  AliasResult { NoAlias , MayAlias , MustAlias , PartialAlias }
enum  ZeroBehavior { ZB_Undefined , ZB_Max , ZB_Width }
 The behavior an operation has on an input of 0. More...

Functions

IntervalValue operator+ (const IntervalValue &lhs, const IntervalValue &rhs)
 Add IntervalValues.
IntervalValue operator- (const IntervalValue &lhs, const IntervalValue &rhs)
 Subtract IntervalValues.
IntervalValue operator* (const IntervalValue &lhs, const IntervalValue &rhs)
 Multiply IntervalValues.
IntervalValue operator/ (const IntervalValue &lhs, const IntervalValue &rhs)
 Divide IntervalValues.
IntervalValue operator% (const IntervalValue &lhs, const IntervalValue &rhs)
 Divide IntervalValues.
IntervalValue operator> (const IntervalValue &lhs, const IntervalValue &rhs)
IntervalValue operator< (const IntervalValue &lhs, const IntervalValue &rhs)
IntervalValue operator>= (const IntervalValue &lhs, const IntervalValue &rhs)
IntervalValue operator<= (const IntervalValue &lhs, const IntervalValue &rhs)
IntervalValue operator<< (const IntervalValue &lhs, const IntervalValue &rhs)
 Left binary shift of IntervalValues.
IntervalValue operator>> (const IntervalValue &lhs, const IntervalValue &rhs)
 Left binary shift of IntervalValues.
IntervalValue operator& (const IntervalValue &lhs, const IntervalValue &rhs)
 Bitwise AND of IntervalValues.
IntervalValue operator| (const IntervalValue &lhs, const IntervalValue &rhs)
 Bitwise OR of IntervalValues.
IntervalValue operator^ (const IntervalValue &lhs, const IntervalValue &rhs)
 Bitwise XOR of IntervalValues.
std::ostream & operator<< (std::ostream &o, const IntervalValue &IntervalValue)
 Write an IntervalValue on a stream.
template<class ItTy, class FuncTy>
mapped_iter< ItTy, FuncTy > map_iter (ItTy I, FuncTy F)
template<class GraphType>
iter_range< typename GenericGraphTraits< GraphType >::nodes_iterator > nodes (const GraphType &G)
template<class GraphType>
iter_range< typename GenericGraphTraits< Inverse< GraphType > >::nodes_iterator > inverse_nodes (const GraphType &G)
template<class GraphType>
iter_range< typename GenericGraphTraits< GraphType >::ChildIteratorType > children (const typename GenericGraphTraits< GraphType >::NodeRef &G)
template<class GraphType>
iter_range< typename GenericGraphTraits< Inverse< GraphType > >::ChildIteratorType > inverse_children (const typename GenericGraphTraits< GraphType >::NodeRef &G)
template<class GraphType>
iter_range< typename GenericGraphTraits< GraphType >::ChildEdgeIteratorType > children_edges (const typename GenericGraphTraits< GraphType >::NodeRef &G)
template<typename GraphType>
std::ofstream & WriteGraph (std::ofstream &O, const GraphType &G, bool ShortNames=false)
template<typename GraphType>
std::string WriteGraph (const GraphType &G, bool ShortNames=false, std::string Filename="")
template<typename GraphType>
void ViewGraph (const GraphType &G, const std::string &name, bool ShortNames=false, GraphProgram::Name Program=GraphProgram::DOT)
PointsTo operator| (const PointsTo &lhs, const PointsTo &rhs)
 Returns a new lhs | rhs.
PointsTo operator& (const PointsTo &lhs, const PointsTo &rhs)
 Returns a new lhs & rhs.
PointsTo operator- (const PointsTo &lhs, const PointsTo &rhs)
 Returns a new lhs - rhs.
std::ostream & operator<< (std::ostream &o, const MRVer &mrver)
bool isMTAStatEnabled ()
std::ostream & operator<< (std::ostream &os, const SVFType &type)
template<typename F, typename S>
OutStream & operator<< (OutStream &o, const std::pair< F, S > &var)
template<typename RangeT, typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iter_range< pointee_iter< WrappedIteratorT > > make_pointee_range (RangeT &&Range)
template<typename RangeT, typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iter_range< pointer_iterator< WrappedIteratorT > > make_pointer_range (RangeT &&Range)
template<class T>
iter_range< T > make_range (T x, T y)
template<typename T>
iter_range< T > make_range (std::pair< T, T > p)
template<typename T>
unsigned countTrailingZeros (T Val, ZeroBehavior ZB=ZB_Width)
template<typename T>
unsigned countLeadingZeros (T Val, ZeroBehavior ZB=ZB_Width)
template<typename T>
unsigned countPopulation (T Value)
template<unsigned ElementSize>
bool operator|= (SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > *RHS)
template<unsigned ElementSize>
bool operator|= (SparseBitVector< ElementSize > *LHS, const SparseBitVector< ElementSize > &RHS)
template<unsigned ElementSize>
bool operator&= (SparseBitVector< ElementSize > *LHS, const SparseBitVector< ElementSize > &RHS)
template<unsigned ElementSize>
bool operator&= (SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > *RHS)
template<unsigned ElementSize>
SparseBitVector< ElementSize > operator| (const SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > &RHS)
template<unsigned ElementSize>
SparseBitVector< ElementSize > operator& (const SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > &RHS)
template<unsigned ElementSize>
SparseBitVector< ElementSize > operator- (const SparseBitVector< ElementSize > &LHS, const SparseBitVector< ElementSize > &RHS)
template<unsigned ElementSize>
void dump (const SparseBitVector< ElementSize > &LHS, std::ostream &out)

Detailed Description

for isBitcode

For a more detailed explanation of how External APIs are handled in SVF, please refer to the SVF Wiki: https://github.com/SVF-tools/SVF/wiki/Handling-External-APIs-with-extapi.c.

Contains abstract classes for: PTData: basic points-to data structure derived by all others. DiffPTData: PTData which only propagates new changes, not entire points-to sets. DFPTData: flow-sensitive PTData as defined by Hardekopf and Lin (CGO '11).

Hierarchy (square brackets indicate abstract class):

  +------------> [PTData] <----------------+---------------------+
  |                 ^                      |                     |
  |                 |                      |                     |

MutablePTData [DiffPTData] [DFPTData] [VersionedPTData] ^ ^ ^ | | | MutableDiffPTData MutableDFPTData MutableVersionedPTData ^ | MutableIncDFPTData

PTData (AbstractPointsToDS.h) implementations with a mutable backend. Each Key is given a points-to set which is itself updated till the analysis terminates.

PTData (AbstractPointsToDS.h) implementations with a persistent backend. Each Key is given a cheap points-to ID which refers to some real points-to set.

GraphTraits specialization for constraint graph

GraphTraits specialization

Typedef Documentation

◆ ActualParmSVFGNode

Definition at line 44 of file SVFG.h.

◆ ActualRetSVFGNode

Definition at line 45 of file SVFG.h.

◆ AddrSVFGNode

Definition at line 51 of file SVFG.h.

◆ AllocaInst

typedef llvm::AllocaInst SVF::AllocaInst

Definition at line 151 of file BasicTypes.h.

◆ AnyMemCpyInst

typedef llvm::AnyMemCpyInst SVF::AnyMemCpyInst

Definition at line 222 of file BasicTypes.h.

◆ AnyMemIntrinsic

typedef llvm::AnyMemIntrinsic SVF::AnyMemIntrinsic

Definition at line 219 of file BasicTypes.h.

◆ AnyMemMoveInst

typedef llvm::AnyMemMoveInst SVF::AnyMemMoveInst

Definition at line 223 of file BasicTypes.h.

◆ AnyMemSetInst

typedef llvm::AnyMemSetInst SVF::AnyMemSetInst

Definition at line 220 of file BasicTypes.h.

◆ AnyMemTransferInst

typedef llvm::AnyMemTransferInst SVF::AnyMemTransferInst

Definition at line 221 of file BasicTypes.h.

◆ APOffset

Definition at line 80 of file GeneralType.h.

◆ Argument

typedef llvm::Argument SVF::Argument

Definition at line 146 of file BasicTypes.h.

◆ ArrayType

typedef llvm::ArrayType SVF::ArrayType

Definition at line 93 of file BasicTypes.h.

◆ AssumeInst

typedef llvm::AssumeInst SVF::AssumeInst

Definition at line 236 of file BasicTypes.h.

◆ AtomicCmpXchgInst

typedef llvm::AtomicCmpXchgInst SVF::AtomicCmpXchgInst

Definition at line 152 of file BasicTypes.h.

◆ AtomicMemCpyInst

typedef llvm::AtomicMemCpyInst SVF::AtomicMemCpyInst

Definition at line 208 of file BasicTypes.h.

◆ AtomicMemIntrinsic

typedef llvm::AtomicMemIntrinsic SVF::AtomicMemIntrinsic

Definition at line 205 of file BasicTypes.h.

◆ AtomicMemMoveInst

typedef llvm::AtomicMemMoveInst SVF::AtomicMemMoveInst

Definition at line 209 of file BasicTypes.h.

◆ AtomicMemSetInst

typedef llvm::AtomicMemSetInst SVF::AtomicMemSetInst

Definition at line 206 of file BasicTypes.h.

◆ AtomicMemTransferInst

typedef llvm::AtomicMemTransferInst SVF::AtomicMemTransferInst

Definition at line 207 of file BasicTypes.h.

◆ AtomicRMWInst

typedef llvm::AtomicRMWInst SVF::AtomicRMWInst

Definition at line 153 of file BasicTypes.h.

◆ BasicBlock

typedef llvm::BasicBlock SVF::BasicBlock

Definition at line 84 of file BasicTypes.h.

◆ BinaryOperator

typedef llvm::BinaryOperator SVF::BinaryOperator

Definition at line 180 of file BasicTypes.h.

◆ BinaryOpIntrinsic

typedef llvm::BinaryOpIntrinsic SVF::BinaryOpIntrinsic

Definition at line 201 of file BasicTypes.h.

◆ BitCastInst

typedef llvm::BitCastInst SVF::BitCastInst

Definition at line 154 of file BasicTypes.h.

◆ BlockAddress

typedef llvm::BlockAddress SVF::BlockAddress

Definition at line 89 of file BasicTypes.h.

◆ BranchInst

typedef llvm::BranchInst SVF::BranchInst

Definition at line 155 of file BasicTypes.h.

◆ bridge_gep_iterator

◆ CallBase

typedef llvm::CallBase SVF::CallBase

Definition at line 147 of file BasicTypes.h.

◆ CallBrInst

typedef llvm::CallBrInst SVF::CallBrInst

Definition at line 157 of file BasicTypes.h.

◆ CallInst

typedef llvm::CallInst SVF::CallInst

Definition at line 148 of file BasicTypes.h.

◆ CallSiteID

typedef unsigned SVF::CallSiteID

Definition at line 78 of file GeneralType.h.

◆ CallStrCxt

typedef std::vector<u32_t> SVF::CallStrCxt

Definition at line 96 of file GeneralType.h.

◆ CastInst

typedef llvm::CastInst SVF::CastInst

Definition at line 159 of file BasicTypes.h.

◆ CFLSrcSnkSolver

Definition at line 49 of file SrcSnkDDA.h.

◆ CGSCC

Definition at line 44 of file CSC.h.

◆ CmpInst

typedef llvm::CmpInst SVF::CmpInst

Definition at line 160 of file BasicTypes.h.

◆ const_inst_iterator

typedef llvm::const_inst_iterator SVF::const_inst_iterator

Definition at line 253 of file BasicTypes.h.

◆ const_pred_iterator

typedef llvm::const_pred_iterator SVF::const_pred_iterator

Definition at line 257 of file BasicTypes.h.

◆ Constant

typedef llvm::Constant SVF::Constant

Definition at line 122 of file BasicTypes.h.

◆ ConstantAggregate

typedef llvm::ConstantAggregate SVF::ConstantAggregate

Definition at line 115 of file BasicTypes.h.

◆ ConstantAggregateZero

typedef llvm::ConstantAggregateZero SVF::ConstantAggregateZero

Definition at line 116 of file BasicTypes.h.

◆ ConstantArray

typedef llvm::ConstantArray SVF::ConstantArray

Definition at line 121 of file BasicTypes.h.

◆ ConstantData

typedef llvm::ConstantData SVF::ConstantData

Definition at line 114 of file BasicTypes.h.

◆ ConstantDataArray

typedef llvm::ConstantDataArray SVF::ConstantDataArray

Definition at line 119 of file BasicTypes.h.

◆ ConstantDataSequential

typedef llvm::ConstantDataSequential SVF::ConstantDataSequential

Definition at line 117 of file BasicTypes.h.

◆ ConstantExpr

typedef llvm::ConstantExpr SVF::ConstantExpr

Definition at line 118 of file BasicTypes.h.

◆ ConstantFP

typedef llvm::ConstantFP SVF::ConstantFP

Definition at line 124 of file BasicTypes.h.

◆ ConstantInt

typedef llvm::ConstantInt SVF::ConstantInt

Definition at line 123 of file BasicTypes.h.

◆ ConstantPointerNull

typedef llvm::ConstantPointerNull SVF::ConstantPointerNull

Definition at line 125 of file BasicTypes.h.

◆ ConstantStruct

typedef llvm::ConstantStruct SVF::ConstantStruct

Definition at line 104 of file BasicTypes.h.

◆ ConstrainedFPCmpIntrinsic

typedef llvm::ConstrainedFPCmpIntrinsic SVF::ConstrainedFPCmpIntrinsic

Definition at line 199 of file BasicTypes.h.

◆ ConstrainedFPIntrinsic

typedef llvm::ConstrainedFPIntrinsic SVF::ConstrainedFPIntrinsic

Definition at line 198 of file BasicTypes.h.

◆ CopySVFGNode

Definition at line 52 of file SVFG.h.

◆ CxtLocDPItem

Definition at line 50 of file ContextDDA.h.

◆ CxtPtSet

Definition at line 387 of file DPItem.h.

◆ CxtVar

Context-, flow- sensitive DPItem

Context DPItem

Definition at line 386 of file DPItem.h.

◆ DataLayout

typedef llvm::DataLayout SVF::DataLayout

Definition at line 106 of file BasicTypes.h.

◆ DbgDeclareInst

typedef llvm::DbgDeclareInst SVF::DbgDeclareInst

Definition at line 193 of file BasicTypes.h.

◆ DbgInfoIntrinsic

typedef llvm::DbgInfoIntrinsic SVF::DbgInfoIntrinsic

Definition at line 191 of file BasicTypes.h.

◆ DbgLabelInst

typedef llvm::DbgLabelInst SVF::DbgLabelInst

Definition at line 196 of file BasicTypes.h.

◆ DbgValueInst

typedef llvm::DbgValueInst SVF::DbgValueInst

Definition at line 195 of file BasicTypes.h.

◆ DbgVariableIntrinsic

typedef llvm::DbgVariableIntrinsic SVF::DbgVariableIntrinsic

Definition at line 192 of file BasicTypes.h.

◆ DebugInfoFinder

typedef llvm::DebugInfoFinder SVF::DebugInfoFinder

Definition at line 242 of file BasicTypes.h.

◆ DIBasicType

typedef llvm::DIBasicType SVF::DIBasicType

Definition at line 244 of file BasicTypes.h.

◆ DICompositeType

typedef llvm::DICompositeType SVF::DICompositeType

Definition at line 240 of file BasicTypes.h.

◆ DIDerivedType

typedef llvm::DIDerivedType SVF::DIDerivedType

Definition at line 241 of file BasicTypes.h.

◆ DINode

typedef llvm::DINode SVF::DINode

Definition at line 246 of file BasicTypes.h.

◆ DINodeArray

typedef llvm::DINodeArray SVF::DINodeArray

Definition at line 247 of file BasicTypes.h.

◆ DISubprogram

typedef llvm::DISubprogram SVF::DISubprogram

Definition at line 111 of file BasicTypes.h.

◆ DISubrange

typedef llvm::DISubrange SVF::DISubrange

Definition at line 245 of file BasicTypes.h.

◆ DISubroutineType

typedef llvm::DISubroutineType SVF::DISubroutineType

Definition at line 243 of file BasicTypes.h.

◆ DIType

typedef llvm::DIType SVF::DIType

Definition at line 239 of file BasicTypes.h.

◆ DITypeRefArray

typedef llvm::DITypeRefArray SVF::DITypeRefArray

Definition at line 248 of file BasicTypes.h.

◆ DominanceFrontier

typedef llvm::DominanceFrontier SVF::DominanceFrontier

Definition at line 136 of file BasicTypes.h.

◆ DominanceFrontierBase

typedef llvm::DominanceFrontierBase<llvm::BasicBlock, false> SVF::DominanceFrontierBase

Definition at line 138 of file BasicTypes.h.

◆ DominatorTree

typedef llvm::DominatorTree SVF::DominatorTree

LLVM Dominators.

Definition at line 134 of file BasicTypes.h.

◆ DomTreeNode

typedef llvm::DomTreeNode SVF::DomTreeNode

Definition at line 135 of file BasicTypes.h.

◆ DSOLocalEquivalent

typedef llvm::DSOLocalEquivalent SVF::DSOLocalEquivalent

Definition at line 127 of file BasicTypes.h.

◆ EdgeID

typedef u32_t SVF::EdgeID

Definition at line 77 of file GeneralType.h.

◆ EdgeSet

Definition at line 95 of file GeneralType.h.

◆ EdgeVector

typedef std::vector<EdgeID> SVF::EdgeVector

Definition at line 91 of file GeneralType.h.

◆ ExtractElementInst

typedef llvm::ExtractElementInst SVF::ExtractElementInst

Definition at line 162 of file BasicTypes.h.

◆ ExtractValueInst

typedef llvm::ExtractValueInst SVF::ExtractValueInst

Definition at line 161 of file BasicTypes.h.

◆ FenceInst

typedef llvm::FenceInst SVF::FenceInst

Definition at line 169 of file BasicTypes.h.

◆ FormalParmSVFGNode

Definition at line 46 of file SVFG.h.

◆ FormalRetSVFGNode

Definition at line 47 of file SVFG.h.

◆ FreezeInst

typedef llvm::FreezeInst SVF::FreezeInst

Definition at line 170 of file BasicTypes.h.

◆ Function

typedef llvm::Function SVF::Function

Definition at line 83 of file BasicTypes.h.

◆ FunctionCallee

typedef llvm::FunctionCallee SVF::FunctionCallee

Definition at line 271 of file BasicTypes.h.

◆ FunctionType

typedef llvm::FunctionType SVF::FunctionType

Definition at line 96 of file BasicTypes.h.

◆ GCProjectionInst

typedef llvm::GCProjectionInst SVF::GCProjectionInst

Definition at line 233 of file BasicTypes.h.

◆ GCRelocateInst

typedef llvm::GCRelocateInst SVF::GCRelocateInst

Definition at line 234 of file BasicTypes.h.

◆ GCResultInst

typedef llvm::GCResultInst SVF::GCResultInst

Definition at line 235 of file BasicTypes.h.

◆ GCStatepointInst

typedef llvm::GCStatepointInst SVF::GCStatepointInst

Definition at line 232 of file BasicTypes.h.

◆ GenericBasicBlockEdgeTy

◆ GenericBasicBlockGraphTy

◆ GenericBasicBlockNodeTy

◆ GenericCDGEdgeTy

Definition at line 46 of file CDG.h.

◆ GenericCDGNodeTy

Definition at line 93 of file CDG.h.

◆ GenericCDGTy

Definition at line 146 of file CDG.h.

◆ GenericCFLEdgeTy

Definition at line 44 of file CFLGraph.h.

◆ GenericCFLGraphTy

Edge-labeled graph for CFL Reachability analysis.

Definition at line 171 of file CFLGraph.h.

◆ GenericCFLNodeTy

Definition at line 74 of file CFLGraph.h.

◆ GenericCHEdgeTy

Definition at line 77 of file CHG.h.

◆ GenericCHGraphTy

class hierarchy graph

Definition at line 239 of file CHG.h.

◆ GenericCHNodeTy

Definition at line 105 of file CHG.h.

◆ GenericConsEdgeTy

Self-defined edge for constraint resolution including add/remove/re-target, but all the operations do not affect original SVFIR Edges

Definition at line 47 of file ConsGEdge.h.

◆ GenericConsNodeTy

Constraint node

Definition at line 39 of file ConsGNode.h.

◆ GenericICFGEdgeTy

Interprocedural control-flow and value-flow edge, representing the control- and value-flow dependence between two nodes

Definition at line 43 of file ICFGEdge.h.

◆ GenericICFGNodeTy

Interprocedural control-flow graph node, representing different kinds of program statements including top-level pointers (ValVar) and address-taken objects (ObjVar)

Definition at line 53 of file ICFGNode.h.

◆ GenericICFGTy

Interprocedural Control-Flow Graph (ICFG)

Definition at line 47 of file ICFG.h.

◆ GenericPAGEdgeTy

Definition at line 54 of file SVFStatements.h.

◆ GenericPAGNodeTy

Definition at line 53 of file SVFVariables.h.

◆ GenericPTACallGraphEdgeTy

◆ GenericPTACallGraphNodeTy

◆ GenericPTACallGraphTy

Pointer Analysis Call Graph used internally for various pointer analysis

Definition at line 234 of file CallGraph.h.

◆ GenericSparseObjEdgeTy

◆ GenericSparseObjGraphTy

◆ GenericSparseObjNodeTy

◆ GenericTCTEdgeTy

Definition at line 51 of file TCT.h.

◆ GenericTCTNodeTy

Definition at line 86 of file TCT.h.

◆ GenericThreadCreateTreeTy

Pointer Analysis Call Graph used internally for various pointer analysis

Definition at line 154 of file TCT.h.

◆ GenericVFGEdgeTy

Interprocedural control-flow and value-flow edge, representing the control- and value-flow dependence between two nodes

Definition at line 43 of file VFGEdge.h.

◆ GenericVFGNodeTy

Interprocedural control-flow graph node, representing different kinds of program statements including top-level pointers (ValVar) and address-taken objects (ObjVar)

Definition at line 45 of file VFGNode.h.

◆ GenericVFGTy

Value Flow Graph (VFG)

Definition at line 49 of file VFG.h.

◆ gep_type_iterator

typedef llvm::gep_type_iterator SVF::gep_type_iterator

Definition at line 254 of file BasicTypes.h.

◆ GEPOperator

typedef llvm::GEPOperator SVF::GEPOperator

Definition at line 183 of file BasicTypes.h.

◆ GepSVFGNode

Definition at line 55 of file SVFG.h.

◆ GetElementPtrInst

typedef llvm::GetElementPtrInst SVF::GetElementPtrInst

Definition at line 163 of file BasicTypes.h.

◆ GlobalAlias

typedef llvm::GlobalAlias SVF::GlobalAlias

Definition at line 129 of file BasicTypes.h.

◆ GlobalIFunc

typedef llvm::GlobalIFunc SVF::GlobalIFunc

Definition at line 130 of file BasicTypes.h.

◆ GlobalObject

typedef llvm::GlobalObject SVF::GlobalObject

Definition at line 73 of file BasicTypes.h.

◆ GlobalValue

typedef llvm::GlobalValue SVF::GlobalValue

Definition at line 86 of file BasicTypes.h.

◆ GlobalVariable

typedef llvm::GlobalVariable SVF::GlobalVariable

Definition at line 131 of file BasicTypes.h.

◆ ICFGCycleWTO

Definition at line 49 of file ICFGWTO.h.

◆ ICFGSingletonWTO

Definition at line 48 of file ICFGWTO.h.

◆ ICFGWTOComp

Definition at line 47 of file ICFGWTO.h.

◆ InlineAsm

typedef llvm::InlineAsm SVF::InlineAsm

Definition at line 126 of file BasicTypes.h.

◆ InsertElementInst

typedef llvm::InsertElementInst SVF::InsertElementInst

Definition at line 172 of file BasicTypes.h.

◆ InsertValueInst

typedef llvm::InsertValueInst SVF::InsertValueInst

Definition at line 168 of file BasicTypes.h.

◆ inst_iterator

typedef llvm::inst_iterator SVF::inst_iterator

Definition at line 252 of file BasicTypes.h.

◆ InstrProfIncrementInst

typedef llvm::InstrProfIncrementInst SVF::InstrProfIncrementInst

Definition at line 227 of file BasicTypes.h.

◆ InstrProfIncrementInstStep

typedef llvm::InstrProfIncrementInstStep SVF::InstrProfIncrementInstStep

Definition at line 228 of file BasicTypes.h.

◆ InstrProfValueProfileInst

typedef llvm::InstrProfValueProfileInst SVF::InstrProfValueProfileInst

Definition at line 229 of file BasicTypes.h.

◆ Instruction

typedef llvm::Instruction SVF::Instruction

Definition at line 85 of file BasicTypes.h.

◆ IntegerType

typedef llvm::IntegerType SVF::IntegerType

Definition at line 95 of file BasicTypes.h.

◆ InterPHISVFGNode

Definition at line 58 of file SVFG.h.

◆ IntraPHISVFGNode

Definition at line 57 of file SVFG.h.

◆ IntrinsicInst

typedef llvm::IntrinsicInst SVF::IntrinsicInst

Definition at line 190 of file BasicTypes.h.

◆ IntToPtrInst

typedef llvm::IntToPtrInst SVF::IntToPtrInst

Definition at line 167 of file BasicTypes.h.

◆ InvokeInst

typedef llvm::InvokeInst SVF::InvokeInst

Definition at line 164 of file BasicTypes.h.

◆ IRBuilder

typedef llvm::IRBuilder SVF::IRBuilder

Definition at line 76 of file BasicTypes.h.

◆ Label

Definition at line 42 of file CFLSolver.h.

◆ LandingPadInst

typedef llvm::LandingPadInst SVF::LandingPadInst

Definition at line 173 of file BasicTypes.h.

◆ LLVMContext

typedef llvm::LLVMContext SVF::LLVMContext

Definition at line 72 of file BasicTypes.h.

◆ LoadInst

typedef llvm::LoadInst SVF::LoadInst

Definition at line 150 of file BasicTypes.h.

◆ LoadSVFGNode

Definition at line 54 of file SVFG.h.

◆ LocDPItem

Definition at line 49 of file FlowDDA.h.

◆ Loop

typedef llvm::Loop SVF::Loop

LLVM Loop.

Definition at line 141 of file BasicTypes.h.

◆ LoopInfo

typedef llvm::LoopInfo SVF::LoopInfo

Definition at line 142 of file BasicTypes.h.

◆ Map

template<typename Key, typename Value, typename Hash = Hash<Key>, typename KeyEqual = std::equal_to<Key>, typename Allocator = std::allocator<std::pair<const Key, Value>>>
using SVF::Map = std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>

Definition at line 56 of file GeneralType.h.

◆ MDNode

typedef llvm::MDNode SVF::MDNode

Definition at line 110 of file BasicTypes.h.

◆ MDString

typedef llvm::MDString SVF::MDString

Definition at line 99 of file BasicTypes.h.

◆ MemCpyInlineInst

typedef llvm::MemCpyInlineInst SVF::MemCpyInlineInst

Definition at line 217 of file BasicTypes.h.

◆ MemCpyInst

typedef llvm::MemCpyInst SVF::MemCpyInst

Definition at line 214 of file BasicTypes.h.

◆ MemIntrinsic

typedef llvm::MemIntrinsic SVF::MemIntrinsic

Definition at line 211 of file BasicTypes.h.

◆ MemMoveInst

typedef llvm::MemMoveInst SVF::MemMoveInst

Definition at line 215 of file BasicTypes.h.

◆ MemoryLocation

typedef llvm::MemoryLocation SVF::MemoryLocation

Definition at line 105 of file BasicTypes.h.

◆ MemSetInst

typedef llvm::MemSetInst SVF::MemSetInst

Definition at line 212 of file BasicTypes.h.

◆ MemTransferInst

typedef llvm::MemTransferInst SVF::MemTransferInst

Definition at line 213 of file BasicTypes.h.

◆ MetadataAsValue

typedef llvm::MetadataAsValue SVF::MetadataAsValue

Definition at line 100 of file BasicTypes.h.

◆ MinMaxIntrinsic

typedef llvm::MinMaxIntrinsic SVF::MinMaxIntrinsic

Definition at line 200 of file BasicTypes.h.

◆ Module

typedef llvm::Module SVF::Module

Definition at line 82 of file BasicTypes.h.

◆ ModulePass

typedef llvm::ModulePass SVF::ModulePass

Definition at line 75 of file BasicTypes.h.

◆ MRID

typedef NodeID SVF::MRID

Definition at line 54 of file MemRegion.h.

◆ MRVERID

Definition at line 55 of file MemRegion.h.

◆ MRVERSION

Definition at line 56 of file MemRegion.h.

◆ NamedMDNode

typedef llvm::NamedMDNode SVF::NamedMDNode

LLVM metadata and debug information.

Definition at line 109 of file BasicTypes.h.

◆ NoAliasScopeDeclInst

typedef llvm::NoAliasScopeDeclInst SVF::NoAliasScopeDeclInst

Definition at line 231 of file BasicTypes.h.

◆ NoCFIValue

typedef llvm::NoCFIValue SVF::NoCFIValue

Definition at line 128 of file BasicTypes.h.

◆ NodeBS

Definition at line 82 of file GeneralType.h.

◆ NodeDeque

typedef std::deque<NodeID> SVF::NodeDeque

Definition at line 94 of file GeneralType.h.

◆ NodeID

typedef u32_t SVF::NodeID

Definition at line 76 of file GeneralType.h.

◆ NodeList

typedef std::list<NodeID> SVF::NodeList

Definition at line 93 of file GeneralType.h.

◆ NodePair

typedef std::pair<NodeID, NodeID> SVF::NodePair

Definition at line 85 of file GeneralType.h.

◆ NodePairMap

Definition at line 89 of file GeneralType.h.

◆ NodePairSet

Definition at line 88 of file GeneralType.h.

◆ NodePairVector

typedef std::vector<std::pair<NodeID, NodeID> > SVF::NodePairVector

Definition at line 145 of file CDG.h.

◆ NodeSet

Definition at line 87 of file GeneralType.h.

◆ NodeStack

typedef std::stack<NodeID> SVF::NodeStack

Definition at line 92 of file GeneralType.h.

◆ NodeVector

typedef std::vector<NodeID> SVF::NodeVector

Definition at line 90 of file GeneralType.h.

◆ NullPtrSVFGNode

Definition at line 49 of file SVFG.h.

◆ OrderedMap

template<typename Key, typename Value, typename Compare = std::less<Key>, typename Allocator = std::allocator<std::pair<const Key, Value>>>
using SVF::OrderedMap = std::map<Key, Value, Compare, Allocator>

Definition at line 64 of file GeneralType.h.

◆ OrderedNodeSet

Definition at line 86 of file GeneralType.h.

◆ OrderedSet

template<typename Key, typename Compare = std::less<Key>, typename Allocator = std::allocator<Key>>
using SVF::OrderedSet = std::set<Key, Compare, Allocator>

Definition at line 60 of file GeneralType.h.

◆ OutStream

typedef std::ostream SVF::OutStream

Definition at line 66 of file GeneralType.h.

◆ PAG

typedef SVFIR SVF::PAG

Definition at line 937 of file SVFIR.h.

◆ PAGEdge

Definition at line 41 of file IRGraph.h.

◆ PAGNode

Definition at line 40 of file IRGraph.h.

◆ PHINode

typedef llvm::PHINode SVF::PHINode

Definition at line 166 of file BasicTypes.h.

◆ PHISVFGNode

Definition at line 56 of file SVFG.h.

◆ PointerType

typedef llvm::PointerType SVF::PointerType

Definition at line 94 of file BasicTypes.h.

◆ PointsToID

typedef unsigned SVF::PointsToID

Definition at line 83 of file GeneralType.h.

◆ PostDominatorTree

typedef llvm::PostDominatorTree SVF::PostDominatorTree

Definition at line 137 of file BasicTypes.h.

◆ PseudoProbeInst

typedef llvm::PseudoProbeInst SVF::PseudoProbeInst

Definition at line 230 of file BasicTypes.h.

◆ raw_fd_ostream

typedef llvm::raw_fd_ostream SVF::raw_fd_ostream

LLVM outputs.

Definition at line 267 of file BasicTypes.h.

◆ raw_pointer_iterator

template<typename WrappedIteratorT, typename T1 = std::remove_reference_t<decltype( **std::declval<WrappedIteratorT>())>, typename T2 = std::add_pointer_t<T1>>
using SVF::raw_pointer_iterator

◆ ResumeInst

typedef llvm::ResumeInst SVF::ResumeInst

Definition at line 174 of file BasicTypes.h.

◆ ReturnInst

typedef llvm::ReturnInst SVF::ReturnInst

Definition at line 158 of file BasicTypes.h.

◆ s16_t

typedef signed short SVF::s16_t

Definition at line 74 of file GeneralType.h.

◆ s32_t

typedef signed SVF::s32_t

Definition at line 68 of file GeneralType.h.

◆ s64_t

typedef signed long long SVF::s64_t

Definition at line 70 of file GeneralType.h.

◆ s8_t

typedef signed char SVF::s8_t

Definition at line 72 of file GeneralType.h.

◆ SaturatingInst

typedef llvm::SaturatingInst SVF::SaturatingInst

Definition at line 203 of file BasicTypes.h.

◆ ScalarEvolution

typedef llvm::ScalarEvolution SVF::ScalarEvolution

Definition at line 263 of file BasicTypes.h.

◆ ScalarEvolutionWrapperPass

typedef llvm::ScalarEvolutionWrapperPass SVF::ScalarEvolutionWrapperPass

Definition at line 260 of file BasicTypes.h.

◆ SCEV

typedef llvm::SCEV SVF::SCEV

Definition at line 264 of file BasicTypes.h.

◆ SCEVAddRecExpr

typedef llvm::SCEVAddRecExpr SVF::SCEVAddRecExpr

Definition at line 261 of file BasicTypes.h.

◆ SCEVConstant

typedef llvm::SCEVConstant SVF::SCEVConstant

Definition at line 262 of file BasicTypes.h.

◆ SelectInst

typedef llvm::SelectInst SVF::SelectInst

Definition at line 175 of file BasicTypes.h.

◆ Set

template<typename Key, typename Hash = Hash<Key>, typename KeyEqual = std::equal_to<Key>, typename Allocator = std::allocator<Key>>
using SVF::Set = std::unordered_set<Key, Hash, KeyEqual, Allocator>

Definition at line 51 of file GeneralType.h.

◆ ShuffleVectorInst

typedef llvm::ShuffleVectorInst SVF::ShuffleVectorInst

Definition at line 165 of file BasicTypes.h.

◆ SlicedCallGraphNodeRef

◆ SlicedICFGNodeRef

◆ SlicedPAGNodeRef

◆ SlicedSVFGNodeRef

◆ SMDiagnostic

typedef llvm::SMDiagnostic SVF::SMDiagnostic

Definition at line 88 of file BasicTypes.h.

◆ StmtSVFGNode

Definition at line 50 of file SVFG.h.

◆ StoreInst

typedef llvm::StoreInst SVF::StoreInst

Definition at line 149 of file BasicTypes.h.

◆ StoreSVFGNode

Definition at line 53 of file SVFG.h.

◆ StructLayout

typedef llvm::StructLayout SVF::StructLayout

Definition at line 103 of file BasicTypes.h.

◆ StructType

typedef llvm::StructType SVF::StructType

LLVM types.

Definition at line 92 of file BasicTypes.h.

◆ succ_const_iterator

typedef llvm::const_succ_iterator SVF::succ_const_iterator

LLVM Iterators.

Definition at line 274 of file BasicTypes.h.

◆ SuccBBAndCondValPair

typedef std::pair<const BasicBlock*, const ConstantInt*> SVF::SuccBBAndCondValPair

Definition at line 186 of file BasicTypes.h.

◆ SuccBBAndCondValPairVec

Definition at line 187 of file BasicTypes.h.

◆ SVFGEdge

Definition at line 42 of file SVFG.h.

◆ SVFGNode

Definition at line 43 of file SVFG.h.

◆ SwitchInst

typedef llvm::SwitchInst SVF::SwitchInst

Definition at line 156 of file BasicTypes.h.

◆ ThreadID

typedef unsigned SVF::ThreadID

Definition at line 79 of file GeneralType.h.

◆ Type

typedef llvm::Type SVF::Type

Definition at line 81 of file BasicTypes.h.

◆ u16_t

typedef unsigned short SVF::u16_t

Definition at line 73 of file GeneralType.h.

◆ u32_t

typedef unsigned SVF::u32_t

Definition at line 67 of file GeneralType.h.

◆ u64_t

typedef unsigned long long SVF::u64_t

Definition at line 69 of file GeneralType.h.

◆ u8_t

typedef unsigned char SVF::u8_t

Definition at line 71 of file GeneralType.h.

◆ UnaryOperator

typedef llvm::UnaryOperator SVF::UnaryOperator

Definition at line 181 of file BasicTypes.h.

◆ UndefValue

typedef llvm::UndefValue SVF::UndefValue

Definition at line 182 of file BasicTypes.h.

◆ UnifyFunctionExitNodes

typedef llvm::UnifyFunctionExitNodesPass SVF::UnifyFunctionExitNodes

Definition at line 77 of file BasicTypes.h.

◆ UnreachableInst

typedef llvm::UnreachableInst SVF::UnreachableInst

Definition at line 171 of file BasicTypes.h.

◆ Use

typedef llvm::Use SVF::Use

Definition at line 74 of file BasicTypes.h.

◆ User

typedef llvm::User SVF::User

Definition at line 143 of file BasicTypes.h.

◆ VAArgInst

typedef llvm::VAArgInst SVF::VAArgInst

Definition at line 176 of file BasicTypes.h.

◆ VACopyInst

typedef llvm::VACopyInst SVF::VACopyInst

Definition at line 177 of file BasicTypes.h.

◆ VAEndInst

typedef llvm::VAEndInst SVF::VAEndInst

Definition at line 178 of file BasicTypes.h.

◆ Value

typedef llvm::Value SVF::Value

LLVM Basic classes.

Definition at line 80 of file BasicTypes.h.

◆ VAStartInst

typedef llvm::VAStartInst SVF::VAStartInst

Definition at line 179 of file BasicTypes.h.

◆ VectorType

typedef llvm::VectorType SVF::VectorType

Definition at line 270 of file BasicTypes.h.

◆ Version

typedef unsigned SVF::Version

Definition at line 97 of file GeneralType.h.

◆ VersionedVar

typedef std::pair<NodeID, Version> SVF::VersionedVar

Definition at line 99 of file GeneralType.h.

◆ VersionedVarSet

Definition at line 100 of file GeneralType.h.

◆ VersionSet

Definition at line 98 of file GeneralType.h.

◆ VFunSet

typedef Set<const FunObjVar*> SVF::VFunSet

Definition at line 47 of file CHG.h.

◆ VPIntrinsic

typedef llvm::VPIntrinsic SVF::VPIntrinsic

Definition at line 197 of file BasicTypes.h.

◆ VTableSet

typedef Set<const GlobalObjVar*> SVF::VTableSet

Definition at line 46 of file CHG.h.

◆ WithOverflowInst

typedef llvm::WithOverflowInst SVF::WithOverflowInst

Definition at line 202 of file BasicTypes.h.

◆ WPAConstraintSolver

Abstract class of inclusion-based Pointer Analysis

Equivalence-based Pointer Analysis

Definition at line 58 of file Andersen.h.

◆ WPASVFGFSSolver

Flow sensitive whole program pointer analysis

Definition at line 46 of file FlowSensitive.h.

Enumeration Type Documentation

◆ AliasResult

Enumerator
NoAlias 
MayAlias 
MustAlias 
PartialAlias 

Definition at line 618 of file SVFType.h.

619{
620 NoAlias,
621 MayAlias,
622 MustAlias,
624};
@ PartialAlias
Definition SVFType.h:623
@ MustAlias
Definition SVFType.h:622
@ MayAlias
Definition SVFType.h:621
@ NoAlias
Definition SVFType.h:620

◆ BuildDirection

enum class SVF::BuildDirection
strong
Enumerator
plain 
bidirection 

Definition at line 41 of file CFLGraphBuilder.h.

◆ ModRefInfo

Enumerator
ModRef 
Ref 
Mod 
NoModRef 

Definition at line 610 of file SVFType.h.

611{
612 ModRef,
613 Ref,
614 Mod,
615 NoModRef,
616};
@ Ref
Definition SVFType.h:613
@ NoModRef
Definition SVFType.h:615
@ ModRef
Definition SVFType.h:612
@ Mod
Definition SVFType.h:614

◆ PTAImplTy

Implementation type: BVDataPTAImpl or CondPTAImpl.

Enumerator
BaseImpl 

Represents PointerAnalaysis.

BVDataImpl 

Represents BVDataPTAImpl.

CondImpl 

Represents CondPTAImpl.

Definition at line 39 of file PTATY.h.

40{
41 BaseImpl,
43 CondImpl,
44};
@ BVDataImpl
Represents BVDataPTAImpl.
Definition PTATY.h:42
@ BaseImpl
Represents PointerAnalaysis.
Definition PTATY.h:41
@ CondImpl
Represents CondPTAImpl.
Definition PTATY.h:43

◆ PTATY

enum SVF::PTATY

Pointer analysis type list.

Enumerator
Andersen_BASE 

Base Andersen PTA.

Andersen_WPA 

Andersen PTA.

AndersenSCD_WPA 

Selective cycle detection andersen-style WPA.

AndersenSFR_WPA 

Stride-based field representation.

AndersenWaveDiff_WPA 

Diff wave propagation andersen-style WPA.

Steensgaard_WPA 

Steensgaard PTA.

CSCallString_WPA 

Call string based context sensitive WPA.

CSSummary_WPA 

Summary based context sensitive WPA.

FSDATAFLOW_WPA 

Traditional Dataflow-based flow sensitive WPA.

FSSPARSE_WPA 

Sparse flow sensitive WPA.

VFS_WPA 

Versioned sparse flow-sensitive WPA.

FSCS_WPA 

Flow-, context- sensitive WPA.

CFLFICI_WPA 

Flow-, context-, insensitive CFL-reachability-based analysis.

CFLFSCI_WPA 

Flow-insensitive, context-sensitive CFL-reachability-based analysis.

CFLFSCS_WPA 

Flow-, context-, CFL-reachability-based analysis.

TypeCPP_WPA 

Type-based analysis for C++.

FieldS_DDA 

Field sensitive DDA.

FlowS_DDA 

Flow sensitive DDA.

PathS_DDA 

Guarded value-flow DDA.

Cxt_DDA 

context sensitive DDA

Default_PTA 

default pta without any analysis

Definition at line 8 of file PTATY.h.

9{
10 // Whole program analysis
21 VFS_WPA,
22 FSCS_WPA,
27
28 // Demand driven analysis
30 FlowS_DDA,
31 PathS_DDA,
32 Cxt_DDA,
33
34
36};
@ Cxt_DDA
context sensitive DDA
Definition PTATY.h:32
@ VFS_WPA
Versioned sparse flow-sensitive WPA.
Definition PTATY.h:21
@ Andersen_WPA
Andersen PTA.
Definition PTATY.h:12
@ PathS_DDA
Guarded value-flow DDA.
Definition PTATY.h:31
@ CSCallString_WPA
Call string based context sensitive WPA.
Definition PTATY.h:17
@ Default_PTA
default pta without any analysis
Definition PTATY.h:35
@ FSSPARSE_WPA
Sparse flow sensitive WPA.
Definition PTATY.h:20
@ AndersenSFR_WPA
Stride-based field representation.
Definition PTATY.h:14
@ FieldS_DDA
Field sensitive DDA.
Definition PTATY.h:29
@ FlowS_DDA
Flow sensitive DDA.
Definition PTATY.h:30
@ CSSummary_WPA
Summary based context sensitive WPA.
Definition PTATY.h:18
@ CFLFSCI_WPA
Flow-insensitive, context-sensitive CFL-reachability-based analysis.
Definition PTATY.h:24
@ AndersenWaveDiff_WPA
Diff wave propagation andersen-style WPA.
Definition PTATY.h:15
@ CFLFICI_WPA
Flow-, context-, insensitive CFL-reachability-based analysis.
Definition PTATY.h:23
@ TypeCPP_WPA
Type-based analysis for C++.
Definition PTATY.h:26
@ FSDATAFLOW_WPA
Traditional Dataflow-based flow sensitive WPA.
Definition PTATY.h:19
@ Steensgaard_WPA
Steensgaard PTA.
Definition PTATY.h:16
@ FSCS_WPA
Flow-, context- sensitive WPA.
Definition PTATY.h:22
@ CFLFSCS_WPA
Flow-, context-, CFL-reachability-based analysis.
Definition PTATY.h:25
@ Andersen_BASE
Base Andersen PTA.
Definition PTATY.h:11
@ AndersenSCD_WPA
Selective cycle detection andersen-style WPA.
Definition PTATY.h:13

◆ PTBackingType

How the PTData used is implemented.

Enumerator
Mutable 
Persistent 

Definition at line 47 of file PTATY.h.

48{
49 Mutable,
51};
@ Mutable
Definition PTATY.h:49
@ Persistent
Definition PTATY.h:50

◆ TargetABI

enum class SVF::TargetABI
strong

C++ ABI inferred from the target triple.

Enumerator
Itanium 
MSVC 

Definition at line 45 of file LLVMUtil.h.

46{
47 Itanium,
48 MSVC,
49};

◆ ZeroBehavior

The behavior an operation has on an input of 0.

Enumerator
ZB_Undefined 

The returned value is undefined.

ZB_Max 

The returned value is numeric_limits<T>::max().

ZB_Width 

The returned value is numeric_limits<T>::digits.

Definition at line 38 of file SparseBitVector.h.

39{
43 ZB_Max,
46};
@ ZB_Undefined
The returned value is undefined.
@ ZB_Max
The returned value is numeric_limits<T>::max().
@ ZB_Width
The returned value is numeric_limits<T>::digits.

Function Documentation

◆ children()

template<class GraphType>
iter_range< typename GenericGraphTraits< GraphType >::ChildIteratorType > SVF::children ( const typename GenericGraphTraits< GraphType >::NodeRef & G)

Definition at line 126 of file GraphTraits.h.

◆ children_edges()

template<class GraphType>
iter_range< typename GenericGraphTraits< GraphType >::ChildEdgeIteratorType > SVF::children_edges ( const typename GenericGraphTraits< GraphType >::NodeRef & G)

◆ countLeadingZeros()

template<typename T>
unsigned SVF::countLeadingZeros ( T Val,
ZeroBehavior ZB = ZB_Width )

Count number of 0's from the most significant bit to the least stopping at the first 1.

Only unsigned integral types are allowed.

Parameters
ZBthe behavior on an input of 0. Only ZB_Width and ZB_Undefined are valid arguments.

Definition at line 213 of file SparseBitVector.h.

214{
215 static_assert(std::numeric_limits<T>::is_integer &&
216 !std::numeric_limits<T>::is_signed,
217 "Only unsigned integral types are allowed.");
218 return LeadingZerosCounter<T, sizeof(T)>::count(Val, ZB);
219}
int count
Definition cJSON.h:216

◆ countPopulation()

template<typename T>
unsigned SVF::countPopulation ( T Value)
inline

Count the number of set bits in a value. Ex. countPopulation(0xF000F000) = 8 Returns 0 if the word is zero.

Definition at line 241 of file SparseBitVector.h.

242{
243 static_assert(std::numeric_limits<T>::is_integer &&
244 !std::numeric_limits<T>::is_signed,
245 "Only unsigned integral types are allowed.");
246 return PopulationCounter<T, sizeof(T)>::count(Value);
247}
llvm::Value Value
LLVM Basic classes.
Definition BasicTypes.h:80

◆ countTrailingZeros()

template<typename T>
unsigned SVF::countTrailingZeros ( T Val,
ZeroBehavior ZB = ZB_Width )

Count number of 0's from the least significant bit to the most stopping at the first 1.

Only unsigned integral types are allowed.

Parameters
ZBthe behavior on an input of 0. Only ZB_Width and ZB_Undefined are valid arguments.

Definition at line 121 of file SparseBitVector.h.

122{
123 static_assert(std::numeric_limits<T>::is_integer &&
124 !std::numeric_limits<T>::is_signed,
125 "Only unsigned integral types are allowed.");
126 return TrailingZerosCounter<T, sizeof(T)>::count(Val, ZB);
127}

◆ dump()

template<unsigned ElementSize>
void SVF::dump ( const SparseBitVector< ElementSize > & LHS,
std::ostream & out )

Definition at line 1235 of file SparseBitVector.h.

1236{
1237 out << "[";
1238
1240 be = LHS.end();
1241 if (bi != be)
1242 {
1243 out << *bi;
1244 for (++bi; bi != be; ++bi)
1245 {
1246 out << " " << *bi;
1247 }
1248 }
1249 out << "]\n";
1250}
SparseBitVectorIterator iterator
iterator begin() const

◆ inverse_children()

template<class GraphType>
iter_range< typename GenericGraphTraits< Inverse< GraphType > >::ChildIteratorType > SVF::inverse_children ( const typename GenericGraphTraits< GraphType >::NodeRef & G)

Definition at line 134 of file GraphTraits.h.

135{
136 return make_range(GenericGraphTraits<Inverse<GraphType>>::child_begin(G),
138}

◆ inverse_nodes()

template<class GraphType>
iter_range< typename GenericGraphTraits< Inverse< GraphType > >::nodes_iterator > SVF::inverse_nodes ( const GraphType & G)

Definition at line 118 of file GraphTraits.h.

119{
120 return make_range(GenericGraphTraits<Inverse<GraphType>>::nodes_begin(G),
122}

◆ isMTAStatEnabled()

bool SVF::isMTAStatEnabled ( )
inline

MTA's phase and slice reports are opt-in. PStat itself defaults to true in SVF, so its value alone does not indicate that the user requested -stat.

Definition at line 46 of file MTAStat.h.

47{
48 return Options::PStat.isSet() && Options::PStat();
49}
static const Option< bool > PStat
Definition Options.h:117

◆ make_pointee_range()

template<typename RangeT, typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iter_range< pointee_iter< WrappedIteratorT > > SVF::make_pointee_range ( RangeT && Range)

Definition at line 355 of file iterator.h.

356{
357 using PointeeIteratorT = pointee_iter<WrappedIteratorT>;
358 return make_range(PointeeIteratorT(std::begin(std::forward<RangeT>(Range))),
359 PointeeIteratorT(std::end(std::forward<RangeT>(Range))));
360}

◆ make_pointer_range()

template<typename RangeT, typename WrappedIteratorT = decltype(std::begin(std::declval<RangeT>()))>
iter_range< pointer_iterator< WrappedIteratorT > > SVF::make_pointer_range ( RangeT && Range)

Definition at line 391 of file iterator.h.

392{
393 using PointerIteratorT = pointer_iterator<WrappedIteratorT>;
394 return make_range(PointerIteratorT(std::begin(std::forward<RangeT>(Range))),
395 PointerIteratorT(std::end(std::forward<RangeT>(Range))));
396}

◆ make_range() [1/2]

template<typename T>
iter_range< T > SVF::make_range ( std::pair< T, T > p)

Definition at line 69 of file iterator_range.h.

70{
71 return iter_range<T>(std::move(p.first), std::move(p.second));
72}
cJSON * p
Definition cJSON.cpp:2559

◆ make_range() [2/2]

template<class T>
iter_range< T > SVF::make_range ( T x,
T y )

Convenience function for iterating over sub-ranges.

This provides a bit of syntactic sugar to make using sub-ranges in for loops a bit easier. Analogous to std::make_pair().

Definition at line 64 of file iterator_range.h.

65{
66 return iter_range<T>(std::move(x), std::move(y));
67}

◆ map_iter()

template<class ItTy, class FuncTy>
mapped_iter< ItTy, FuncTy > SVF::map_iter ( ItTy I,
FuncTy F )
inline

Definition at line 492 of file GenericGraph.h.

493{
494 return mapped_iter<ItTy, FuncTy>(std::move(I), std::move(F));
495}

◆ nodes()

template<class GraphType>
iter_range< typename GenericGraphTraits< GraphType >::nodes_iterator > SVF::nodes ( const GraphType & G)

◆ operator%()

IntervalValue SVF::operator% ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Divide IntervalValues.

Definition at line 645 of file IntervalValue.h.

647{
648 if (lhs.isBottom() || rhs.isBottom())
649 {
650 return IntervalValue::bottom();
651 }
652 else if (rhs.contains(0))
653 {
654 return lhs.is_zero() ? IntervalValue(0, 0) : IntervalValue::top();
655 }
656 else if (lhs.is_numeral() && rhs.is_numeral())
657 {
658 return IntervalValue(lhs.lb() % rhs.lb(), lhs.lb() % rhs.lb());
659 }
660 else
661 {
662 BoundedInt n_ub = max(abs(lhs.lb()), abs(lhs.ub()));
663 BoundedInt d_ub = max(abs(rhs.lb()), rhs.ub()) - 1;
664 BoundedInt ub = min(n_ub, d_ub);
665
666 if (lhs.lb().getNumeral() < 0)
667 {
668 if (lhs.ub().getNumeral() > 0)
669 {
670 return IntervalValue(-ub, ub);
671 }
672 else
673 {
674 return IntervalValue(-ub, 0);
675 }
676 }
677 else
678 {
679 return IntervalValue(0, ub);
680 }
681 }
682}
A class representing a bounded 64-bit integer.
s64_t getNumeral() const
Retrieves the numeral value of the BoundedInt object.
const BoundedInt & ub() const
Return the upper bound.
bool is_numeral() const
Return true if the IntervalValue is a number [num, num].
bool isBottom() const
bool is_zero() const
Return true if the IntervalValue is [0, 0].
static IntervalValue bottom()
Create the bottom IntervalValue [+inf, -inf].
const BoundedInt & lb() const
Return the lower bound.
bool contains(int n) const
Return true if the IntervalValue contains n.

◆ operator&() [1/3]

IntervalValue SVF::operator& ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Bitwise AND of IntervalValues.

Definition at line 949 of file IntervalValue.h.

950{
951 if (lhs.isBottom() || rhs.isBottom())
952 return IntervalValue::bottom();
953 else if (lhs.is_numeral() && rhs.is_numeral())
954 {
955 return IntervalValue(lhs.lb() & rhs.lb());
956 }
957 else if (lhs.lb().getNumeral() >= 0 && rhs.lb().getNumeral() >= 0)
958 {
959 return IntervalValue((s64_t) 0, min(lhs.ub(), rhs.ub()));
960 }
961 else if (lhs.lb().getNumeral() >= 0)
962 {
963 return IntervalValue((s64_t) 0, lhs.ub());
964 }
965 else if (rhs.lb().getNumeral() >= 0)
966 {
967 return IntervalValue((s64_t) 0, rhs.ub());
968 }
969 else
970 {
971 return IntervalValue::top();
972 }
973}
static IntervalValue top()
Create the IntervalValue [-inf, +inf].
signed long long s64_t
Definition GeneralType.h:70

◆ operator&() [2/3]

PointsTo SVF::operator& ( const PointsTo & lhs,
const PointsTo & rhs )

Returns a new lhs & rhs.

Definition at line 585 of file PointsTo.cpp.

586{
587 // TODO: optimise.
588 PointsTo result = lhs;
589 result &= rhs;
590 return result;
591}

◆ operator&() [3/3]

template<unsigned ElementSize>
SparseBitVector< ElementSize > SVF::operator& ( const SparseBitVector< ElementSize > & LHS,
const SparseBitVector< ElementSize > & RHS )
inline

Definition at line 1215 of file SparseBitVector.h.

1217{
1218 SparseBitVector<ElementSize> Result(LHS);
1219 Result &= RHS;
1220 return Result;
1221}

◆ operator&=() [1/2]

template<unsigned ElementSize>
bool SVF::operator&= ( SparseBitVector< ElementSize > & LHS,
const SparseBitVector< ElementSize > * RHS )
inline

Definition at line 1195 of file SparseBitVector.h.

1197{
1198 return LHS &= *RHS;
1199}

◆ operator&=() [2/2]

template<unsigned ElementSize>
bool SVF::operator&= ( SparseBitVector< ElementSize > * LHS,
const SparseBitVector< ElementSize > & RHS )
inline

Definition at line 1188 of file SparseBitVector.h.

1190{
1191 return LHS->operator&=(RHS);
1192}

◆ operator*()

IntervalValue SVF::operator* ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Multiply IntervalValues.

Definition at line 583 of file IntervalValue.h.

585{
586 if (lhs.isBottom() || rhs.isBottom())
587 {
588 return IntervalValue::bottom();
589 }
590 else
591 {
592 BoundedInt ll = lhs.lb() * rhs.lb();
593 BoundedInt lu = lhs.lb() * rhs.ub();
594 BoundedInt ul = lhs.ub() * rhs.lb();
595 BoundedInt uu = lhs.ub() * rhs.ub();
596 std::vector<BoundedInt> vec{ll, lu, ul, uu};
597 return IntervalValue(BoundedInt::min(vec),
598 BoundedInt::max(vec));
599 }
600}
friend BoundedInt max(const BoundedInt &lhs, const BoundedInt &rhs)
friend BoundedInt min(const BoundedInt &lhs, const BoundedInt &rhs)

◆ operator+()

IntervalValue SVF::operator+ ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Add IntervalValues.

Definition at line 547 of file IntervalValue.h.

549{
550 if (lhs.isBottom() || rhs.isBottom())
551 {
552 return IntervalValue::bottom();
553 }
554 else if (lhs.isTop() || rhs.isTop())
555 {
556 return IntervalValue::top();
557 }
558 else
559 {
560 return IntervalValue(lhs.lb() + rhs.lb(), lhs.ub() + rhs.ub());
561 }
562}
bool isTop() const

◆ operator-() [1/3]

IntervalValue SVF::operator- ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Subtract IntervalValues.

Definition at line 565 of file IntervalValue.h.

567{
568 if (lhs.isBottom() || rhs.isBottom())
569 {
570 return IntervalValue::bottom();
571 }
572 else if (lhs.isTop() || rhs.isTop())
573 {
574 return IntervalValue::top();
575 }
576 else
577 {
578 return IntervalValue(lhs.lb() - rhs.ub(), lhs.ub() - rhs.lb());
579 }
580}

◆ operator-() [2/3]

PointsTo SVF::operator- ( const PointsTo & lhs,
const PointsTo & rhs )

Returns a new lhs - rhs.

Definition at line 593 of file PointsTo.cpp.

594{
595 // TODO: optimise.
596 PointsTo result = lhs;
597 result -= rhs;
598 return result;
599}

◆ operator-() [3/3]

template<unsigned ElementSize>
SparseBitVector< ElementSize > SVF::operator- ( const SparseBitVector< ElementSize > & LHS,
const SparseBitVector< ElementSize > & RHS )
inline

Definition at line 1225 of file SparseBitVector.h.

1227{
1229 Result.intersectWithComplement(LHS, RHS);
1230 return Result;
1231}
bool intersectWithComplement(const SparseBitVector &RHS)

◆ operator/()

IntervalValue SVF::operator/ ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Divide IntervalValues.

Definition at line 603 of file IntervalValue.h.

605{
606 if (lhs.isBottom() || rhs.isBottom())
607 {
608 return IntervalValue::bottom();
609 }
610 else if (rhs.contains(0))
611 {
612 IntervalValue lb = IntervalValue::create(rhs.lb(), -1);
613 IntervalValue ub = IntervalValue::create(1, rhs.ub());
614 IntervalValue l_res = lhs / lb;
615 IntervalValue r_res = lhs / ub;
616 l_res.join_with(r_res);
617 return l_res;
618 }
619 else if (lhs.contains(0))
620 {
621 IntervalValue lb = IntervalValue::create(lhs.lb(), -1);
623 IntervalValue l_res = lb / rhs;
624 IntervalValue r_res = ub / rhs;
625 l_res.join_with(r_res);
626 l_res.join_with(IntervalValue(0));
627 return l_res;
628 }
629 else
630 {
631 // Neither the dividend nor the divisor contains 0
632 BoundedInt ll = lhs.lb() / rhs.lb();
633 BoundedInt lu = lhs.lb() / rhs.ub();
634 BoundedInt ul = lhs.ub() / rhs.lb();
635 BoundedInt uu = lhs.ub() / rhs.ub();
636 std::vector<BoundedInt> vec{ll, lu, ul, uu};
637
639 BoundedInt::max(vec));
640 return res;
641 }
642}
void join_with(const IntervalValue &other)
Current IntervalValue joins with another IntervalValue.
static IntervalValue create(const BoundedInt &lb, const BoundedInt &ub)

◆ operator<()

IntervalValue SVF::operator< ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Definition at line 736 of file IntervalValue.h.

737{
738 // If either lhs or rhs is bottom, the result is bottom
739 if (lhs.isBottom() || rhs.isBottom())
740 {
741 return IntervalValue::bottom();
742 }
743 // If either lhs or rhs is top, the result is top
744 else if (lhs.isTop() || rhs.isTop())
745 {
746 return IntervalValue::top();
747 }
748 else
749 {
750 // If both lhs and rhs are numerals (lb = ub), directly compare their values
751 if (lhs.is_numeral() && rhs.is_numeral())
752 {
753 // It means lhs.lb() < rhs.lb()? true: false
754 return lhs.lb().geq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);
755 }
756 else
757 {
758 // Return [1,1] means lhs is totally less than rhs
759 // When lhs.ub < rhs.lb, e.g., lhs:[1, 2] rhs:[3, 4]
760 // lhs.ub(2) < rhs.lb(3)
761 // It means lhs.ub() < rhs.lb()
762 if (!lhs.ub().geq(rhs.lb()))
763 {
764 return IntervalValue(1, 1);
765 }
766 // Return [0,0] means lhs is totally impossible to be less than rhs
767 // i.e., lhs is totally greater than or equal to rhs
768 // When lhs.lb >= rhs.ub, e.g., lhs:[4,5] rhs:[3,4]
769 // lhs.lb(4) >= rhs.ub(4)
770 else if (lhs.lb().geq(rhs.ub()))
771 {
772 return IntervalValue(0, 0);
773 }
774 // For other cases, lhs can be less than rhs or not, depending on the values
775 // e.g., lhs: [2,4], rhs: [1,3],
776 // lhs can be less than rhs if lhs is 2, rhs is 3.
777 // lhs can also not be less than rhs if lhs is 4 and rhs is 1
778 else
779 {
780 return IntervalValue(0, 1);
781 }
782 }
783 }
784}
bool geq(const BoundedInt &rhs) const

◆ operator<<() [1/5]

IntervalValue SVF::operator<< ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Left binary shift of IntervalValues.

Definition at line 888 of file IntervalValue.h.

889{
890 if (lhs.isBottom() || rhs.isBottom())
891 return IntervalValue::bottom();
892 if (lhs.isTop() && rhs.isTop())
893 return IntervalValue::top();
894 else
895 {
896 IntervalValue shift = rhs;
898 if (shift.isBottom())
899 return IntervalValue::bottom();
900 // Zero stays zero for any admitted shift, even an unbounded one.
901 if (lhs.equals(IntervalValue(0)))
902 return lhs;
903 // 1 << 31 overflows a signed 32-bit coefficient and may create an
904 // invalid interval whose lower bound is greater than its upper bound.
905 if (shift.ub().is_infinity() || shift.ub().getIntNumeral() >= 31)
906 return IntervalValue::top();
907 const s32_t low = static_cast<s32_t>(shift.lb().getIntNumeral());
908 const s32_t high = static_cast<s32_t>(shift.ub().getIntNumeral());
909 return lhs * IntervalValue(s64_t(1) << low, s64_t(1) << high);
910 }
911}
bool is_infinity() const
s64_t getIntNumeral() const
void meet_with(const IntervalValue &other)
Return a intersected IntervalValue.
static BoundedInt plus_infinity()
Get plus infinity +inf.
bool equals(const IntervalValue &other) const
Equality comparison.
signed s32_t
Definition GeneralType.h:68

◆ operator<<() [2/5]

template<typename F, typename S>
OutStream & SVF::operator<< ( OutStream & o,
const std::pair< F, S > & var )

Definition at line 331 of file SVFValue.h.

332{
333 o << "<" << var.first << ", " << var.second << ">";
334 return o;
335}

◆ operator<<() [3/5]

std::ostream & SVF::operator<< ( std::ostream & o,
const IntervalValue & IntervalValue )
inline

Write an IntervalValue on a stream.

Definition at line 1034 of file IntervalValue.h.

1036{
1038 return o;
1039}
void dump(std::ostream &o) const

◆ operator<<() [4/5]

std::ostream & SVF::operator<< ( std::ostream & o,
const MRVer & mrver )

Definition at line 812 of file MemRegion.cpp.

813{
814 o << "MRVERID: " << mrver.getID() <<" MemRegion: " << mrver.getMR()->dumpStr() << " MRVERSION: " << mrver.getSSAVersion() << " MSSADef: " << mrver.getDef()->getType() << ", "
815 << mrver.getDef()->getMR()->dumpStr() ;
816 return o;
817}
MRVERSION getSSAVersion() const
Return SSA version.
Definition MSSAMuChi.h:70
const MemRegion * getMR() const
Return the memory region.
Definition MSSAMuChi.h:64
MRVERID getID() const
Get MRVERID.
Definition MSSAMuChi.h:82
MSSADef * getDef() const
Get MSSADef.
Definition MSSAMuChi.h:76
DEFTYPE getType() const
Return type of this CHI.
Definition MSSAMuChi.h:361
const MemRegion * getMR() const
Return memory region.
Definition MSSAMuChi.h:355
std::string dumpStr() const
Dump string.
Definition MemRegion.h:97

◆ operator<<() [5/5]

std::ostream & SVF::operator<< ( std::ostream & os,
const SVFType & type )

Definition at line 17 of file SVFType.cpp.

18{
19 type.print(os);
20 return os;
21}
newitem type
Definition cJSON.cpp:2739

◆ operator<=()

IntervalValue SVF::operator<= ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Definition at line 838 of file IntervalValue.h.

839{
840 // If either lhs or rhs is bottom, the result is bottom
841 if (lhs.isBottom() || rhs.isBottom())
842 {
843 return IntervalValue::bottom();
844 }
845 // If either lhs or rhs is top, the result is top
846 else if (lhs.isTop() || rhs.isTop())
847 {
848 return IntervalValue::top();
849 }
850 else
851 {
852 // If both lhs and rhs are numerals (lb = ub), directly compare their values
853 if (lhs.is_numeral() && rhs.is_numeral())
854 {
855 return lhs.lb().leq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);
856 }
857 else
858 {
859 // Return [1,1] means lhs is totally less than or equal to rhs
860 // When lhs.ub <= rhs.lb, e.g., lhs:[1, 2] rhs:[2, 3]
861 // lhs.ub(2) <= rhs.lb(2)
862 if (lhs.ub().leq(rhs.lb()))
863 {
864 return IntervalValue(1, 1);
865 }
866 // Return [0,0] means lhs is totally impossible to be less than or equal to rhs
867 // i.e., lhs is totally greater than rhs
868 // When lhs.lb > rhs.ub, e.g., lhs:[3, 4] rhs:[1, 2]
869 // lhs.lb(3) > rhs.ub(2)
870 // It means lhs.lb() > rhs.ub()
871 else if (!lhs.lb().leq(rhs.ub()))
872 {
873 return IntervalValue(0, 0);
874 }
875 // For other cases, lhs can be less than or equal to rhs or not, depending on the values
876 // e.g., lhs: [2,4], rhs: [1,3],
877 // lhs can be less than or equal to rhs if lhs is 3, rhs is 3.
878 // lhs can also not be less than or equal to rhs if lhs is 3 and rhs is 2
879 else
880 {
881 return IntervalValue(0, 1);
882 }
883 }
884 }
885}
bool leq(const BoundedInt &rhs) const

◆ operator>()

IntervalValue SVF::operator> ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Definition at line 685 of file IntervalValue.h.

686{
687 // If either lhs or rhs is bottom, the result is bottom
688 if (lhs.isBottom() || rhs.isBottom())
689 {
690 return IntervalValue::bottom();
691 }
692 // If either lhs or rhs is top, the result is top
693 else if (lhs.isTop() || rhs.isTop())
694 {
695 return IntervalValue::top();
696 }
697 else
698 {
699 // If both lhs and rhs are numerals (lb = ub), directly compare their values
700 if (lhs.is_numeral() && rhs.is_numeral())
701 {
702 // It means lhs.lb() > rhs.lb()? true: false
703 return lhs.lb().leq(rhs.lb()) ? IntervalValue(0, 0) : IntervalValue(1, 1);
704 }
705 else
706 {
707 // Return [1,1] means lhs is totally greater than rhs
708 // When lhs.lb > rhs.ub, e.g., lhs:[3, 4] rhs:[1, 2]
709 // lhs.lb(3) > rhs.ub(2)
710 // It means lhs.lb() > rhs.ub()
711 if (!lhs.lb().leq(rhs.ub()))
712 {
713 return IntervalValue(1, 1);
714 }
715 // Return [0,0] means lhs is totally impossible to be greater than rhs
716 // i.e., lhs is totally less than or equal to rhs
717 // When lhs.ub <= rhs.lb, e.g., lhs:[3, 4] rhs:[4,5]
718 // lhs.ub(4) <= rhs.lb(4)
719 else if (lhs.ub().leq(rhs.lb()))
720 {
721 return IntervalValue(0, 0);
722 }
723 // For other cases, lhs can be greater than or not, depending on the values
724 // e.g., lhs: [2,4], rhs: [1,3],
725 // lhs can be greater than rhs if lhs is 4 and rhs is 1.
726 // lhs can also not be greater than rhs if lhs is 2 and rhs is 3
727 else
728 {
729 return IntervalValue(0, 1);
730 }
731 }
732 }
733}

◆ operator>=()

IntervalValue SVF::operator>= ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Definition at line 788 of file IntervalValue.h.

789{
790 // If either lhs or rhs is bottom, the result is bottom
791 if (lhs.isBottom() || rhs.isBottom())
792 {
793 return IntervalValue::bottom();
794 }
795 // If either lhs or rhs is top, the result is top
796 else if (lhs.isTop() || rhs.isTop())
797 {
798 return IntervalValue::top();
799 }
800 else
801 {
802 // If both lhs and rhs are numerals (lb = ub), directly compare their values
803 if (lhs.is_numeral() && rhs.is_numeral())
804 {
805 return lhs.lb().geq(rhs.lb()) ? IntervalValue(1, 1) : IntervalValue(0, 0);
806 }
807 else
808 {
809 // Return [1,1] means lhs is totally greater than or equal to rhs
810 // When lhs.lb >= rhs.ub, e.g., lhs:[2, 3] rhs:[1, 2]
811 // lhs.lb(2) >= rhs.ub(2)
812 if (lhs.lb().geq(rhs.ub()))
813 {
814 return IntervalValue(1, 1);
815 }
816 // Return [0,0] means lhs is totally impossible to be greater than or equal to rhs
817 // i.e., lhs is totally less than rhs
818 // When lhs.ub < rhs.lb, e.g., lhs:[1, 2] rhs:[3, 4]
819 // lhs.ub(2) < rhs.lb(3)
820 // It means lhs.ub() < rhs.lb()
821 else if (!lhs.ub().geq(rhs.lb()))
822 {
823 return IntervalValue(0, 0);
824 }
825 // For other cases, lhs can be greater than or equal to rhs or not, depending on the values
826 // e.g., lhs: [2,4], rhs: [1,3],
827 // lhs can be greater than or equal to rhs if lhs is 3, rhs is 2.
828 // lhs can also not be greater than or equal to rhs if lhs is 2 and rhs is 3
829 else
830 {
831 return IntervalValue(0, 1);
832 }
833 }
834 }
835}

◆ operator>>()

IntervalValue SVF::operator>> ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Left binary shift of IntervalValues.

Definition at line 914 of file IntervalValue.h.

915{
916 if (lhs.isBottom() || rhs.isBottom())
917 return IntervalValue::bottom();
918 else if (lhs.isTop() && rhs.isTop())
919 return IntervalValue::top();
920 else
921 {
922 IntervalValue shift = rhs;
924 if (shift.isBottom())
925 return IntervalValue::bottom();
926 if (lhs.contains(0))
927 {
930 IntervalValue tmp = l >> rhs;
931 tmp.join_with(u >> rhs);
932 tmp.join_with(IntervalValue(0));
933 return tmp;
934 }
935 else
936 {
937 BoundedInt ll = lhs.lb() >> shift.lb();
938 BoundedInt lu = lhs.lb() >> shift.ub();
939 BoundedInt ul = lhs.ub() >> shift.lb();
940 BoundedInt uu = lhs.ub() >> shift.ub();
941 std::vector<BoundedInt> vec{ll, lu, ul, uu};
942 return IntervalValue(BoundedInt::min(vec),
943 BoundedInt::max(vec));
944 }
945 }
946}

◆ operator^()

IntervalValue SVF::operator^ ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Bitwise XOR of IntervalValues.

Definition at line 1005 of file IntervalValue.h.

1006{
1007 auto next_power_of_2 = [](s64_t num)
1008 {
1009 int i = 1;
1010 while ((num >> i) != 0)
1011 {
1012 ++i;
1013 }
1014 return 1 << i;
1015 };
1016 if (lhs.isBottom() || rhs.isBottom())
1017 return IntervalValue::bottom();
1018 else if (lhs.is_numeral() && rhs.is_numeral())
1019 return IntervalValue(lhs.lb() ^ rhs.lb());
1020 else if (lhs.lb().getNumeral() >= 0 && !lhs.ub().is_infinity() &&
1021 rhs.lb().getNumeral() >= 0 && !rhs.ub().is_infinity())
1022 {
1023 s64_t m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());
1024 s64_t ub = next_power_of_2(s64_t(m)) - 1;
1025 return IntervalValue((s64_t) 0, (s64_t) ub);
1026 }
1027 else
1028 {
1029 return IntervalValue::top();
1030 }
1031}

◆ operator|() [1/3]

IntervalValue SVF::operator| ( const IntervalValue & lhs,
const IntervalValue & rhs )
inline

Bitwise OR of IntervalValues.

Definition at line 976 of file IntervalValue.h.

977{
978 auto next_power_of_2 = [](s64_t num)
979 {
980 int i = 1;
981 while ((num >> i) != 0)
982 {
983 ++i;
984 }
985 return 1 << i;
986 };
987 if (lhs.isBottom() || rhs.isBottom())
988 return IntervalValue::bottom();
989 else if (lhs.is_numeral() && rhs.is_numeral())
990 return IntervalValue(lhs.lb() | rhs.lb());
991 else if (lhs.lb().getNumeral() >= 0 && !lhs.ub().is_infinity() &&
992 rhs.lb().getNumeral() >= 0 && !rhs.ub().is_infinity())
993 {
994 s64_t m = std::max(lhs.ub().getNumeral(), rhs.ub().getNumeral());
995 s64_t ub = next_power_of_2(s64_t(m)) - 1;
996 return IntervalValue((s64_t) 0, (s64_t) ub);
997 }
998 else
999 {
1000 return IntervalValue::top();
1001 }
1002}

◆ operator|() [2/3]

PointsTo SVF::operator| ( const PointsTo & lhs,
const PointsTo & rhs )

Returns a new lhs | rhs.

Definition at line 577 of file PointsTo.cpp.

578{
579 // TODO: optimise.
580 PointsTo result = lhs;
581 result |= rhs;
582 return result;
583}

◆ operator|() [3/3]

template<unsigned ElementSize>
SparseBitVector< ElementSize > SVF::operator| ( const SparseBitVector< ElementSize > & LHS,
const SparseBitVector< ElementSize > & RHS )
inline

Definition at line 1205 of file SparseBitVector.h.

1207{
1208 SparseBitVector<ElementSize> Result(LHS);
1209 Result |= RHS;
1210 return Result;
1211}

◆ operator|=() [1/2]

template<unsigned ElementSize>
bool SVF::operator|= ( SparseBitVector< ElementSize > & LHS,
const SparseBitVector< ElementSize > * RHS )
inline

Definition at line 1174 of file SparseBitVector.h.

1176{
1177 return LHS |= *RHS;
1178}

◆ operator|=() [2/2]

template<unsigned ElementSize>
bool SVF::operator|= ( SparseBitVector< ElementSize > * LHS,
const SparseBitVector< ElementSize > & RHS )
inline

Definition at line 1181 of file SparseBitVector.h.

1183{
1184 return LHS->operator|=(RHS);
1185}

◆ ViewGraph()

template<typename GraphType>
void SVF::ViewGraph ( const GraphType & G,
const std::string & name,
bool ShortNames = false,
GraphProgram::Name Program = GraphProgram::DOT )

ViewGraph - Emit a dot graph, run 'dot', run gv on the postscript file, then cleanup. For use from the debugger.

Definition at line 377 of file GraphWriter.h.

380{
381 SVF::WriteGraph(G, ShortNames);
382}
std::ofstream & WriteGraph(std::ofstream &O, const GraphType &G, bool ShortNames=false)

◆ WriteGraph() [1/2]

template<typename GraphType>
std::string SVF::WriteGraph ( const GraphType & G,
bool ShortNames = false,
std::string Filename = "" )

Writes graph into a provided Filename. If Filename is empty, generates a random one.

Returns
The resulting filename, or an empty string if writing failed.

Definition at line 351 of file GraphWriter.h.

354{
355
356 std::ofstream O(Filename);
357
358 if (O.fail())
359 {
360 std::cerr << "error opening file '" << Filename << "' for writing!\n";
361 O.close();
362 return "";
363 }
364
365 SVF::WriteGraph(O, G, ShortNames);
366 O.close();
367
368 std::cerr << " done. \n";
369
370 return Filename;
371}

◆ WriteGraph() [2/2]

template<typename GraphType>
std::ofstream & SVF::WriteGraph ( std::ofstream & O,
const GraphType & G,
bool ShortNames = false )

Definition at line 334 of file GraphWriter.h.

336{
337 // Start the graph emission process...
338 GraphWriter<GraphType> W(O, G, ShortNames);
339
340 // Emit the graph.
341 W.writeGraph("");
342
343 return O;
344}