aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Analysis/ProgramPoint.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Analysis/ProgramPoint.h')
-rw-r--r--include/clang/Analysis/ProgramPoint.h18
1 files changed, 14 insertions, 4 deletions
diff --git a/include/clang/Analysis/ProgramPoint.h b/include/clang/Analysis/ProgramPoint.h
index efd16b416d..ecb4f742c7 100644
--- a/include/clang/Analysis/ProgramPoint.h
+++ b/include/clang/Analysis/ProgramPoint.h
@@ -25,9 +25,10 @@ namespace clang {
class ProgramPoint {
public:
- enum Kind { BlockEntranceKind=0, PostStmtKind=1, PostLoadKind=2,
- BlockExitKind=3, BlockEdgeSrcKind=4, BlockEdgeDstKind=5,
- BlockEdgeAuxKind=6 };
+ enum Kind { BlockEntranceKind=0,
+ PostStmtKind=1, PostLoadKind=2, PostPurgeDeadSymbolsKind=3,
+ BlockExitKind=4, BlockEdgeSrcKind=5, BlockEdgeDstKind=6,
+ BlockEdgeAuxKind=7 };
protected:
uintptr_t Data;
@@ -110,7 +111,7 @@ public:
static bool classof(const ProgramPoint* Location) {
unsigned k = Location->getKind();
- return k == PostStmtKind || k == PostLoadKind;
+ return k >= PostStmtKind && k <= PostPurgeDeadSymbolsKind;
}
};
@@ -123,6 +124,15 @@ public:
}
};
+class PostPurgeDeadSymbols : public PostStmt {
+public:
+ PostPurgeDeadSymbols(const Stmt* S) : PostStmt(S, PostPurgeDeadSymbolsKind) {}
+
+ static bool classof(const ProgramPoint* Location) {
+ return Location->getKind() == PostPurgeDeadSymbolsKind;
+ }
+};
+
class BlockEdge : public ProgramPoint {
typedef std::pair<CFGBlock*,CFGBlock*> BPair;
public: