aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Analysis/Analyses/LiveVariables.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Analysis/Analyses/LiveVariables.h')
-rw-r--r--include/clang/Analysis/Analyses/LiveVariables.h25
1 files changed, 20 insertions, 5 deletions
diff --git a/include/clang/Analysis/Analyses/LiveVariables.h b/include/clang/Analysis/Analyses/LiveVariables.h
index f5d6e51e8a..302ae1c41f 100644
--- a/include/clang/Analysis/Analyses/LiveVariables.h
+++ b/include/clang/Analysis/Analyses/LiveVariables.h
@@ -14,6 +14,7 @@
#ifndef LLVM_CLANG_LIVEVARIABLES_H
#define LLVM_CLANG_LIVEVARIABLES_H
+#include "clang/Analysis/AnalysisContext.h"
#include "clang/AST/Decl.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/ImmutableSet.h"
@@ -25,9 +26,8 @@ class CFGBlock;
class Stmt;
class DeclRefExpr;
class SourceManager;
-class AnalysisContext;
-class LiveVariables {
+class LiveVariables : public ManagedAnalysis {
public:
class LivenessValues {
public:
@@ -67,11 +67,11 @@ public:
};
- ~LiveVariables();
+ virtual ~LiveVariables();
/// Compute the liveness information for a given CFG.
static LiveVariables *computeLiveness(AnalysisContext &analysisContext,
- bool killAtAssign = true);
+ bool killAtAssign);
/// Return true if a variable is live at the end of a
/// specified block.
@@ -92,12 +92,27 @@ public:
void dumpBlockLiveness(const SourceManager& M);
void runOnAllBlocks(Observer &obs);
-
+
+ static LiveVariables *create(AnalysisContext &analysisContext) {
+ return computeLiveness(analysisContext, true);
+ }
+
+ static const void *getTag();
+
private:
LiveVariables(void *impl);
void *impl;
};
+class RelaxedLiveVariables : public LiveVariables {
+public:
+ static LiveVariables *create(AnalysisContext &analysisContext) {
+ return computeLiveness(analysisContext, false);
+ }
+
+ static const void *getTag();
+};
+
} // end namespace clang
#endif