clang  4.0.0svn
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
clang::ProgramPoint Class Reference

#include <ProgramPoint.h>

Inheritance diagram for clang::ProgramPoint:
Inheritance graph
[legend]

Public Types

enum  Kind {
  BlockEdgeKind, BlockEntranceKind, BlockExitKind, PreStmtKind,
  PreStmtPurgeDeadSymbolsKind, PostStmtPurgeDeadSymbolsKind, PostStmtKind, PreLoadKind,
  PostLoadKind, PreStoreKind, PostStoreKind, PostConditionKind,
  PostLValueKind, MinPostStmtKind = PostStmtKind, MaxPostStmtKind = PostLValueKind, PostInitializerKind,
  CallEnterKind, CallExitBeginKind, CallExitEndKind, PreImplicitCallKind,
  PostImplicitCallKind, MinImplicitCallKind = PreImplicitCallKind, MaxImplicitCallKind = PostImplicitCallKind, 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. More...
 
template<typename T >
castAs () const
 Convert to the specified ProgramPoint type, asserting that this ProgramPoint is of the desired type. More...
 
template<typename T >
Optional< T > getAs () const
 Convert to the specified ProgramPoint type, returning None if this ProgramPoint is not of the desired type. More...
 
Kind getKind () const
 
bool isPurgeKind ()
 Is this a program point corresponding to purge/removal of dead symbols and bindings. More...
 
const ProgramPointTaggetTag () const
 
const LocationContextgetLocationContext () const
 
unsigned getHashValue () const
 
bool operator== (const ProgramPoint &RHS) const
 
bool operator!= (const ProgramPoint &RHS) const
 
void Profile (llvm::FoldingSetNodeID &ID) const
 

Static Public Member Functions

static ProgramPoint getProgramPoint (const Stmt *S, ProgramPoint::Kind K, const LocationContext *LC, const ProgramPointTag *tag)
 

Protected Member Functions

 ProgramPoint ()
 
 ProgramPoint (const void *P, Kind k, const LocationContext *l, const ProgramPointTag *tag=nullptr)
 
 ProgramPoint (const void *P1, const void *P2, Kind k, const LocationContext *l, const ProgramPointTag *tag=nullptr)
 
const void * getData1 () const
 
const void * getData2 () const
 
void setData2 (const void *d)
 

Detailed Description

Definition at line 61 of file ProgramPoint.h.

Member Enumeration Documentation

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

Definition at line 63 of file ProgramPoint.h.

Constructor & Destructor Documentation

clang::ProgramPoint::ProgramPoint ( )
inlineprotected

Definition at line 99 of file ProgramPoint.h.

clang::ProgramPoint::ProgramPoint ( const void *  P,
Kind  k,
const LocationContext l,
const ProgramPointTag tag = nullptr 
)
inlineprotected

Definition at line 100 of file ProgramPoint.h.

References getKind().

clang::ProgramPoint::ProgramPoint ( const void *  P1,
const void *  P2,
Kind  k,
const LocationContext l,
const ProgramPointTag tag = nullptr 
)
inlineprotected

Definition at line 113 of file ProgramPoint.h.

Member Function Documentation

template<typename T >
T clang::ProgramPoint::castAs ( ) const
inline
template<typename T >
Optional<T> clang::ProgramPoint::getAs ( ) const
inline

Convert to the specified ProgramPoint type, returning None if this ProgramPoint is not of the desired type.

Definition at line 150 of file ProgramPoint.h.

References clang::None.

Referenced by alreadyExecutedAtLeastOneLoopIteration(), clang::ento::PathDiagnosticLocation::create(), clang::ento::PathDiagnosticLocation::createEndOfPath(), clang::ento::CoreEngine::dispatchWorkItem(), clang::ento::CoreEngine::enqueueStmtNode(), clang::ento::ExprEngine::evalEagerlyAssumeBinOpBifurcation(), GenerateAlternateExtensivePathDiagnostic(), GenerateExtensivePathDiagnostic(), GenerateMinimalPathDiagnostic(), GetAllocationSite(), clang::ento::BugReporterVisitor::getDefaultEndPath(), getLastStmt(), clang::ento::ExplodedNode::getLocationAs(), clang::ento::CheckerContext::getLocationRegionIfPostStore(), llvm::DOTGraphTraits< ExplodedNode * >::getNodeLabel(), clang::ento::BugReport::getStmt(), clang::ento::PathDiagnosticLocation::getStmt(), getStmtBeforeCond(), clang::ento::ExplodedGraph::isInterestingLValueExpr(), isNSStringType(), isSynthesizedAccessor(), clang::ento::WorkList::makeBFS(), peelOffOuterExpr(), shouldRemoveDeadBindings(), clang::ento::bugreporter::trackNullOrUndefValue(), clang::ento::ExprEngine::Visit(), clang::ento::ExprEngine::VisitGuardedExpr(), clang::ento::ExprEngine::VisitLogicalExpr(), clang::ento::FindLastStoreBRVisitor::VisitNode(), clang::ento::UndefOrNullArgVisitor::VisitNode(), clang::ento::SuppressInlineDefensiveChecksVisitor::VisitNode(), clang::ento::CXXSelfAssignmentBRVisitor::VisitNode(), and clang::ento::ConditionBRVisitor::VisitNodeImpl().

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

Definition at line 124 of file ProgramPoint.h.

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

Definition at line 125 of file ProgramPoint.h.

unsigned clang::ProgramPoint::getHashValue ( ) const
inline
Kind clang::ProgramPoint::getKind ( ) const
inline
const LocationContext* clang::ProgramPoint::getLocationContext ( ) const
inline
ProgramPoint ProgramPoint::getProgramPoint ( const Stmt S,
ProgramPoint::Kind  K,
const LocationContext LC,
const ProgramPointTag tag 
)
static
const ProgramPointTag* clang::ProgramPoint::getTag ( ) const
inline
bool clang::ProgramPoint::isPurgeKind ( )
inline

Is this a program point corresponding to purge/removal of dead symbols and bindings.

Definition at line 170 of file ProgramPoint.h.

References getKind().

Referenced by clang::ento::ExprEngine::Visit().

bool clang::ProgramPoint::operator!= ( const ProgramPoint RHS) const
inline

Definition at line 196 of file ProgramPoint.h.

bool clang::ProgramPoint::operator== ( const ProgramPoint RHS) const
inline

Definition at line 189 of file ProgramPoint.h.

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

Definition at line 203 of file ProgramPoint.h.

References getKind().

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

Definition at line 126 of file ProgramPoint.h.

ProgramPoint clang::ProgramPoint::withTag ( const ProgramPointTag tag) const
inline

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