clang 20.0.0git
|
#include "clang/Analysis/ProgramPoint.h"
Public Types | |
enum | Kind { BlockEdgeKind , BlockEntranceKind , BlockExitKind , PreStmtKind , PreStmtPurgeDeadSymbolsKind , PostStmtPurgeDeadSymbolsKind , PostStmtKind , PreLoadKind , PostLoadKind , PreStoreKind , PostStoreKind , PostConditionKind , PostLValueKind , PostAllocatorCallKind , MinPostStmtKind = PostStmtKind , MaxPostStmtKind = PostAllocatorCallKind , PostInitializerKind , CallEnterKind , CallExitBeginKind , CallExitEndKind , FunctionExitKind , PreImplicitCallKind , PostImplicitCallKind , MinImplicitCallKind = PreImplicitCallKind , MaxImplicitCallKind = PostImplicitCallKind , LoopExitKind , EpsilonKind } |
Public Member Functions | |
ProgramPoint | withTag (const ProgramPointTag *tag) const |
Create a new ProgramPoint object that is the same as the original except for using the specified tag value. | |
template<typename T > | |
T | castAs () const |
Convert to the specified ProgramPoint type, asserting that this ProgramPoint is of the desired type. | |
template<typename T > | |
std::optional< T > | getAs () const |
Convert to the specified ProgramPoint type, returning std::nullopt if this ProgramPoint is not of the desired type. | |
Kind | getKind () const |
bool | isPurgeKind () |
Is this a program point corresponding to purge/removal of dead symbols and bindings. | |
const ProgramPointTag * | getTag () const |
const LocationContext * | getLocationContext () const |
const StackFrameContext * | getStackFrame () const |
unsigned | getHashValue () const |
bool | operator== (const ProgramPoint &RHS) const |
bool | operator!= (const ProgramPoint &RHS) const |
void | Profile (llvm::FoldingSetNodeID &ID) const |
void | printJson (llvm::raw_ostream &Out, const char *NL="\n") const |
LLVM_DUMP_METHOD void | dump () const |
Static Public Member Functions | |
static ProgramPoint | getProgramPoint (const Stmt *S, ProgramPoint::Kind K, const LocationContext *LC, const ProgramPointTag *tag) |
Protected Member Functions | |
ProgramPoint ()=default | |
ProgramPoint (const void *P, Kind k, const LocationContext *l, const ProgramPointTag *tag=nullptr, CFGBlock::ConstCFGElementRef ElemRef={nullptr, 0}) | |
ProgramPoint (const void *P1, const void *P2, Kind k, const LocationContext *l, const ProgramPointTag *tag=nullptr, CFGBlock::ConstCFGElementRef ElemRef={nullptr, 0}) | |
const void * | getData1 () const |
const void * | getData2 () const |
void | setData2 (const void *d) |
CFGBlock::ConstCFGElementRef | getElementRef () const |
Definition at line 58 of file ProgramPoint.h.
Definition at line 60 of file ProgramPoint.h.
|
protecteddefault |
Referenced by withTag().
|
inlineprotected |
Definition at line 102 of file ProgramPoint.h.
|
inlineprotected |
Definition at line 113 of file ProgramPoint.h.
Convert to the specified ProgramPoint type, asserting that this ProgramPoint is of the desired type.
Definition at line 137 of file ProgramPoint.h.
References clang::T.
Referenced by clang::ento::ExprEngine::VisitGuardedExpr(), clang::ento::ExprEngine::VisitLogicalExpr(), and clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode().
LLVM_DUMP_METHOD void ProgramPoint::dump | ( | ) | const |
Definition at line 48 of file ProgramPoint.cpp.
References printJson().
Convert to the specified ProgramPoint type, returning std::nullopt if this ProgramPoint is not of the desired type.
Definition at line 147 of file ProgramPoint.h.
References clang::T.
Referenced by clang::ento::CoreEngine::enqueueStmtNode(), exitingDestructor(), GetAllocationSite(), getLastStmt(), clang::ento::CheckerContext::getLocationRegionIfPostStore(), clang::ento::PathSensitiveBugReport::getStmt(), getStmtBeforeCond(), peelOffOuterExpr(), shouldRemoveDeadBindings(), clang::ento::ExprEngine::VisitGuardedExpr(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::UndefOrNullArgVisitor::VisitNode(), clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode(), clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode(), and clang::ento::ConditionBRVisitor::VisitNodeImpl().
|
inlineprotected |
Definition at line 121 of file ProgramPoint.h.
Referenced by clang::BlockEntrance::getBlock(), clang::BlockExit::getBlock(), clang::CallExitEnd::getCalleeContext(), clang::CallEnter::getCallExpr(), clang::EpsilonPoint::getData(), clang::PostInitializer::getInitializer(), clang::ImplicitCallPoint::getLocation(), clang::LoopExit::getLoopStmt(), clang::CallExitBegin::getReturnStmt(), clang::BlockEdge::getSrc(), clang::StmtPoint::getStmt(), clang::FunctionExitPoint::getStmt(), Profile(), and withTag().
|
inlineprotected |
Definition at line 122 of file ProgramPoint.h.
Referenced by clang::CallEnter::getCalleeContext(), clang::ImplicitCallPoint::getDecl(), clang::BlockEdge::getDst(), clang::PostStore::getLocationValue(), clang::PostInitializer::getLocationValue(), clang::PreStmt::getSubStmt(), clang::PostStore::PostStore(), Profile(), and withTag().
|
inlineprotected |
Definition at line 124 of file ProgramPoint.h.
|
inline |
Definition at line 184 of file ProgramPoint.h.
|
inline |
Definition at line 156 of file ProgramPoint.h.
Referenced by clang::ento::WorkList::enqueue(), isPurgeKind(), printJson(), Profile(), and withTag().
|
inline |
Definition at line 175 of file ProgramPoint.h.
Referenced by clang::ento::PathDiagnosticCallPiece::construct(), clang::FunctionExitPoint::getBlock(), clang::ento::ExplodedNode::getLocationContext(), getStackFrame(), clang::ento::PathSensitiveBugReport::getStmt(), printJson(), clang::ento::ExprEngine::processCFGBlockEntrance(), Profile(), clang::ento::PathDiagnosticCallPiece::setCallee(), and withTag().
|
static |
Definition at line 23 of file ProgramPoint.cpp.
References PostLoadKind, PostLValueKind, PostStmtKind, PostStmtPurgeDeadSymbolsKind, PreLoadKind, PreStmtKind, PreStmtPurgeDeadSymbolsKind, and PreStoreKind.
Referenced by clang::ento::StmtNodeBuilder::generateNode(), clang::ento::StmtNodeBuilder::generateSink(), and clang::ento::CheckerManager::runCheckersForEvalCall().
|
inline |
Definition at line 179 of file ProgramPoint.h.
References getLocationContext(), and clang::LocationContext::getStackFrame().
Referenced by getLastStmt(), and clang::ento::ExplodedNode::getStackFrame().
|
inline |
Definition at line 173 of file ProgramPoint.h.
Referenced by clang::ento::CheckerContext::generateErrorNode(), clang::ento::CheckerContext::generateNonFatalErrorNode(), llvm::DOTGraphTraits< ExplodedGraph * >::getNodeLabel(), Profile(), clang::ento::retaincountchecker::RefCountReportVisitor::VisitNode(), clang::ento::TagVisitor::VisitNode(), clang::ento::ConditionBRVisitor::VisitNodeImpl(), and clang::ento::ExprEngine::VisitObjCMessage().
|
inline |
Is this a program point corresponding to purge/removal of dead symbols and bindings.
Definition at line 167 of file ProgramPoint.h.
References getKind(), PostStmtPurgeDeadSymbolsKind, and PreStmtPurgeDeadSymbolsKind.
Referenced by clang::ento::ExplodedNode::getNextStmtForDiagnostics().
|
inline |
Definition at line 195 of file ProgramPoint.h.
|
inline |
Definition at line 190 of file ProgramPoint.h.
void ProgramPoint::printJson | ( | llvm::raw_ostream & | Out, |
const char * | NL = "\n" |
||
) | const |
Definition at line 52 of file ProgramPoint.cpp.
References BlockEdgeKind, BlockEntranceKind, BlockExitKind, clang::C, CallEnterKind, CallExitBeginKind, CallExitEndKind, E, EpsilonKind, FunctionExitKind, clang::LocationContext::getAnalysisDeclContext(), clang::Decl::getAsFunction(), clang::AnalysisDeclContext::getASTContext(), clang::ImplicitCallPoint::getDecl(), clang::AnalysisDeclContext::getFunctionName(), getKind(), clang::ASTContext::getLangOpts(), clang::QualType::getLocalUnqualifiedType(), clang::ImplicitCallPoint::getLocation(), getLocationContext(), clang::ASTContext::getPrintingPolicy(), clang::NamedDecl::getQualifiedNameAsString(), clang::ASTContext::getSourceManager(), clang::Init, Label, LoopExitKind, PostImplicitCallKind, PostInitializerKind, PreImplicitCallKind, clang::QualType::print(), clang::printSourceLocationAsJson(), SM, and clang::T.
Referenced by dump(), and llvm::DOTGraphTraits< ExplodedGraph * >::getNodeLabel().
|
inline |
Definition at line 200 of file ProgramPoint.h.
References getData1(), getData2(), getKind(), getLocationContext(), getTag(), and ID.
Referenced by getHashValue().
|
inlineprotected |
Definition at line 123 of file ProgramPoint.h.
Referenced by clang::PostStore::PostStore().
|
inline |
Create a new ProgramPoint object that is the same as the original except for using the specified tag value.
Definition at line 129 of file ProgramPoint.h.
References getData1(), getData2(), getKind(), getLocationContext(), and ProgramPoint().
Referenced by clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::NodeBuilderWithSinks::generateNode(), clang::ento::NodeBuilderWithSinks::generateSink(), and clang::ento::ExprEngine::VisitCXXDestructor().