clang  8.0.0svn
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
clang::ento::ExplodedNode Class Reference

#include "clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h"

Inheritance diagram for clang::ento::ExplodedNode:
Inheritance graph
[legend]
Collaboration diagram for clang::ento::ExplodedNode:
Collaboration graph
[legend]

Classes

class  Auditor
 

Public Types

using succ_iterator = ExplodedNode *const *
 
using const_succ_iterator = const ExplodedNode *const *
 
using pred_iterator = ExplodedNode *const *
 
using const_pred_iterator = const ExplodedNode *const *
 

Public Member Functions

 ExplodedNode (const ProgramPoint &loc, ProgramStateRef state, bool IsSink)
 
ProgramPoint getLocation () const
 getLocation - Returns the edge associated with the given node. More...
 
const LocationContextgetLocationContext () const
 
const StackFrameContextgetStackFrame () const
 
const DeclgetCodeDecl () const
 
CFGgetCFG () const
 
ParentMapgetParentMap () const
 
template<typename T >
T & getAnalysis () const
 
const ProgramStateRefgetState () const
 
template<typename T >
Optional< T > getLocationAs () const LLVM_LVALUE_FUNCTION
 
SVal getSVal (const Stmt *S) const
 Get the value of an arbitrary expression at this node. More...
 
void Profile (llvm::FoldingSetNodeID &ID) const
 
void addPredecessor (ExplodedNode *V, ExplodedGraph &G)
 addPredeccessor - Adds a predecessor to the current node, and in tandem add this node as a successor of the other node. More...
 
unsigned succ_size () const
 
unsigned pred_size () const
 
bool succ_empty () const
 
bool pred_empty () const
 
bool isSink () const
 
bool hasSinglePred () const
 
ExplodedNodegetFirstPred ()
 
const ExplodedNodegetFirstPred () const
 
const ExplodedNodegetFirstSucc () const
 
pred_iterator pred_begin ()
 
pred_iterator pred_end ()
 
const_pred_iterator pred_begin () const
 
const_pred_iterator pred_end () const
 
succ_iterator succ_begin ()
 
succ_iterator succ_end ()
 
const_succ_iterator succ_begin () const
 
const_succ_iterator succ_end () const
 

Static Public Member Functions

static void Profile (llvm::FoldingSetNodeID &ID, const ProgramPoint &Loc, const ProgramStateRef &state, bool IsSink)
 
static void SetAuditor (Auditor *A)
 

Friends

class BranchNodeBuilder
 
class CoreEngine
 
class EndOfFunctionNodeBuilder
 
class ExplodedGraph
 
class IndirectGotoNodeBuilder
 
class NodeBuilder
 
class SwitchNodeBuilder
 

Detailed Description

Definition at line 66 of file ExplodedGraph.h.

Member Typedef Documentation

◆ const_pred_iterator

Definition at line 221 of file ExplodedGraph.h.

◆ const_succ_iterator

Definition at line 219 of file ExplodedGraph.h.

◆ pred_iterator

Definition at line 220 of file ExplodedGraph.h.

◆ succ_iterator

Definition at line 218 of file ExplodedGraph.h.

Constructor & Destructor Documentation

◆ ExplodedNode()

clang::ento::ExplodedNode::ExplodedNode ( const ProgramPoint loc,
ProgramStateRef  state,
bool  IsSink 
)
inlineexplicit

Definition at line 136 of file ExplodedGraph.h.

References isSink().

Member Function Documentation

◆ addPredecessor()

void ExplodedNode::addPredecessor ( ExplodedNode V,
ExplodedGraph G 
)

◆ getAnalysis()

template<typename T >
T& clang::ento::ExplodedNode::getAnalysis ( ) const
inline

Definition at line 160 of file ExplodedGraph.h.

References clang::LocationContext::getAnalysis(), and getLocationContext().

◆ getCFG()

CFG& clang::ento::ExplodedNode::getCFG ( ) const
inline

Definition at line 155 of file ExplodedGraph.h.

References clang::LocationContext::getCFG(), and getLocationContext().

◆ getCodeDecl()

const Decl& clang::ento::ExplodedNode::getCodeDecl ( ) const
inline

Definition at line 153 of file ExplodedGraph.h.

