diff options
Diffstat (limited to 'include/clang/Analysis/Analyses/LiveVariables.h')
-rw-r--r-- | include/clang/Analysis/Analyses/LiveVariables.h | 25 |
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 |