Lines Matching defs:ProgramPoint

1 //==- ProgramPoint.h - Program Points for Path-Sensitive Analysis --*- C++ -*-//
10 // This file defines the interface ProgramPoint, which identifies a
38 class ProgramPoint {
69 // The LocationContext could be NULL to allow ProgramPoint to be used in
76 ProgramPoint() {}
77 ProgramPoint(const void *P,
90 ProgramPoint(const void *P1,
106 /// Create a new ProgramPoint object that is the same as the original
108 ProgramPoint withTag(const ProgramPointTag *tag) const {
109 return ProgramPoint(getData1(), getData2(), getKind(),
113 /// \brief Convert to the specified ProgramPoint type, asserting that this
114 /// ProgramPoint is of the desired type.
119 ProgramPoint& PP = t;
124 /// \brief Convert to the specified ProgramPoint type, returning None if this
125 /// ProgramPoint is not of the desired type.
131 ProgramPoint& PP = t;
166 bool operator==(const ProgramPoint & RHS) const {
173 bool operator!=(const ProgramPoint &RHS) const {
188 static ProgramPoint getProgramPoint(const Stmt *S, ProgramPoint::Kind K,
193 class BlockEntrance : public ProgramPoint {
197 : ProgramPoint(B, BlockEntranceKind, L, tag) {
211 friend class ProgramPoint;
213 static bool isKind(const ProgramPoint &Location) {
218 class BlockExit : public ProgramPoint {
221 : ProgramPoint(B, BlockExitKind, L) {}
232 friend class ProgramPoint;
234 static bool isKind(const ProgramPoint &Location) {
239 class StmtPoint : public ProgramPoint {
243 : ProgramPoint(S, p2, k, L, tag) {
255 friend class ProgramPoint;
256 static bool isKind(const ProgramPoint &Location) {
272 friend class ProgramPoint;
274 static bool isKind(const ProgramPoint &Location) {
296 friend class ProgramPoint;
297 static bool isKind(const ProgramPoint &Location) {
311 friend class ProgramPoint;
313 static bool isKind(const ProgramPoint &Location) {
322 ProgramPoint::Kind K, const ProgramPointTag *tag)
326 friend class ProgramPoint;
327 static bool isKind(const ProgramPoint &location) {
340 friend class ProgramPoint;
342 static bool isKind(const ProgramPoint &location) {
354 friend class ProgramPoint;
356 static bool isKind(const ProgramPoint &location) {
368 friend class ProgramPoint;
370 static bool isKind(const ProgramPoint &Location) {
395 friend class ProgramPoint;
397 static bool isKind(const ProgramPoint &Location) {
409 friend class ProgramPoint;
411 static bool isKind(const ProgramPoint &Location) {
425 friend class ProgramPoint;
427 static bool isKind(const ProgramPoint &Location) {
441 friend class ProgramPoint;
443 static bool isKind(const ProgramPoint &Location) {
448 class BlockEdge : public ProgramPoint {
451 : ProgramPoint(B1, B2, BlockEdgeKind, L) {
465 friend class ProgramPoint;
467 static bool isKind(const ProgramPoint &Location) {
472 class PostInitializer : public ProgramPoint {
482 : ProgramPoint(I, Loc, PostInitializerKind, L) {}
494 friend class ProgramPoint;
496 static bool isKind(const ProgramPoint &Location) {
504 class ImplicitCallPoint : public ProgramPoint {
508 : ProgramPoint(Loc.getPtrEncoding(), D, K, L, Tag) {}
518 friend class ProgramPoint;
519 static bool isKind(const ProgramPoint &Location) {
535 friend class ProgramPoint;
537 static bool isKind(const ProgramPoint &Location) {
552 friend class ProgramPoint;
554 static bool isKind(const ProgramPoint &Location) {
561 class CallEnter : public ProgramPoint {
565 : ProgramPoint(stmt, calleeCtx, CallEnterKind, callerCtx, nullptr) {}
576 friend class ProgramPoint;
578 static bool isKind(const ProgramPoint &Location) {
592 class CallExitBegin : public ProgramPoint {
596 : ProgramPoint(nullptr, CallExitBeginKind, L, nullptr) {}
599 friend class ProgramPoint;
601 static bool isKind(const ProgramPoint &Location) {
608 class CallExitEnd : public ProgramPoint {
613 : ProgramPoint(CalleeCtx, CallExitEndKind, CallerCtx, nullptr) {}
620 friend class ProgramPoint;
622 static bool isKind(const ProgramPoint &Location) {
629 class EpsilonPoint : public ProgramPoint {
634 : ProgramPoint(Data1, Data2, EpsilonKind, L, tag) {}
639 friend class ProgramPoint;
641 static bool isKind(const ProgramPoint &Location) {
675 template <> struct DenseMapInfo<clang::ProgramPoint> {
677 static inline clang::ProgramPoint getEmptyKey() {
683 static inline clang::ProgramPoint getTombstoneKey() {
689 static unsigned getHashValue(const clang::ProgramPoint &Loc) {
693 static bool isEqual(const clang::ProgramPoint &L,
694 const clang::ProgramPoint &R) {
701 struct isPodLike<clang::ProgramPoint> { static const bool value = true; };