References clang::LocationContext::getDecl(), and getLocationContext().

Referenced by GetAllocationSite().

◆ getFirstPred() [1/2]

ExplodedNode* clang::ento::ExplodedNode::getFirstPred ( )
inline

◆ getFirstPred() [2/2]

const ExplodedNode* clang::ento::ExplodedNode::getFirstPred ( ) const
inline

Definition at line 209 of file ExplodedGraph.h.

References getFirstPred().

◆ getFirstSucc()

const ExplodedNode* clang::ento::ExplodedNode::getFirstSucc ( ) const
inline

Definition at line 213 of file ExplodedGraph.h.

References succ_begin(), and succ_empty().

Referenced by clang::ento::PathDiagnosticLocation::getNextStmt().

◆ getLocation()

ProgramPoint clang::ento::ExplodedNode::getLocation ( ) const
inline

◆ getLocationAs()

template<typename T >
Optional<T> clang::ento::ExplodedNode::getLocationAs ( ) const
inline

◆ getLocationContext()

const LocationContext* clang::ento::ExplodedNode::getLocationContext ( ) const
inline

Definition at line 145 of file ExplodedGraph.h.

References getLocation(), and clang::ProgramPoint::getLocationContext().

Referenced by clang::ento::ExprEngine::CreateCXXTemporaryObject(), clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::ExprEngine::evalBind(), clang::ento::ExprEngine::evalEagerlyAssumeBinOpBifurcation(), clang::ento::SwitchNodeBuilder::generateDefaultCaseNode(), generateMinimalDiagForBlockEdge(), clang::ento::BranchNodeBuilder::generateNode(), generatePathDiagnosticsForNode(), GetAllocationSite(), getAnalysis(), getArgumentValueString(), getAsPointeeSymbol(), getCFG(), getCodeDecl(), clang::ento::CheckerContext::getCurrentAnalysisDeclContext(), clang::ento::BugReport::getDeclWithIssue(), clang::ento::CheckerContext::getLocationContext(), clang::ento::IndirectGotoNodeBuilder::getLocationContext(), clang::ento::SwitchNodeBuilder::getLocationContext(), getLocationRegionIfReference(), getParentMap(), clang::ento::PathDiagnosticLocation::getStmt(), isInitializationOfVar(), clang::ento::ExplodedGraph::isInterestingLValueExpr(), isReferenceCountingPointerDestructor(), isSynthesizedAccessor(), clang::ento::WorkList::makeBFSBlockDFSContents(), clang::ento::WorkList::makeUnexploredFirst(), mayInlineDecl(), clang::ento::ExprEngine::ProcessAutomaticObjDtor(), clang::ento::ExprEngine::ProcessBaseDtor(), clang::ento::ExprEngine::processBranch(), clang::ento::ExprEngine::processCallExit(), clang::ento::ExprEngine::processCFGBlockEntrance(), clang::ento::ExprEngine::processCleanupTemporaryBranch(), clang::ento::ExprEngine::ProcessDeleteDtor(), clang::ento::ExprEngine::processEndOfFunction(), clang::ento::ExprEngine::ProcessInitializer(), clang::ento::ExprEngine::ProcessMemberDtor(), clang::ento::ExprEngine::ProcessNewAllocator(), clang::ento::ExprEngine::ProcessStmt(), clang::ento::ExprEngine::ProcessTemporaryDtor(), llvm::FoldingSetTrait< ObjectState >::Profile(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), clang::ento::ExprEngine::removeDeadOnEndOfFunction(), clang::ento::CheckerManager::runCheckersForBranchCondition(), clang::ento::CheckerManager::runCheckersForCallEvent(), clang::ento::CheckerManager::runCheckersForEndFunction(), clang::ento::updateLoopStack(), clang::ento::ExprEngine::VisitBlockExpr(), clang::ento::ExprEngine::VisitCallExpr(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::ento::ExprEngine::VisitCompoundLiteralExpr(), clang::ento::ExprEngine::VisitCXXCatchStmt(), clang::ento::ExprEngine::VisitCXXConstructExpr(), clang::ento::ExprEngine::VisitCXXNewAllocatorCall(), clang::ento::ExprEngine::VisitCXXNewExpr(), clang::ento::ExprEngine::VisitCXXThisExpr(), clang::ento::ExprEngine::VisitGCCAsmStmt(), clang::ento::ExprEngine::VisitGuardedExpr(), clang::ento::ExprEngine::VisitIncrementDecrementOperator(), clang::ento::ExprEngine::VisitInitListExpr(), clang::ento::ExprEngine::VisitLambdaExpr(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::ExprEngine::VisitLvalObjCIvarRefExpr(), clang::ento::ExprEngine::VisitObjCMessage(), clang::ento::ExprEngine::VisitOffsetOfExpr(), and wasRegionOfInterestModifiedAt().

◆ getParentMap()

ParentMap& clang::ento::ExplodedNode::getParentMap ( ) const
inline

◆ getStackFrame()

const StackFrameContext* clang::ento::ExplodedNode::getStackFrame ( ) const
inline

◆ getState()

const ProgramStateRef& clang::ento::ExplodedNode::getState ( ) const
inline

Definition at line 164 of file ExplodedGraph.h.

Referenced by clang::ento::mpi::MPIChecker::checkDoubleNonblocking(), clang::ento::CheckerContext::CheckerContext(), checkInvariantViolation(), clang::ento::ExprEngine::CreateCXXTemporaryObject(), clang::ento::ExprEngine::defaultEvalCall(), clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::ExprEngine::evalBind(), clang::ento::ExprEngine::evalEagerlyAssumeBinOpBifurcation(), generatePathDiagnosticsForNode(), GetAllocationSite(), getArgumentValueString(), getAsPointeeSymbol(), clang::ento::allocation_state::getContainerObjRegion(), getLocationRegionIfReference(), getNullConstraint(), getReturnTypeForMethod(), clang::ento::CheckerContext::getState(), clang::ento::ExplodedGraph::isInterestingLValueExpr(), isReferenceCountingPointerDestructor(), isSynthesizedAccessor(), clang::ento::ExprEngine::ProcessAutomaticObjDtor(), clang::ento::ExprEngine::ProcessBaseDtor(), clang::ento::ExprEngine::processBranch(), clang::ento::ExprEngine::processCallEnter(), clang::ento::ExprEngine::processCallExit(), clang::ento::ExprEngine::processCFGBlockEntrance(), clang::ento::ExprEngine::processCleanupTemporaryBranch(), clang::ento::ExprEngine::ProcessDeleteDtor(), clang::ento::ExprEngine::processEndOfFunction(), clang::ento::ExprEngine::ProcessInitializer(), clang::ento::ExprEngine::ProcessMemberDtor(), clang::ento::ExprEngine::ProcessNewAllocator(), clang::ento::ExprEngine::ProcessTemporaryDtor(), llvm::FoldingSetTrait< ObjectState >::Profile(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), clang::ento::ExprEngine::removeDead(), clang::ento::mpi::MPIBugReporter::reportUnmatchedWait(), clang::ento::CheckerManager::runCheckersForObjCMessage(), showBRDefaultDiagnostics(), clang::ento::updateLoopStack(), clang::ento::ExprEngine::VisitBlockExpr(), clang::ento::ExprEngine::VisitCallExpr(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::ento::ExprEngine::VisitCompoundLiteralExpr(), clang::ento::ExprEngine::VisitCXXCatchStmt(), clang::ento::ExprEngine::VisitCXXConstructExpr(), clang::ento::ExprEngine::VisitCXXDeleteExpr(), clang::ento::ExprEngine::VisitCXXNewAllocatorCall(), clang::ento::ExprEngine::VisitCXXNewExpr(), clang::ento::ExprEngine::VisitCXXThisExpr(), clang::ento::ExprEngine::VisitGCCAsmStmt(), clang::ento::ExprEngine::VisitGuardedExpr(), clang::ento::ExprEngine::VisitIncrementDecrementOperator(), clang::ento::ExprEngine::VisitInitListExpr(), clang::ento::ExprEngine::VisitLambdaExpr(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::ExprEngine::VisitLvalObjCIvarRefExpr(), clang::ento::ExprEngine::VisitMSAsmStmt(), clang::ento::ExprEngine::VisitObjCMessage(), clang::ento::ExprEngine::VisitOffsetOfExpr(), and wasRegionOfInterestModifiedAt().

◆ getSVal()

SVal clang::ento::ExplodedNode::getSVal ( const Stmt S) const
inline

Get the value of an arbitrary expression at this node.

Definition at line 172 of file ExplodedGraph.h.

Referenced by clang::ento::CheckerContext::getCalleeDecl(), and wasRegionOfInterestModifiedAt().

◆ hasSinglePred()

bool clang::ento::ExplodedNode::hasSinglePred ( ) const
inline

Definition at line 201 of file ExplodedGraph.h.

References pred_size().

Referenced by clang::ento::CoreEngine::dispatchWorkItem().

◆ isSink()

bool clang::ento::ExplodedNode::isSink ( ) const
inline

◆ pred_begin() [1/2]

pred_iterator clang::ento::ExplodedNode::pred_begin ( )
inline

◆ pred_begin() [2/2]

const_pred_iterator clang::ento::ExplodedNode::pred_begin ( ) const
inline

Definition at line 226 of file ExplodedGraph.h.

References pred_begin().

◆ pred_empty()

bool clang::ento::ExplodedNode::pred_empty ( ) const
inline

◆ pred_end() [1/2]

pred_iterator clang::ento::ExplodedNode::pred_end ( )
inline

Definition at line 224 of file ExplodedGraph.h.

Referenced by pred_end().

◆ pred_end() [2/2]

const_pred_iterator clang::ento::ExplodedNode::pred_end ( ) const
inline

Definition at line 229 of file ExplodedGraph.h.

References pred_end().

◆ pred_size()

unsigned clang::ento::ExplodedNode::pred_size ( ) const
inline

◆ Profile() [1/2]

static void clang::ento::ExplodedNode::Profile ( llvm::FoldingSetNodeID &  ID,
const ProgramPoint Loc,
const ProgramStateRef state,
bool  IsSink 
)
inlinestatic

Definition at line 176 of file ExplodedGraph.h.

Referenced by Profile().

◆ Profile() [2/2]

void clang::ento::ExplodedNode::Profile ( llvm::FoldingSetNodeID &  ID) const
inline

Definition at line 185 of file ExplodedGraph.h.

References addPredecessor(), isSink(), and Profile().

◆ SetAuditor()

void ExplodedNode::SetAuditor ( ExplodedNode::Auditor A)
static

◆ succ_begin() [1/2]

succ_iterator clang::ento::ExplodedNode::succ_begin ( )
inline

◆ succ_begin() [2/2]

const_succ_iterator clang::ento::ExplodedNode::succ_begin ( ) const
inline

Definition at line 236 of file ExplodedGraph.h.

References succ_begin().

◆ succ_empty()

bool clang::ento::ExplodedNode::succ_empty ( ) const
inline

Definition at line 196 of file ExplodedGraph.h.

Referenced by getFirstSucc().

◆ succ_end() [1/2]

succ_iterator clang::ento::ExplodedNode::succ_end ( )
inline

◆ succ_end() [2/2]

const_succ_iterator clang::ento::ExplodedNode::succ_end ( ) const
inline

Definition at line 239 of file ExplodedGraph.h.

References succ_end().

◆ succ_size()

unsigned clang::ento::ExplodedNode::succ_size ( ) const
inline

Friends And Related Function Documentation

◆ BranchNodeBuilder

friend class BranchNodeBuilder
friend

Definition at line 67 of file ExplodedGraph.h.

◆ CoreEngine

friend class CoreEngine
friend

Definition at line 68 of file ExplodedGraph.h.

◆ EndOfFunctionNodeBuilder

friend class EndOfFunctionNodeBuilder
friend

Definition at line 69 of file ExplodedGraph.h.

◆ ExplodedGraph

friend class ExplodedGraph
friend

Definition at line 70 of file ExplodedGraph.h.

◆ IndirectGotoNodeBuilder

friend class IndirectGotoNodeBuilder
friend

Definition at line 71 of file ExplodedGraph.h.

◆ NodeBuilder

friend class NodeBuilder
friend

Definition at line 72 of file ExplodedGraph.h.

◆ SwitchNodeBuilder

friend class SwitchNodeBuilder
friend

Definition at line 73 of file ExplodedGraph.h.


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