clang: clang::ProgramPoint Class Reference (original) (raw)

#include "[clang/Analysis/ProgramPoint.h](ProgramPoint%5F8h%5Fsource.html)"

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

Kind

Enumerator
BlockEdgeKind
BlockEntranceKind
BlockExitKind
PreStmtKind
PreStmtPurgeDeadSymbolsKind
PostStmtPurgeDeadSymbolsKind
PostStmtKind
PreLoadKind
PostLoadKind
PreStoreKind
PostStoreKind
PostConditionKind
PostLValueKind
PostAllocatorCallKind
MinPostStmtKind
MaxPostStmtKind
PostInitializerKind
CallEnterKind
CallExitBeginKind
CallExitEndKind
FunctionExitKind
PreImplicitCallKind
PostImplicitCallKind
MinImplicitCallKind
MaxImplicitCallKind
LoopExitKind
EpsilonKind

Definition at line 60 of file ProgramPoint.h.

clang::ProgramPoint::ProgramPoint ( ) protecteddefault

ProgramPoint() [2/3]

ProgramPoint() [3/3]

castAs()

template<typename T >

T clang::ProgramPoint::castAs ( ) const inline

dump()

LLVM_DUMP_METHOD void ProgramPoint::dump ( ) const

getAs()

template<typename T >

std::optional< T > clang::ProgramPoint::getAs ( ) const inline

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().

getData1()

const void * clang::ProgramPoint::getData1 ( ) const 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().

getData2()

const void * clang::ProgramPoint::getData2 ( ) const inlineprotected

getElementRef()

getHashValue()

unsigned clang::ProgramPoint::getHashValue ( ) const inline

getKind()

Kind clang::ProgramPoint::getKind ( ) const inline

getLocationContext()

const LocationContext * clang::ProgramPoint::getLocationContext ( ) const inline

getProgramPoint()

getStackFrame()

getTag()

isPurgeKind()

bool clang::ProgramPoint::isPurgeKind ( ) inline

operator!=()

operator==()

printJson()

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().

Profile()

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

setData2()

void clang::ProgramPoint::setData2 ( const void * d) inlineprotected

withTag()


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