clang  6.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

typedef ExplodedNode *const * succ_iterator
 
typedef const ExplodedNode *const * const_succ_iterator
 
typedef ExplodedNode *const * pred_iterator
 
typedef const ExplodedNode *const * const_pred_iterator
 

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
 
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 ExplodedGraph
 
class CoreEngine
 
class NodeBuilder
 
class BranchNodeBuilder
 
class IndirectGotoNodeBuilder
 
class SwitchNodeBuilder
 
class EndOfFunctionNodeBuilder
 

Detailed Description

Definition at line 54 of file ExplodedGraph.h.

Member Typedef Documentation

◆ const_pred_iterator

Definition at line 204 of file ExplodedGraph.h.

◆ const_succ_iterator

Definition at line 202 of file ExplodedGraph.h.

◆ pred_iterator

Definition at line 203 of file ExplodedGraph.h.

◆ succ_iterator

Definition at line 201 of file ExplodedGraph.h.

Constructor & Destructor Documentation

◆ ExplodedNode()

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

Definition at line 124 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 148 of file ExplodedGraph.h.

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

◆ getCFG()

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

Definition at line 143 of file ExplodedGraph.h.

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

Referenced by isInevitablySinking().

◆ getCodeDecl()

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

◆ getFirstPred() [1/2]

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

◆ getFirstPred() [2/2]

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

Definition at line 192 of file ExplodedGraph.h.

References getFirstPred().

◆ getFirstSucc()

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

Definition at line 196 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 133 of file ExplodedGraph.h.

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

Referenced by clang::ento::ExprEngine::CreateCXXTemporaryObject(), clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::ExprEngine::evalBind(), findBlockForNode(), GenerateAlternateExtensivePathDiagnostic(), clang::ento::SwitchNodeBuilder::generateDefaultCaseNode(), GenerateExtensivePathDiagnostic(), GenerateMinimalPathDiagnostic(), clang::ento::BranchNodeBuilder::generateNode(), GetAllocationSite(), getAnalysis(), getArgumentValueString(), getAsPointeeSymbol(), clang::ento::CheckerContext::getCalleeDecl(), getCFG(), getCodeDecl(), clang::ento::CheckerContext::getCurrentAnalysisDeclContext(), clang::ento::BugReport::getDeclWithIssue(), clang::ento::CheckerContext::getLocationContext(), clang::ento::IndirectGotoNodeBuilder::getLocationContext(), clang::ento::SwitchNodeBuilder::getLocationContext(), clang::ento::StackHintGeneratorForSymbol::getMessage(), getParentMap(), getStackFrame(), clang::ento::PathDiagnosticLocation::getStmt(), isInitializationOfVar(), clang::ento::ExplodedGraph::isInterestingLValueExpr(), isSynthesizedAccessor(), makeZeroElementRegion(), mayInlineCallKind(), mayInlineDecl(), clang::ento::ConditionBRVisitor::patternMatch(), clang::ento::ExprEngine::ProcessAutomaticObjDtor(), clang::ento::ExprEngine::ProcessBaseDtor(), clang::ento::ExprEngine::processBranch(), clang::ento::ExprEngine::processCallExit(), clang::ento::ExprEngine::processCFGBlockEntrance(), clang::ento::ExprEngine::ProcessDeleteDtor(), clang::ento::ExprEngine::processEndOfFunction(), clang::ento::ExprEngine::ProcessInitializer(), clang::ento::ExprEngine::ProcessMemberDtor(), clang::ento::ExprEngine::ProcessNewAllocator(), llvm::FoldingSetTrait< ObjectState >::Profile(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), clang::ento::ExprEngine::removeDeadOnEndOfFunction(), clang::ento::CheckerManager::runCheckersForCallEvent(), clang::ento::CheckerManager::runCheckersForEndFunction(), clang::ento::CheckerManager::runCheckersForEvalCall(), clang::ento::updateLoopStack(), clang::ento::ExprEngine::VisitBlockExpr(), clang::ento::ExprEngine::VisitCallExpr(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::ento::ExprEngine::VisitCompoundLiteralExpr(), clang::ento::ConditionBRVisitor::VisitConditionVariable(), 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::SuppressInlineDefensiveChecksVisitor::VisitNode(), clang::ento::ExprEngine::VisitObjCMessage(), clang::ento::ExprEngine::VisitOffsetOfExpr(), and clang::ento::ConditionBRVisitor::VisitTrueTest().

◆ 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 152 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(), GenerateAlternateExtensivePathDiagnostic(), GenerateExtensivePathDiagnostic(), GetAllocationSite(), getArgumentValueString(), getAsPointeeSymbol(), clang::ento::StackHintGeneratorForSymbol::getMessage(), getNullConstraint(), getReturnTypeForMethod(), clang::ento::CheckerContext::getState(), clang::ento::TrackConstraintBRVisitor::getTag(), clang::ento::ExplodedGraph::isInterestingLValueExpr(), isSynthesizedAccessor(), makeZeroElementRegion(), clang::ento::ConditionBRVisitor::patternMatch(), 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(), clang::ento::SuppressInlineDefensiveChecksVisitor::SuppressInlineDefensiveChecksVisitor(), clang::ento::updateLoopStack(), clang::ento::ExprEngine::VisitBlockExpr(), clang::ento::ExprEngine::VisitCallExpr(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::ento::ExprEngine::VisitCompoundLiteralExpr(), clang::ento::ConditionBRVisitor::VisitConditionVariable(), 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::FindLastStoreBRVisitor::VisitNode(), clang::ento::UndefOrNullArgVisitor::VisitNode(), clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode(), clang::ento::CXXSelfAssignmentBRVisitor::VisitNode(), clang::ento::ConditionBRVisitor::VisitNodeImpl(), clang::ento::ExprEngine::VisitObjCMessage(), clang::ento::ExprEngine::VisitOffsetOfExpr(), and clang::ento::ConditionBRVisitor::VisitTrueTest().

◆ hasSinglePred()

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

Definition at line 184 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 209 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 207 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 212 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 159 of file ExplodedGraph.h.

Referenced by clang::ento::ExplodedGraph::getNode(), and Profile().

◆ Profile() [2/2]

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

Definition at line 168 of file ExplodedGraph.h.

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

◆ SetAuditor()

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

Definition at line 38 of file ExplodedGraph.cpp.

◆ 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 219 of file ExplodedGraph.h.

References succ_begin().

◆ succ_empty()

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

Definition at line 179 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 222 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 58 of file ExplodedGraph.h.

◆ CoreEngine

friend class CoreEngine
friend

Definition at line 56 of file ExplodedGraph.h.

◆ EndOfFunctionNodeBuilder

friend class EndOfFunctionNodeBuilder
friend

Definition at line 61 of file ExplodedGraph.h.

◆ ExplodedGraph

friend class ExplodedGraph
friend

Definition at line 55 of file ExplodedGraph.h.

Referenced by clang::ento::ExplodedGraph::addEndOfPath().

◆ IndirectGotoNodeBuilder

friend class IndirectGotoNodeBuilder
friend

Definition at line 59 of file ExplodedGraph.h.

◆ NodeBuilder

friend class NodeBuilder
friend

Definition at line 57 of file ExplodedGraph.h.

◆ SwitchNodeBuilder

friend class SwitchNodeBuilder
friend

Definition at line 60 of file ExplodedGraph.h.


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