diff options
author | dim <dim@FreeBSD.org> | 2011-02-20 13:06:31 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2011-02-20 13:06:31 +0000 |
commit | 39fcc9a984e2820e4ea0fa2ac4abd17d9f3a31df (patch) | |
tree | a9243275843fbeaa590afc07ee888e006b8d54ea /include/clang/Analysis/AnalysisContext.h | |
parent | 69b4eca4a4255ba43baa5c1d9bbdec3ec17f479e (diff) | |
download | FreeBSD-src-39fcc9a984e2820e4ea0fa2ac4abd17d9f3a31df.zip FreeBSD-src-39fcc9a984e2820e4ea0fa2ac4abd17d9f3a31df.tar.gz |
Vendor import of clang trunk r126079:
http://llvm.org/svn/llvm-project/cfe/trunk@126079
Diffstat (limited to 'include/clang/Analysis/AnalysisContext.h')
-rw-r--r-- | include/clang/Analysis/AnalysisContext.h | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/include/clang/Analysis/AnalysisContext.h b/include/clang/Analysis/AnalysisContext.h index 7d4d25f..2ecbfdc 100644 --- a/include/clang/Analysis/AnalysisContext.h +++ b/include/clang/Analysis/AnalysisContext.h @@ -16,6 +16,7 @@ #define LLVM_CLANG_ANALYSIS_ANALYSISCONTEXT_H #include "clang/AST/Decl.h" +#include "clang/AST/Expr.h" #include "llvm/ADT/OwningPtr.h" #include "llvm/ADT/FoldingSet.h" #include "llvm/ADT/PointerUnion.h" @@ -56,15 +57,20 @@ class AnalysisContext { llvm::BumpPtrAllocator A; bool UseUnoptimizedCFG; bool AddEHEdges; + bool AddImplicitDtors; + bool AddInitializers; public: AnalysisContext(const Decl *d, idx::TranslationUnit *tu, bool useUnoptimizedCFG = false, - bool addehedges = false) + bool addehedges = false, + bool addImplicitDtors = false, + bool addInitializers = false) : D(d), TU(tu), cfg(0), completeCFG(0), builtCFG(false), builtCompleteCFG(false), liveness(0), relaxedLiveness(0), PM(0), PCA(0), ReferencedBlockVars(0), UseUnoptimizedCFG(useUnoptimizedCFG), - AddEHEdges(addehedges) {} + AddEHEdges(addehedges), AddImplicitDtors(addImplicitDtors), + AddInitializers(addInitializers) {} ~AnalysisContext(); @@ -80,13 +86,17 @@ public: bool getAddEHEdges() const { return AddEHEdges; } bool getUseUnoptimizedCFG() const { return UseUnoptimizedCFG; } + bool getAddImplicitDtors() const { return AddImplicitDtors; } + bool getAddInitializers() const { return AddInitializers; } Stmt *getBody(); CFG *getCFG(); - + /// Return a version of the CFG without any edges pruned. CFG *getUnoptimizedCFG(); + void dumpCFG(); + ParentMap &getParentMap(); PseudoConstantAnalysis *getPseudoConstantAnalysis(); LiveVariables *getLiveVariables(); @@ -106,15 +116,21 @@ class AnalysisContextManager { typedef llvm::DenseMap<const Decl*, AnalysisContext*> ContextMap; ContextMap Contexts; bool UseUnoptimizedCFG; + bool AddImplicitDtors; + bool AddInitializers; public: - AnalysisContextManager(bool useUnoptimizedCFG = false) - : UseUnoptimizedCFG(useUnoptimizedCFG) {} + AnalysisContextManager(bool useUnoptimizedCFG = false, + bool addImplicitDtors = false, bool addInitializers = false) + : UseUnoptimizedCFG(useUnoptimizedCFG), AddImplicitDtors(addImplicitDtors), + AddInitializers(addInitializers) {} ~AnalysisContextManager(); AnalysisContext *getContext(const Decl *D, idx::TranslationUnit *TU = 0); bool getUseUnoptimizedCFG() const { return UseUnoptimizedCFG; } + bool getAddImplicitDtors() const { return AddImplicitDtors; } + bool getAddInitializers() const { return AddInitializers; } // Discard all previously created AnalysisContexts. void clear(); @@ -196,9 +212,10 @@ class StackFrameContext : public LocationContext { friend class LocationContextManager; StackFrameContext(AnalysisContext *ctx, const LocationContext *parent, - const Stmt *s, const CFGBlock *blk, unsigned idx) - : LocationContext(StackFrame, ctx, parent), CallSite(s), Block(blk), - Index(idx) {} + const Stmt *s, const CFGBlock *blk, + unsigned idx) + : LocationContext(StackFrame, ctx, parent), CallSite(s), + Block(blk), Index(idx) {} public: ~StackFrameContext() {} @@ -282,8 +299,8 @@ public: const StackFrameContext *getStackFrame(AnalysisContext *ctx, const LocationContext *parent, - const Stmt *s, const CFGBlock *blk, - unsigned idx); + const Stmt *s, + const CFGBlock *blk, unsigned idx); const ScopeContext *getScope(AnalysisContext *ctx, const LocationContext *parent, |