|
clang 24.0.0git
|
#include "clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h"
Public Types | |
| using | succ_iterator = ExplodedNode * const * |
| using | succ_range = llvm::iterator_range<succ_iterator> |
| using | const_succ_iterator = const ExplodedNode * const * |
| using | const_succ_range = llvm::iterator_range<const_succ_iterator> |
| using | pred_iterator = ExplodedNode * const * |
| using | pred_range = llvm::iterator_range<pred_iterator> |
| using | const_pred_iterator = const ExplodedNode * const * |
| using | const_pred_range = llvm::iterator_range<const_pred_iterator> |
Public Member Functions | |
| ExplodedNode (const ProgramPoint &loc, ProgramStateRef state, int64_t Id, bool IsSink) | |
| ProgramPoint | getLocation () const |
| getLocation - Returns the edge associated with the given node. | |
| const StackFrame * | getStackFrame () const |
| llvm::iterator_range< StackFrame::parent_iterator > | stackframes () const |
| Iterates over the current stack frame and all of its ancestors. | |
| const Decl & | getCodeDecl () const |
| CFG & | getCFG () const |
| const CFGBlock * | getCFGBlock () const |
| const ParentMap & | getParentMap () const |
| template<typename T> | |
| T & | getAnalysis () const |
| const ProgramStateRef & | getState () const |
| template<typename T> | |
| std::optional< T > | getLocationAs () const & |
| SVal | getSVal (const Expr *E) const |
| Get the value of an arbitrary expression at this node. | |
| 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. | |
| 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 |
| ExplodedNode * | getFirstSucc () |
| const ExplodedNode * | getFirstSucc () const |
| pred_iterator | pred_begin () |
| pred_iterator | pred_end () |
| pred_range | preds () |
| const_pred_iterator | pred_begin () const |
| const_pred_iterator | pred_end () const |
| const_pred_range | preds () const |
| succ_iterator | succ_begin () |
| succ_iterator | succ_end () |
| succ_range | succs () |
| const_succ_iterator | succ_begin () const |
| const_succ_iterator | succ_end () const |
| const_succ_range | succs () const |
| int64_t | getID () const |
| bool | isTrivial () const |
| The node is trivial if it has only one successor, only one predecessor, it's predecessor has only one successor, and its program state is the same as the program state of the previous node. | |
| const Stmt * | getStmtForDiagnostics () const |
| If the node's program point corresponds to a statement, retrieve that statement. | |
| const Stmt * | getNextStmtForDiagnostics () const |
| Find the next statement that was executed on this node's execution path. | |
| const Stmt * | getPreviousStmtForDiagnostics () const |
| Find the statement that was executed immediately before this node. | |
| const Stmt * | getCurrentOrPreviousStmtForDiagnostics () const |
| Find the statement that was executed at or immediately before this node. | |
Static Public Member Functions | |
| static void | Profile (llvm::FoldingSetNodeID &ID, const ProgramPoint &Loc, const ProgramStateRef &state, bool IsSink) |
Friends | |
| class | CoreEngine |
| class | ExplodedGraph |
| class | NodeBuilder |
Definition at line 66 of file ExplodedGraph.h.
| using clang::ento::ExplodedNode::const_pred_iterator = const ExplodedNode * const * |
Definition at line 232 of file ExplodedGraph.h.
| using clang::ento::ExplodedNode::const_pred_range = llvm::iterator_range<const_pred_iterator> |
Definition at line 233 of file ExplodedGraph.h.
| using clang::ento::ExplodedNode::const_succ_iterator = const ExplodedNode * const * |
Definition at line 226 of file ExplodedGraph.h.
| using clang::ento::ExplodedNode::const_succ_range = llvm::iterator_range<const_succ_iterator> |
Definition at line 227 of file ExplodedGraph.h.
| using clang::ento::ExplodedNode::pred_iterator = ExplodedNode * const * |
Definition at line 229 of file ExplodedGraph.h.
| using clang::ento::ExplodedNode::pred_range = llvm::iterator_range<pred_iterator> |
Definition at line 230 of file ExplodedGraph.h.
| using clang::ento::ExplodedNode::succ_iterator = ExplodedNode * const * |
Definition at line 223 of file ExplodedGraph.h.
| using clang::ento::ExplodedNode::succ_range = llvm::iterator_range<succ_iterator> |
Definition at line 224 of file ExplodedGraph.h.
|
inlineexplicit |
Definition at line 134 of file ExplodedGraph.h.
References isSink().
Referenced by addPredecessor(), getFirstPred(), getFirstPred(), getFirstSucc(), getFirstSucc(), getNextStmtForDiagnostics(), getPreviousStmtForDiagnostics(), pred_begin(), pred_end(), succ_begin(), and succ_end().
| 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 201 of file ExplodedGraph.cpp.
References ExplodedGraph, ExplodedNode(), and V.
Referenced by clang::ento::CoreEngine::makeNode(), clang::ento::ExprEngine::processCallEnter(), and clang::ento::ExplodedGraph::trim().
Definition at line 162 of file ExplodedGraph.h.
References clang::StackFrame::getAnalysis(), getStackFrame(), and clang::T.
|
inline |
Definition at line 154 of file ExplodedGraph.h.
References clang::StackFrame::getCFG(), and getStackFrame().
Referenced by clang::ento::ExprEngine::processCallExit().
| const CFGBlock * ExplodedNode::getCFGBlock | ( | ) | const |
Definition at line 286 of file ExplodedGraph.cpp.
References clang::StackFrame::getAnalysisDeclContext(), clang::ProgramPoint::getAs(), clang::CFGStmtMap::getBlock(), clang::AnalysisDeclContext::getCFGStmtMap(), getLocation(), getStackFrame(), and getStmtForDiagnostics().
|
inline |
Definition at line 152 of file ExplodedGraph.h.
References clang::StackFrame::getDecl(), and getStackFrame().
Referenced by clang::ento::retaincountchecker::RefLeakReportVisitor::getEndPath().
| const Stmt * ExplodedNode::getCurrentOrPreviousStmtForDiagnostics | ( | ) | const |
Find the statement that was executed at or immediately before this node.
Useful when any nearby statement will do. If the statement belongs to a body-farmed definition, retrieve the call site for that definition.
Definition at line 383 of file ExplodedGraph.cpp.
References getPreviousStmtForDiagnostics(), and getStmtForDiagnostics().
|
inline |
Definition at line 206 of file ExplodedGraph.h.
References ExplodedNode(), clang::nullptr, pred_begin(), and pred_empty().
Referenced by annotateStartParameter(), clang::ento::CoreEngine::dispatchWorkItem(), exitingDestructor(), findExecutedLines(), findNodeForExpression(), generateVisitorsDiagnostics(), GetAllocationSite(), getAllVarBindingsForSymbol(), getCalleeNode(), getFirstPred(), getLastStmt(), getMatchingCallExitEnd(), getPreviousStmtForDiagnostics(), getStmtBeforeCond(), clang::ento::isPossiblyEscaped(), isTrivial(), clang::ento::madeNewBranch(), peelOffOuterExpr(), clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode(), clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode(), clang::ento::TrackConstraintBRVisitor::VisitNode(), clang::ento::ConditionBRVisitor::VisitNodeImpl(), clang::ento::ConditionBRVisitor::VisitTrueTest(), and clang::ento::NoOwnershipChangeVisitor::wasModifiedInFunction().
|
inline |
Definition at line 210 of file ExplodedGraph.h.
References ExplodedNode(), and getFirstPred().
|
inline |
Definition at line 214 of file ExplodedGraph.h.
References ExplodedNode(), clang::nullptr, succ_begin(), and succ_empty().
Referenced by llvm::GraphTraits< clang::ento::ExplodedGraph * >::child_end(), getFirstSucc(), getMatchingCallExitEnd(), getNextStmtForDiagnostics(), llvm::GraphTraits< clang::ento::ExplodedGraph * >::predecessorOfTrivial(), and llvm::DOTGraphTraits< ExplodedGraph * >::traverseHiddenNodes().
|
inline |
Definition at line 218 of file ExplodedGraph.h.
References ExplodedNode(), and getFirstSucc().
|
inline |
Definition at line 259 of file ExplodedGraph.h.
Referenced by llvm::DOTGraphTraits< ExplodedGraph * >::getNodeLabel(), and clang::ento::ExplodedGraph::trim().
|
inline |
getLocation - Returns the edge associated with the given node.
Definition at line 141 of file ExplodedGraph.h.
Referenced by alreadyExecutedAtLeastOneLoopIteration(), clang::ento::bugreporter::StoreHandler::constructNote(), clang::ento::CoreEngine::dispatchWorkItem(), clang::ento::WorkList::enqueue(), clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::CoreEngine::ExecuteWorkList(), exitingDestructor(), GetAllocationSite(), getCFGBlock(), getLastStmt(), clang::ento::CheckerContext::getLocationRegionIfPostStore(), clang::ento::StackHintGeneratorForSymbol::getMessage(), getNextStmtForDiagnostics(), llvm::DOTGraphTraits< ExplodedGraph * >::getNodeLabel(), getStackFrame(), getStmtBeforeCond(), getStmtForDiagnostics(), clang::ento::madeNewBranch(), llvm::DOTGraphTraits< ExplodedGraph * >::nodeHasBugReport(), peelOffOuterExpr(), clang::ento::ExprEngine::processEndOfFunction(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), shouldRemoveDeadBindings(), clang::ento::ExplodedGraph::trim(), clang::ento::ExprEngine::VisitCXXDestructor(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode(), clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode(), clang::ento::TagVisitor::VisitNode(), clang::ento::TrackConstraintBRVisitor::VisitNode(), clang::ento::UndefOrNullArgVisitor::VisitNode(), and clang::ento::ConditionBRVisitor::VisitNodeImpl().
Definition at line 168 of file ExplodedGraph.h.
References clang::T.
Referenced by annotateStartParameter(), findExecutedLines(), getDenomExpr(), clang::ento::NoOwnershipChangeVisitor::getFunctionName(), getLastStmt(), getMatchingCallExitEnd(), isInitializationOfVar(), clang::ento::NilReceiverBRVisitor::VisitNode(), clang::ento::NoStateChangeFuncVisitor::VisitNode(), clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode(), and wasRegionOfInterestModifiedAt().
| const Stmt * ExplodedNode::getNextStmtForDiagnostics | ( | ) | const |
Find the next statement that was executed on this node's execution path.
Useful for explaining control flow that follows the current node. If the statement belongs to a body-farmed definition, retrieve the call site for that definition.
Definition at line 346 of file ExplodedGraph.cpp.
References clang::cast(), ExplodedNode(), getFirstSucc(), getLocation(), getStmtForDiagnostics(), and clang::ProgramPoint::isPurgeKind().
Referenced by findReasonableStmtCloseToFunctionExit().
|
inline |
Definition at line 158 of file ExplodedGraph.h.
References clang::StackFrame::getParentMap(), and getStackFrame().
Referenced by findExecutedLines().
| const Stmt * ExplodedNode::getPreviousStmtForDiagnostics | ( | ) | const |
Find the statement that was executed immediately before this node.
Useful when the node corresponds to a CFG block entrance. If the statement belongs to a body-farmed definition, retrieve the call site for that definition.
Definition at line 375 of file ExplodedGraph.cpp.
References ExplodedNode(), getFirstPred(), getStmtForDiagnostics(), and clang::isa().
Referenced by findReasonableStmtCloseToFunctionExit(), and getCurrentOrPreviousStmtForDiagnostics().
|
inline |
Definition at line 143 of file ExplodedGraph.h.
References getLocation(), and clang::ProgramPoint::getStackFrame().
Referenced by annotateConsumedSummaryMismatch(), assumeCondition(), clang::ento::retaincountchecker::RetainCountChecker::checkEndFunction(), constructDebugPieceForTrackedCondition(), clang::ento::ExprEngine::ConstructInitList(), clang::ento::ExprEngine::CreateCXXTemporaryObject(), clang::ento::CoreEngine::dispatchWorkItem(), clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::CoreEngine::ExecuteWorkList(), exitingDestructor(), clang::ento::LikelyFalsePositiveSuppressionBRVisitor::finalizeVisitor(), findExecutedLines(), clang::ento::NodeBuilder::generateNode(), clang::ento::NodeBuilder::generateSink(), GetAllocationSite(), getAnalysis(), getArgumentValueString(), getCalleeNode(), getCFG(), getCFGBlock(), getCodeDecl(), clang::ento::PathSensitiveBugReport::getDeclWithIssue(), getLastStmt(), getLocationRegionIfReference(), getMatchingCallExitEnd(), llvm::DOTGraphTraits< ExplodedGraph * >::getNodeLabel(), getParentMap(), getStmtForDiagnostics(), getSVal(), getSValForVar(), clang::ento::isCapturedByReference(), isInitializationOfVar(), clang::ento::isPossiblyEscaped(), isVarAnInterestingCondition(), clang::ento::CoreEngine::makeNodeWithBinding(), clang::ento::CoreEngine::makePostStmtNode(), clang::ento::ConditionBRVisitor::patternMatch(), clang::ento::ExprEngine::populateObjCForDestinationSet(), 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::processIndirectGoto(), clang::ento::ExprEngine::ProcessInitializer(), clang::ento::ExprEngine::ProcessLifetimeEnd(), clang::ento::ExprEngine::ProcessLoopExit(), clang::ento::ExprEngine::ProcessMemberDtor(), clang::ento::ExprEngine::ProcessNewAllocator(), clang::ento::retaincountchecker::RetainCountChecker::processObjCLiterals(), clang::ento::ExprEngine::ProcessStmt(), clang::ento::ExprEngine::processSwitch(), clang::ento::ExprEngine::ProcessTemporaryDtor(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), clang::ento::ExprEngine::removeDeadOnEndOfFunction(), clang::ento::CheckerManager::runCheckersForEndFunction(), clang::ento::CheckerManager::runCheckersForEvalCall(), stackframes(), timeTraceMetadata(), clang::ento::updateLoopStack(), clang::ento::ExprEngine::Visit(), clang::ento::ExprEngine::VisitAttributedStmt(), clang::ento::ExprEngine::VisitBinaryOperator(), clang::ento::ExprEngine::VisitBlockExpr(), clang::ento::ExprEngine::VisitCallExpr(), clang::ento::ExprEngine::VisitCast(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::ento::ExprEngine::VisitCompoundLiteralExpr(), clang::ento::ConditionBRVisitor::VisitConditionVariable(), clang::ento::ExprEngine::VisitCXXCatchStmt(), clang::ento::ExprEngine::VisitCXXDeleteExpr(), clang::ento::ExprEngine::VisitCXXDestructor(), clang::ento::ExprEngine::VisitCXXNewAllocatorCall(), clang::ento::ExprEngine::VisitCXXNewExpr(), clang::ento::ExprEngine::VisitCXXThisExpr(), clang::ento::ExprEngine::VisitDeclStmt(), clang::ento::ExprEngine::VisitGCCAsmStmt(), clang::ento::ExprEngine::VisitGuardedExpr(), clang::ento::ExprEngine::VisitIncrementDecrementOperator(), clang::ento::ExprEngine::VisitLambdaExpr(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::ExprEngine::VisitLvalObjCIvarRefExpr(), clang::ento::NilReceiverBRVisitor::VisitNode(), clang::ento::NoStateChangeFuncVisitor::VisitNode(), clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode(), clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode(), clang::ento::ExprEngine::VisitObjCForCollectionStmt(), clang::ento::ExprEngine::VisitObjCMessage(), clang::ento::ConditionBRVisitor::VisitTrueTest(), clang::ento::ConditionBRVisitor::VisitTrueTest(), clang::ento::ConditionBRVisitor::VisitTrueTest(), clang::ento::ConditionBRVisitor::VisitTrueTest(), and clang::ento::NoOwnershipChangeVisitor::wasModifiedInFunction().
|
inline |
Definition at line 166 of file ExplodedGraph.h.
Referenced by annotateConsumedSummaryMismatch(), annotateStartParameter(), assumeCondition(), clang::ento::mpi::MPIChecker::checkDoubleNonblocking(), clang::ento::retaincountchecker::RetainCountChecker::checkEndFunction(), clang::ento::mpi::MPIChecker::checkMissingWaits(), clang::ento::retaincountchecker::RetainCountChecker::checkPostStmt(), clang::ento::mpi::MPIChecker::checkUnmatchedWaits(), clang::ento::ExprEngine::ConstructInitList(), clang::ento::ExprEngine::CreateCXXTemporaryObject(), clang::ento::ExprEngine::defaultEvalCall(), clang::ento::CoreEngine::enqueueStmtNode(), GetAllocationSite(), getAllVarBindingsForSymbol(), getArgumentValueString(), clang::ento::retaincountchecker::RefLeakReportVisitor::getEndPath(), clang::ento::errno_modeling::getErrnoNoteTag(), getLocationRegionIfReference(), clang::ento::StackHintGeneratorForSymbol::getMessage(), clang::ento::NilReceiverBRVisitor::getNilReceiver(), llvm::DOTGraphTraits< ExplodedGraph * >::getNodeLabel(), getSVal(), getSValForVar(), hasVisibleUpdate(), isInitializationOfVar(), isTrivial(), clang::ento::CoreEngine::makeNodeWithBinding(), llvm::DOTGraphTraits< ExplodedGraph * >::nodeHasBugReport(), clang::ento::ConditionBRVisitor::patternMatch(), clang::ento::ExprEngine::populateObjCForDestinationSet(), 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::processIndirectGoto(), clang::ento::ExprEngine::ProcessInitializer(), clang::ento::ExprEngine::ProcessLifetimeEnd(), clang::ento::ExprEngine::ProcessLoopExit(), clang::ento::ExprEngine::ProcessMemberDtor(), clang::ento::ExprEngine::ProcessNewAllocator(), clang::ento::ExprEngine::ProcessTemporaryDtor(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), REGISTER_TRAIT_WITH_PROGRAMSTATE(), clang::ento::ExprEngine::removeDead(), clang::ento::CheckerManager::runCheckersForEvalCall(), clang::ento::SuppressInlineDefensiveChecksVisitor::SuppressInlineDefensiveChecksVisitor(), clang::ento::updateLoopStack(), clang::ento::ExprEngine::Visit(), clang::ento::ExprEngine::VisitBlockExpr(), clang::ento::ExprEngine::VisitCallExpr(), clang::ento::ExprEngine::VisitCast(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::ento::ExprEngine::VisitCompoundLiteralExpr(), clang::ento::ExprEngine::VisitCXXCatchStmt(), clang::ento::ExprEngine::VisitCXXDeleteExpr(), clang::ento::ExprEngine::VisitCXXDestructor(), clang::ento::ExprEngine::VisitCXXNewAllocatorCall(), clang::ento::ExprEngine::VisitCXXNewExpr(), clang::ento::ExprEngine::VisitCXXThisExpr(), clang::ento::ExprEngine::VisitDeclStmt(), clang::ento::ExprEngine::VisitGCCAsmStmt(), clang::ento::ExprEngine::VisitGuardedExpr(), clang::ento::ExprEngine::VisitIncrementDecrementOperator(), clang::ento::ExprEngine::VisitLambdaExpr(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::ExprEngine::VisitLvalObjCIvarRefExpr(), clang::ento::ExprEngine::VisitMSAsmStmt(), clang::ento::NoStateChangeFuncVisitor::VisitNode(), clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode(), clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode(), clang::ento::UndefOrNullArgVisitor::VisitNode(), clang::ento::ExprEngine::VisitObjCForCollectionStmt(), clang::ento::ExprEngine::VisitObjCMessage(), clang::ento::ConditionBRVisitor::VisitTrueTest(), clang::ento::NoOwnershipChangeVisitor::wasModifiedInFunction(), and wasRegionOfInterestModifiedAt().
| const Stmt * ExplodedNode::getStmtForDiagnostics | ( | ) | const |
If the node's program point corresponds to a statement, retrieve that statement.
Useful for figuring out where to put a warning or a note. If the statement belongs to a body-farmed definition, retrieve the call site for that definition.
Definition at line 314 of file ExplodedGraph.cpp.
References findTopAutosynthesizedParentStackFrame(), clang::StackFrame::getAnalysisDeclContext(), clang::ProgramPoint::getAs(), clang::StackFrame::getCallSite(), getLocation(), getStackFrame(), and clang::AnalysisDeclContext::isBodyAutosynthesized().
Referenced by findExecutedLines(), findNodeForExpression(), getCFGBlock(), getCurrentOrPreviousStmtForDiagnostics(), getNextStmtForDiagnostics(), getPreviousStmtForDiagnostics(), and clang::ento::isPossiblyEscaped().
Get the value of an arbitrary expression at this node.
Definition at line 173 of file ExplodedGraph.h.
References getStackFrame(), and getState().
Referenced by clang::ento::retaincountchecker::RetainCountChecker::checkPostStmt(), clang::ento::StackHintGeneratorForSymbol::getMessage(), clang::ento::NilReceiverBRVisitor::getNilReceiver(), clang::ento::retaincountchecker::RetainCountChecker::processObjCLiterals(), and wasRegionOfInterestModifiedAt().
|
inline |
Definition at line 202 of file ExplodedGraph.h.
References pred_size().
Referenced by clang::ento::CoreEngine::dispatchWorkItem().
|
inline |
Definition at line 200 of file ExplodedGraph.h.
Referenced by checkInvariantViolation(), clang::ento::CoreEngine::enqueueStmtNode(), ExplodedNode(), llvm::DOTGraphTraits< ExplodedGraph * >::getNodeLabel(), clang::ento::ExplodedNodeSet::insert(), clang::ento::ExprEngine::ProcessLoopExit(), clang::ento::ExprEngine::ProcessTemporaryDtor(), Profile(), and clang::ento::ExplodedGraph::trim().
| bool ExplodedNode::isTrivial | ( | ) | const |
The node is trivial if it has only one successor, only one predecessor, it's predecessor has only one successor, and its program state is the same as the program state of the previous node.
Trivial nodes may be skipped while printing exploded graph.
Definition at line 280 of file ExplodedGraph.cpp.
References getFirstPred(), getState(), pred_size(), and succ_size().
Referenced by llvm::DOTGraphTraits< ExplodedGraph * >::isNodeHidden(), and llvm::GraphTraits< clang::ento::ExplodedGraph * >::predecessorOfTrivial().
|
inline |
Definition at line 235 of file ExplodedGraph.h.
Referenced by getFirstPred(), getLastStmt(), pred_begin(), clang::ento::ExprEngine::VisitGuardedExpr(), and clang::ento::ExprEngine::VisitLogicalExpr().
|
inline |
Definition at line 239 of file ExplodedGraph.h.
References ExplodedNode(), and pred_begin().
|
inline |
Definition at line 198 of file ExplodedGraph.h.
Referenced by getFirstPred(), getLastStmt(), clang::ento::isPossiblyEscaped(), and clang::ento::madeNewBranch().
|
inline |
Definition at line 236 of file ExplodedGraph.h.
Referenced by pred_end().
|
inline |
Definition at line 242 of file ExplodedGraph.h.
References ExplodedNode(), and pred_end().
|
inline |
Definition at line 196 of file ExplodedGraph.h.
Referenced by hasSinglePred(), isTrivial(), and clang::ento::ExprEngine::VisitLogicalExpr().
|
inline |
Definition at line 237 of file ExplodedGraph.h.
Referenced by alreadyExecutedAtLeastOneLoopIteration().
|
inline |
Definition at line 245 of file ExplodedGraph.h.
|
inline |
Definition at line 186 of file ExplodedGraph.h.
|
inlinestatic |
Definition at line 177 of file ExplodedGraph.h.
Referenced by clang::ento::ExplodedGraph::getNode(), and Profile().
|
inline |
Iterates over the current stack frame and all of its ancestors.
Definition at line 148 of file ExplodedGraph.h.
References getStackFrame(), and clang::StackFrame::parentsIncludingSelf().
Referenced by clang::ento::LikelyFalsePositiveSuppressionBRVisitor::finalizeVisitor().
|
inline |
Definition at line 247 of file ExplodedGraph.h.
Referenced by llvm::GraphTraits< clang::ento::ExplodedGraph * >::child_begin(), getFirstSucc(), and succ_begin().
|
inline |
Definition at line 251 of file ExplodedGraph.h.
References ExplodedNode(), and succ_begin().
|
inline |
Definition at line 197 of file ExplodedGraph.h.
Referenced by getFirstSucc().
|
inline |
Definition at line 248 of file ExplodedGraph.h.
Referenced by llvm::GraphTraits< clang::ento::ExplodedGraph * >::child_end(), and succ_end().
|
inline |
Definition at line 254 of file ExplodedGraph.h.
References ExplodedNode(), and succ_end().
|
inline |
Definition at line 195 of file ExplodedGraph.h.
Referenced by getMatchingCallExitEnd(), isTrivial(), clang::ento::madeNewBranch(), llvm::GraphTraits< clang::ento::ExplodedGraph * >::predecessorOfTrivial(), and llvm::DOTGraphTraits< ExplodedGraph * >::traverseHiddenNodes().
|
inline |
Definition at line 249 of file ExplodedGraph.h.
|
inline |
Definition at line 257 of file ExplodedGraph.h.
|
friend |
|
friend |
Definition at line 68 of file ExplodedGraph.h.
References ExplodedGraph.
Referenced by addPredecessor(), and ExplodedGraph.
|
friend |