clang
6.0.0
|
#include "clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h"
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 LocationContext * | getLocationContext () const |
const StackFrameContext * | getStackFrame () const |
const Decl & | getCodeDecl () const |
CFG & | getCFG () const |
ParentMap & | getParentMap () const |
template<typename T > | |
T & | getAnalysis () const |
const ProgramStateRef & | getState () 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 |
ExplodedNode * | getFirstPred () |
const ExplodedNode * | getFirstPred () const |
const ExplodedNode * | getFirstSucc () 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 |
Definition at line 54 of file ExplodedGraph.h.
typedef const ExplodedNode* const* clang::ento::ExplodedNode::const_pred_iterator |
Definition at line 204 of file ExplodedGraph.h.
typedef const ExplodedNode* const* clang::ento::ExplodedNode::const_succ_iterator |
Definition at line 202 of file ExplodedGraph.h.
typedef ExplodedNode* const* clang::ento::ExplodedNode::pred_iterator |
Definition at line 203 of file ExplodedGraph.h.
typedef ExplodedNode* const* clang::ento::ExplodedNode::succ_iterator |
Definition at line 201 of file ExplodedGraph.h.
|
inlineexplicit |
Definition at line 124 of file ExplodedGraph.h.
References isSink().
void ExplodedNode::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.
Definition at line 216 of file ExplodedGraph.cpp.
References clang::ento::ExplodedNode::Auditor::AddEdge(), clang::ento::ExplodedGraph::getAllocator(), clang::ento::ExplodedGraph::getNodeAllocator(), isSink(), P, and clang::BumpVector< T >::push_back().
Referenced by clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::SwitchNodeBuilder::generateDefaultCaseNode(), clang::ento::NodeBuilder::generateNodeImpl(), clang::ento::ExprEngine::processCallEnter(), clang::ento::ExprEngine::processCallExit(), and Profile().
|
inline |
Definition at line 148 of file ExplodedGraph.h.
References clang::LocationContext::getAnalysis(), getLocationContext(), and clang::T.
|
inline |
Definition at line 143 of file ExplodedGraph.h.
References clang::LocationContext::getCFG(), and getLocationContext().
Referenced by isInevitablySinking().
|
inline |
Definition at line 141 of file ExplodedGraph.h.
References clang::LocationContext::getDecl(), and getLocationContext().
Referenced by GetAllocationSite(), and clang::ento::CXXSelfAssignmentBRVisitor::VisitNode().
|
inline |
Definition at line 188 of file ExplodedGraph.h.
References pred_begin(), and pred_empty().
Referenced by clang::ento::CoreEngine::dispatchWorkItem(), GenerateAlternateExtensivePathDiagnostic(), GenerateExtensivePathDiagnostic(), GenerateMinimalPathDiagnostic(), GenerateVisitorsOnlyPathDiagnostic(), getFirstPred(), GetPreviousStmt(), and peelOffOuterExpr().
|
inline |
Definition at line 192 of file ExplodedGraph.h.
References getFirstPred().
|
inline |
Definition at line 196 of file ExplodedGraph.h.
References succ_begin(), and succ_empty().
Referenced by clang::ento::PathDiagnosticLocation::getNextStmt().
|
inline |
getLocation - Returns the edge associated with the given node.
Definition at line 131 of file ExplodedGraph.h.
Referenced by alreadyExecutedAtLeastOneLoopIteration(), clang::ento::CoreEngine::dispatchWorkItem(), clang::ento::WorkList::enqueue(), clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::CoreEngine::ExecuteWorkList(), findBlockForNode(), GenerateAlternateExtensivePathDiagnostic(), GenerateExtensivePathDiagnostic(), GenerateMinimalPathDiagnostic(), GetAllocationSite(), getLocationContext(), clang::ento::CheckerContext::getLocationRegionIfPostStore(), clang::ento::StackHintGeneratorForSymbol::getMessage(), llvm::DOTGraphTraits< ExplodedNode * >::getNodeLabel(), clang::ento::PathDiagnosticLocation::getStmt(), getStmtBeforeCond(), clang::ento::ExplodedGraph::isInterestingLValueExpr(), isSynthesizedAccessor(), peelOffOuterExpr(), clang::ento::ExprEngine::processCFGBlockEntrance(), clang::ento::mpi::MPIBugReporter::reportUnmatchedWait(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::TrackConstraintBRVisitor::VisitNode(), clang::ento::UndefOrNullArgVisitor::VisitNode(), clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode(), clang::ento::CXXSelfAssignmentBRVisitor::VisitNode(), clang::ento::ConditionBRVisitor::VisitNodeImpl(), and clang::ento::ExprEngine::VisitObjCMessage().
Definition at line 155 of file ExplodedGraph.h.
References clang::ProgramPoint::getAs(), and clang::T.
Referenced by isInitializationOfVar(), clang::ento::FindLastStoreBRVisitor::VisitNode(), and clang::ento::NilReceiverBRVisitor::VisitNode().
|
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().
|
inline |
Definition at line 145 of file ExplodedGraph.h.
References getLocationContext(), and clang::LocationContext::getParentMap().
|
inline |
Definition at line 137 of file ExplodedGraph.h.
References clang::LocationContext::getCurrentStackFrame(), and getLocationContext().
Referenced by clang::ento::CheckerContext::getStackFrame(), clang::ento::ExprEngine::processCleanupTemporaryBranch(), and clang::ento::ExprEngine::ProcessTemporaryDtor().
|
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().
|
inline |
Definition at line 184 of file ExplodedGraph.h.
References pred_size().
Referenced by clang::ento::CoreEngine::dispatchWorkItem().
|
inline |
Definition at line 182 of file ExplodedGraph.h.
Referenced by clang::ento::ExplodedNodeSet::Add(), addPredecessor(), checkInvariantViolation(), clang::ento::CoreEngine::enqueueStmtNode(), ExplodedNode(), clang::ento::ExplodedNodeSet::ExplodedNodeSet(), clang::ento::NodeBuilderWithSinks::generateSink(), and Profile().
|
inline |
Definition at line 206 of file ExplodedGraph.h.
Referenced by GenerateExtensivePathDiagnostic(), GenerateMinimalPathDiagnostic(), GetAllocationSite(), getAsPointeeSymbol(), getFirstPred(), clang::ento::ExplodedGraph::isInterestingLValueExpr(), pred_begin(), clang::ento::ExprEngine::VisitGuardedExpr(), and clang::ento::ExprEngine::VisitLogicalExpr().
|
inline |
Definition at line 209 of file ExplodedGraph.h.
References pred_begin().
|
inline |
Definition at line 180 of file ExplodedGraph.h.
Referenced by GenerateExtensivePathDiagnostic(), GenerateMinimalPathDiagnostic(), GetAllocationSite(), getAsPointeeSymbol(), getFirstPred(), and clang::ento::isPossiblyEscaped().
|
inline |
Definition at line 207 of file ExplodedGraph.h.
Referenced by pred_end().
|
inline |
Definition at line 212 of file ExplodedGraph.h.
References pred_end().
|
inline |
Definition at line 178 of file ExplodedGraph.h.
Referenced by hasSinglePred(), clang::ento::ExplodedGraph::isInterestingLValueExpr(), and clang::ento::ExprEngine::VisitLogicalExpr().
|
inlinestatic |
Definition at line 159 of file ExplodedGraph.h.
Referenced by clang::ento::ExplodedGraph::getNode(), and Profile().
|
inline |
Definition at line 168 of file ExplodedGraph.h.
References addPredecessor(), isSink(), and Profile().
|
static |
Definition at line 38 of file ExplodedGraph.cpp.
|
inline |
|
inline |
Definition at line 219 of file ExplodedGraph.h.
References succ_begin().
|
inline |
Definition at line 179 of file ExplodedGraph.h.
Referenced by getFirstSucc().
|
inline |
Definition at line 217 of file ExplodedGraph.h.
Referenced by llvm::GraphTraits< clang::ento::ExplodedNode * >::child_end(), llvm::GraphTraits< const clang::ento::ExplodedNode * >::child_end(), and succ_end().
|
inline |
Definition at line 222 of file ExplodedGraph.h.
References succ_end().
|
inline |
Definition at line 177 of file ExplodedGraph.h.
Referenced by clang::ento::ExplodedGraph::isInterestingLValueExpr().
|
friend |
Definition at line 58 of file ExplodedGraph.h.
|
friend |
Definition at line 56 of file ExplodedGraph.h.
|
friend |
Definition at line 61 of file ExplodedGraph.h.
|
friend |
Definition at line 55 of file ExplodedGraph.h.
Referenced by clang::ento::ExplodedGraph::addEndOfPath().
|
friend |
Definition at line 59 of file ExplodedGraph.h.
|
friend |
Definition at line 57 of file ExplodedGraph.h.
|
friend |
Definition at line 60 of file ExplodedGraph.h.