From 1d26f48dc2eea1c07431ca1519d7034a21b9bcff Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Mon, 24 Oct 2011 01:32:45 +0000 Subject: [PATCH] Rename AnalysisContext to AnalysisDeclContext. Not only is this name more accurate, but it frees up the name AnalysisContext for other uses. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142782 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../clang/Analysis/Analyses/LiveVariables.h | 6 +- .../Analysis/Analyses/PostOrderCFGView.h | 2 +- .../clang/Analysis/Analyses/ReachableCode.h | 4 +- .../clang/Analysis/Analyses/ThreadSafety.h | 2 +- .../Analysis/Analyses/UninitializedValues.h | 4 +- include/clang/Analysis/AnalysisContext.h | 78 +++++++++---------- include/clang/Analysis/ProgramPoint.h | 2 +- .../Core/BugReporter/PathDiagnostic.h | 14 ++-- .../Core/PathSensitive/AnalysisManager.h | 10 +-- .../Core/PathSensitive/CheckerContext.h | 4 +- .../Core/PathSensitive/ExprEngine.h | 4 +- .../Core/PathSensitive/MemRegion.h | 10 +-- lib/Analysis/AnalysisContext.cpp | 72 ++++++++--------- lib/Analysis/CMakeLists.txt | 2 +- lib/Analysis/LiveVariables.cpp | 10 +-- lib/Analysis/PostOrderCFGView.cpp | 2 +- lib/Analysis/ReachableCode.cpp | 2 +- lib/Analysis/ThreadSafety.cpp | 6 +- lib/Analysis/UninitializedValues.cpp | 8 +- lib/Sema/AnalysisBasedWarnings.cpp | 8 +- .../Checkers/AnalyzerStatsChecker.cpp | 2 +- .../Checkers/CheckSecuritySyntaxOnly.cpp | 6 +- .../Checkers/CheckSizeofPointer.cpp | 6 +- .../Checkers/DeadStoresChecker.cpp | 6 +- .../Checkers/IdempotentOperationChecker.cpp | 22 +++--- .../MallocOverflowSecurityChecker.cpp | 2 +- .../Checkers/ObjCSelfInitChecker.cpp | 8 +- .../Checkers/UnreachableCodeChecker.cpp | 2 +- lib/StaticAnalyzer/Core/AnalysisManager.cpp | 6 +- lib/StaticAnalyzer/Core/CoreEngine.cpp | 4 +- lib/StaticAnalyzer/Core/ExprEngine.cpp | 6 +- lib/StaticAnalyzer/Core/ExprEngineCXX.cpp | 2 +- lib/StaticAnalyzer/Core/MemRegion.cpp | 10 +-- lib/StaticAnalyzer/Core/PathDiagnostic.cpp | 12 +-- lib/StaticAnalyzer/Core/SValBuilder.cpp | 2 +- .../Frontend/AnalysisConsumer.cpp | 4 +- test/Analysis/inline3.c | 2 +- test/SemaCXX/missing-header.cpp | 4 +- 38 files changed, 178 insertions(+), 178 deletions(-) diff --git a/include/clang/Analysis/Analyses/LiveVariables.h b/include/clang/Analysis/Analyses/LiveVariables.h index 302ae1c41f..42e56b26e0 100644 --- a/include/clang/Analysis/Analyses/LiveVariables.h +++ b/include/clang/Analysis/Analyses/LiveVariables.h @@ -70,7 +70,7 @@ public: virtual ~LiveVariables(); /// Compute the liveness information for a given CFG. - static LiveVariables *computeLiveness(AnalysisContext &analysisContext, + static LiveVariables *computeLiveness(AnalysisDeclContext &analysisContext, bool killAtAssign); /// Return true if a variable is live at the end of a @@ -93,7 +93,7 @@ public: void runOnAllBlocks(Observer &obs); - static LiveVariables *create(AnalysisContext &analysisContext) { + static LiveVariables *create(AnalysisDeclContext &analysisContext) { return computeLiveness(analysisContext, true); } @@ -106,7 +106,7 @@ private: class RelaxedLiveVariables : public LiveVariables { public: - static LiveVariables *create(AnalysisContext &analysisContext) { + static LiveVariables *create(AnalysisDeclContext &analysisContext) { return computeLiveness(analysisContext, false); } diff --git a/include/clang/Analysis/Analyses/PostOrderCFGView.h b/include/clang/Analysis/Analyses/PostOrderCFGView.h index 0891343312..6c7eaf9014 100644 --- a/include/clang/Analysis/Analyses/PostOrderCFGView.h +++ b/include/clang/Analysis/Analyses/PostOrderCFGView.h @@ -101,7 +101,7 @@ public: // Used by AnalyisContext to construct this object. static const void *getTag(); - static PostOrderCFGView *create(AnalysisContext &analysisContext); + static PostOrderCFGView *create(AnalysisDeclContext &analysisContext); }; } // end clang namespace diff --git a/include/clang/Analysis/Analyses/ReachableCode.h b/include/clang/Analysis/Analyses/ReachableCode.h index 6cf7fa42ff..a5dba6eefe 100644 --- a/include/clang/Analysis/Analyses/ReachableCode.h +++ b/include/clang/Analysis/Analyses/ReachableCode.h @@ -25,7 +25,7 @@ namespace llvm { } namespace clang { - class AnalysisContext; + class AnalysisDeclContext; class CFGBlock; } @@ -48,7 +48,7 @@ public: unsigned ScanReachableFromBlock(const CFGBlock *Start, llvm::BitVector &Reachable); -void FindUnreachableCode(AnalysisContext &AC, Callback &CB); +void FindUnreachableCode(AnalysisDeclContext &AC, Callback &CB); }} // end namespace clang::reachable_code diff --git a/include/clang/Analysis/Analyses/ThreadSafety.h b/include/clang/Analysis/Analyses/ThreadSafety.h index 72a7ebb83a..b2e71bca73 100644 --- a/include/clang/Analysis/Analyses/ThreadSafety.h +++ b/include/clang/Analysis/Analyses/ThreadSafety.h @@ -143,7 +143,7 @@ public: /// We traverse the blocks in the CFG, compute the set of mutexes that are held /// at the end of each block, and issue warnings for thread safety violations. /// Each block in the CFG is traversed exactly once. -void runThreadSafetyAnalysis(AnalysisContext &AC, ThreadSafetyHandler &Handler); +void runThreadSafetyAnalysis(AnalysisDeclContext &AC, ThreadSafetyHandler &Handler); /// \brief Helper function that returns a LockKind required for the given level /// of access. diff --git a/include/clang/Analysis/Analyses/UninitializedValues.h b/include/clang/Analysis/Analyses/UninitializedValues.h index e2e4f35043..de057eb4bf 100644 --- a/include/clang/Analysis/Analyses/UninitializedValues.h +++ b/include/clang/Analysis/Analyses/UninitializedValues.h @@ -17,7 +17,7 @@ namespace clang { -class AnalysisContext; +class AnalysisDeclContext; class CFG; class DeclContext; class Expr; @@ -45,7 +45,7 @@ struct UninitVariablesAnalysisStats { }; void runUninitializedVariablesAnalysis(const DeclContext &dc, const CFG &cfg, - AnalysisContext &ac, + AnalysisDeclContext &ac, UninitVariablesHandler &handler, UninitVariablesAnalysisStats &stats); diff --git a/include/clang/Analysis/AnalysisContext.h b/include/clang/Analysis/AnalysisContext.h index e769f7f8cf..1c7f075512 100644 --- a/include/clang/Analysis/AnalysisContext.h +++ b/include/clang/Analysis/AnalysisContext.h @@ -7,7 +7,7 @@ // //===----------------------------------------------------------------------===// // -// This file defines AnalysisContext, a class that manages the analysis context +// This file defines AnalysisDeclContext, a class that manages the analysis context // data for path sensitive analysis. // //===----------------------------------------------------------------------===// @@ -38,13 +38,13 @@ class PseudoConstantAnalysis; class ImplicitParamDecl; class LocationContextManager; class StackFrameContext; -class AnalysisContextManager; +class AnalysisDeclContextManager; class LocationContext; namespace idx { class TranslationUnit; } /// The base class of a hierarchy of objects representing analyses tied -/// to AnalysisContext. +/// to AnalysisDeclContext. class ManagedAnalysis { protected: ManagedAnalysis() {} @@ -58,18 +58,18 @@ public: // Which returns a fixed pointer address to distinguish classes of // analysis objects. They also need to implement: // - // static [Derived*] create(AnalysisContext &Ctx); + // static [Derived*] create(AnalysisDeclContext &Ctx); // - // which creates the analysis object given an AnalysisContext. + // which creates the analysis object given an AnalysisDeclContext. }; -/// AnalysisContext contains the context data for the function or method under +/// AnalysisDeclContext contains the context data for the function or method under /// analysis. -class AnalysisContext { - /// Backpoint to the AnalysisManager object that created this AnalysisContext. +class AnalysisDeclContext { + /// Backpoint to the AnalysisManager object that created this AnalysisDeclContext. /// This may be null. - AnalysisContextManager *Manager; + AnalysisDeclContextManager *Manager; const Decl *D; @@ -98,16 +98,16 @@ class AnalysisContext { void *ManagedAnalyses; public: - AnalysisContext(AnalysisContextManager *Mgr, + AnalysisDeclContext(AnalysisDeclContextManager *Mgr, const Decl *D, idx::TranslationUnit *TU); - AnalysisContext(AnalysisContextManager *Mgr, + AnalysisDeclContext(AnalysisDeclContextManager *Mgr, const Decl *D, idx::TranslationUnit *TU, const CFG::BuildOptions &BuildOptions); - ~AnalysisContext(); + ~AnalysisDeclContext(); ASTContext &getASTContext() { return D->getASTContext(); } const Decl *getDecl() const { return D; } @@ -163,7 +163,7 @@ public: getReferencedBlockVars(const BlockDecl *BD); /// Return the ImplicitParamDecl* associated with 'self' if this - /// AnalysisContext wraps an ObjCMethodDecl. Returns NULL otherwise. + /// AnalysisDeclContext wraps an ObjCMethodDecl. Returns NULL otherwise. const ImplicitParamDecl *getSelfDecl() const; const StackFrameContext *getStackFrame(LocationContext const *Parent, @@ -195,13 +195,13 @@ public: private: ContextKind Kind; - // AnalysisContext can't be const since some methods may modify its member. - AnalysisContext *Ctx; + // AnalysisDeclContext can't be const since some methods may modify its member. + AnalysisDeclContext *Ctx; const LocationContext *Parent; protected: - LocationContext(ContextKind k, AnalysisContext *ctx, + LocationContext(ContextKind k, AnalysisDeclContext *ctx, const LocationContext *parent) : Kind(k), Ctx(ctx), Parent(parent) {} @@ -210,7 +210,7 @@ public: ContextKind getKind() const { return Kind; } - AnalysisContext *getAnalysisContext() const { return Ctx; } + AnalysisDeclContext *getAnalysisDeclContext() const { return Ctx; } idx::TranslationUnit *getTranslationUnit() const { return Ctx->getTranslationUnit(); @@ -220,17 +220,17 @@ public: bool isParentOf(const LocationContext *LC) const; - const Decl *getDecl() const { return getAnalysisContext()->getDecl(); } + const Decl *getDecl() const { return getAnalysisDeclContext()->getDecl(); } - CFG *getCFG() const { return getAnalysisContext()->getCFG(); } + CFG *getCFG() const { return getAnalysisDeclContext()->getCFG(); } template T *getAnalysis() const { - return getAnalysisContext()->getAnalysis(); + return getAnalysisDeclContext()->getAnalysis(); } ParentMap &getParentMap() const { - return getAnalysisContext()->getParentMap(); + return getAnalysisDeclContext()->getParentMap(); } const ImplicitParamDecl *getSelfDecl() const { @@ -248,7 +248,7 @@ public: public: static void ProfileCommon(llvm::FoldingSetNodeID &ID, ContextKind ck, - AnalysisContext *ctx, + AnalysisDeclContext *ctx, const LocationContext *parent, const void *data); }; @@ -264,7 +264,7 @@ class StackFrameContext : public LocationContext { unsigned Index; friend class LocationContextManager; - StackFrameContext(AnalysisContext *ctx, const LocationContext *parent, + StackFrameContext(AnalysisDeclContext *ctx, const LocationContext *parent, const Stmt *s, const CFGBlock *blk, unsigned idx) : LocationContext(StackFrame, ctx, parent), CallSite(s), @@ -281,7 +281,7 @@ public: void Profile(llvm::FoldingSetNodeID &ID); - static void Profile(llvm::FoldingSetNodeID &ID, AnalysisContext *ctx, + static void Profile(llvm::FoldingSetNodeID &ID, AnalysisDeclContext *ctx, const LocationContext *parent, const Stmt *s, const CFGBlock *blk, unsigned idx) { ProfileCommon(ID, StackFrame, ctx, parent, s); @@ -298,7 +298,7 @@ class ScopeContext : public LocationContext { const Stmt *Enter; friend class LocationContextManager; - ScopeContext(AnalysisContext *ctx, const LocationContext *parent, + ScopeContext(AnalysisDeclContext *ctx, const LocationContext *parent, const Stmt *s) : LocationContext(Scope, ctx, parent), Enter(s) {} @@ -307,7 +307,7 @@ public: void Profile(llvm::FoldingSetNodeID &ID); - static void Profile(llvm::FoldingSetNodeID &ID, AnalysisContext *ctx, + static void Profile(llvm::FoldingSetNodeID &ID, AnalysisDeclContext *ctx, const LocationContext *parent, const Stmt *s) { ProfileCommon(ID, Scope, ctx, parent, s); } @@ -324,7 +324,7 @@ class BlockInvocationContext : public LocationContext { friend class LocationContextManager; - BlockInvocationContext(AnalysisContext *ctx, const LocationContext *parent, + BlockInvocationContext(AnalysisDeclContext *ctx, const LocationContext *parent, const BlockDecl *bd) : LocationContext(Block, ctx, parent), BD(bd) {} @@ -335,7 +335,7 @@ public: void Profile(llvm::FoldingSetNodeID &ID); - static void Profile(llvm::FoldingSetNodeID &ID, AnalysisContext *ctx, + static void Profile(llvm::FoldingSetNodeID &ID, AnalysisDeclContext *ctx, const LocationContext *parent, const BlockDecl *bd) { ProfileCommon(ID, Block, ctx, parent, bd); } @@ -350,12 +350,12 @@ class LocationContextManager { public: ~LocationContextManager(); - const StackFrameContext *getStackFrame(AnalysisContext *ctx, + const StackFrameContext *getStackFrame(AnalysisDeclContext *ctx, const LocationContext *parent, const Stmt *s, const CFGBlock *blk, unsigned idx); - const ScopeContext *getScope(AnalysisContext *ctx, + const ScopeContext *getScope(AnalysisDeclContext *ctx, const LocationContext *parent, const Stmt *s); @@ -363,26 +363,26 @@ public: void clear(); private: template - const LOC *getLocationContext(AnalysisContext *ctx, + const LOC *getLocationContext(AnalysisDeclContext *ctx, const LocationContext *parent, const DATA *d); }; -class AnalysisContextManager { - typedef llvm::DenseMap ContextMap; +class AnalysisDeclContextManager { + typedef llvm::DenseMap ContextMap; ContextMap Contexts; LocationContextManager LocContexts; CFG::BuildOptions cfgBuildOptions; public: - AnalysisContextManager(bool useUnoptimizedCFG = false, + AnalysisDeclContextManager(bool useUnoptimizedCFG = false, bool addImplicitDtors = false, bool addInitializers = false); - ~AnalysisContextManager(); + ~AnalysisDeclContextManager(); - AnalysisContext *getContext(const Decl *D, idx::TranslationUnit *TU = 0); + AnalysisDeclContext *getContext(const Decl *D, idx::TranslationUnit *TU = 0); bool getUseUnoptimizedCFG() const { return !cfgBuildOptions.PruneTriviallyFalseEdges; @@ -392,7 +392,7 @@ public: return cfgBuildOptions; } - const StackFrameContext *getStackFrame(AnalysisContext *Ctx, + const StackFrameContext *getStackFrame(AnalysisDeclContext *Ctx, LocationContext const *Parent, const Stmt *S, const CFGBlock *Blk, @@ -416,11 +416,11 @@ public: } - /// Discard all previously created AnalysisContexts. + /// Discard all previously created AnalysisDeclContexts. void clear(); private: - friend class AnalysisContext; + friend class AnalysisDeclContext; LocationContextManager &getLocationContextManager() { return LocContexts; diff --git a/include/clang/Analysis/ProgramPoint.h b/include/clang/Analysis/ProgramPoint.h index 7ec4ecd41b..78a4f8928b 100644 --- a/include/clang/Analysis/ProgramPoint.h +++ b/include/clang/Analysis/ProgramPoint.h @@ -28,7 +28,7 @@ namespace clang { -class AnalysisContext; +class AnalysisDeclContext; class FunctionDecl; class LocationContext; class ProgramPointTag; diff --git a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h index 406be3cc4b..5a004746b7 100644 --- a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h +++ b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h @@ -24,7 +24,7 @@ namespace clang { -class AnalysisContext; +class AnalysisDeclContext; class BinaryOperator; class CompoundStmt; class Decl; @@ -89,8 +89,8 @@ public: PathDiagnosticRange() : isPoint(false) {} }; -typedef llvm::PointerUnion - LocationOrAnalysisContext; +typedef llvm::PointerUnion + LocationOrAnalysisDeclContext; class PathDiagnosticLocation { private: @@ -111,10 +111,10 @@ private: FullSourceLoc genLocation(SourceLocation L = SourceLocation(), - LocationOrAnalysisContext LAC = (AnalysisContext*)0) const; + LocationOrAnalysisDeclContext LAC = (AnalysisDeclContext*)0) const; PathDiagnosticRange - genRange(LocationOrAnalysisContext LAC = (AnalysisContext*)0) const; + genRange(LocationOrAnalysisDeclContext LAC = (AnalysisDeclContext*)0) const; public: /// Create an invalid location. @@ -124,7 +124,7 @@ public: /// Create a location corresponding to the given statement. PathDiagnosticLocation(const Stmt *s, const SourceManager &sm, - LocationOrAnalysisContext lac) + LocationOrAnalysisDeclContext lac) : K(StmtK), S(s), D(0), SM(&sm), Loc(genLocation(SourceLocation(), lac)), Range(genRange(lac)) { @@ -153,7 +153,7 @@ public: /// Create a location for the beginning of the statement. static PathDiagnosticLocation createBegin(const Stmt *S, const SourceManager &SM, - const LocationOrAnalysisContext LAC); + const LocationOrAnalysisDeclContext LAC); /// Create the location for the operator of the binary expression. /// Assumes the statement has a valid location. diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h b/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h index 2af16d96e3..e6af93fbd1 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h @@ -31,7 +31,7 @@ namespace ento { class CheckerManager; class AnalysisManager : public BugReporterData { - AnalysisContextManager AnaCtxMgr; + AnalysisDeclContextManager AnaCtxMgr; ASTContext &Ctx; DiagnosticsEngine &Diags; @@ -99,7 +99,7 @@ public: AnaCtxMgr.clear(); } - AnalysisContextManager& getAnalysisContextManager() { + AnalysisDeclContextManager& getAnalysisDeclContextManager() { return AnaCtxMgr; } @@ -164,7 +164,7 @@ public: bool hasIndexer() const { return Idxer != 0; } - AnalysisContext *getAnalysisContextInAnotherTU(const Decl *D); + AnalysisDeclContext *getAnalysisDeclContextInAnotherTU(const Decl *D); CFG *getCFG(Decl const *D) { return AnaCtxMgr.getContext(D)->getCFG(); @@ -179,11 +179,11 @@ public: return AnaCtxMgr.getContext(D)->getParentMap(); } - AnalysisContext *getAnalysisContext(const Decl *D) { + AnalysisDeclContext *getAnalysisDeclContext(const Decl *D) { return AnaCtxMgr.getContext(D); } - AnalysisContext *getAnalysisContext(const Decl *D, idx::TranslationUnit *TU) { + AnalysisDeclContext *getAnalysisDeclContext(const Decl *D, idx::TranslationUnit *TU) { return AnaCtxMgr.getContext(D, TU); } diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h b/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h index 55ba42c737..ad587ae928 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h @@ -147,8 +147,8 @@ public: Eng.getBugReporter().EmitReport(R); } - AnalysisContext *getCurrentAnalysisContext() const { - return Pred->getLocationContext()->getAnalysisContext(); + AnalysisDeclContext *getCurrentAnalysisDeclContext() const { + return Pred->getLocationContext()->getAnalysisDeclContext(); } private: diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h b/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h index 6aec0d641f..07b2cedbd0 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h @@ -28,7 +28,7 @@ namespace clang { -class AnalysisContextManager; +class AnalysisDeclContextManager; class ObjCForCollectionStmt; namespace ento { @@ -40,7 +40,7 @@ class ObjCMessage; class ExprEngine : public SubEngine { AnalysisManager &AMgr; - AnalysisContextManager &AnalysisContexts; + AnalysisDeclContextManager &AnalysisDeclContexts; CoreEngine Engine; diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h b/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h index c9941fe90c..ced75982b7 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h @@ -448,11 +448,11 @@ class BlockTextRegion : public CodeTextRegion { friend class MemRegionManager; const BlockDecl *BD; - AnalysisContext *AC; + AnalysisDeclContext *AC; CanQualType locTy; BlockTextRegion(const BlockDecl *bd, CanQualType lTy, - AnalysisContext *ac, const MemRegion* sreg) + AnalysisDeclContext *ac, const MemRegion* sreg) : CodeTextRegion(sreg, BlockTextRegionKind), BD(bd), AC(ac), locTy(lTy) {} public: @@ -464,14 +464,14 @@ public: return BD; } - AnalysisContext *getAnalysisContext() const { return AC; } + AnalysisDeclContext *getAnalysisDeclContext() const { return AC; } virtual void dumpToStream(raw_ostream &os) const; void Profile(llvm::FoldingSetNodeID& ID) const; static void ProfileRegion(llvm::FoldingSetNodeID& ID, const BlockDecl *BD, - CanQualType, const AnalysisContext*, + CanQualType, const AnalysisDeclContext*, const MemRegion*); static bool classof(const MemRegion* R) { @@ -1038,7 +1038,7 @@ public: const FunctionTextRegion *getFunctionTextRegion(const FunctionDecl *FD); const BlockTextRegion *getBlockTextRegion(const BlockDecl *BD, CanQualType locTy, - AnalysisContext *AC); + AnalysisDeclContext *AC); /// getBlockDataRegion - Get the memory region associated with an instance /// of a block. Unlike many other MemRegions, the LocationContext* diff --git a/lib/Analysis/AnalysisContext.cpp b/lib/Analysis/AnalysisContext.cpp index 424917eba9..680f2c4050 100644 --- a/lib/Analysis/AnalysisContext.cpp +++ b/lib/Analysis/AnalysisContext.cpp @@ -1,4 +1,4 @@ -//== AnalysisContext.cpp - Analysis context for Path Sens analysis -*- C++ -*-// +//== AnalysisDeclContext.cpp - Analysis context for Path Sens analysis -*- C++ -*-// // // The LLVM Compiler Infrastructure // @@ -7,7 +7,7 @@ // //===----------------------------------------------------------------------===// // -// This file defines AnalysisContext, a class that manages the analysis context +// This file defines AnalysisDeclContext, a class that manages the analysis context // data for path sensitive analysis. // //===----------------------------------------------------------------------===// @@ -32,7 +32,7 @@ using namespace clang; typedef llvm::DenseMap ManagedAnalysisMap; -AnalysisContext::AnalysisContext(AnalysisContextManager *Mgr, +AnalysisDeclContext::AnalysisDeclContext(AnalysisDeclContextManager *Mgr, const Decl *d, idx::TranslationUnit *tu, const CFG::BuildOptions &buildOptions) @@ -49,7 +49,7 @@ AnalysisContext::AnalysisContext(AnalysisContextManager *Mgr, cfgBuildOptions.forcedBlkExprs = &forcedBlkExprs; } -AnalysisContext::AnalysisContext(AnalysisContextManager *Mgr, +AnalysisDeclContext::AnalysisDeclContext(AnalysisDeclContextManager *Mgr, const Decl *d, idx::TranslationUnit *tu) : Manager(Mgr), @@ -64,7 +64,7 @@ AnalysisContext::AnalysisContext(AnalysisContextManager *Mgr, cfgBuildOptions.forcedBlkExprs = &forcedBlkExprs; } -AnalysisContextManager::AnalysisContextManager(bool useUnoptimizedCFG, +AnalysisDeclContextManager::AnalysisDeclContextManager(bool useUnoptimizedCFG, bool addImplicitDtors, bool addInitializers) { cfgBuildOptions.PruneTriviallyFalseEdges = !useUnoptimizedCFG; @@ -72,13 +72,13 @@ AnalysisContextManager::AnalysisContextManager(bool useUnoptimizedCFG, cfgBuildOptions.AddInitializers = addInitializers; } -void AnalysisContextManager::clear() { +void AnalysisDeclContextManager::clear() { for (ContextMap::iterator I = Contexts.begin(), E = Contexts.end(); I!=E; ++I) delete I->second; Contexts.clear(); } -Stmt *AnalysisContext::getBody() const { +Stmt *AnalysisDeclContext::getBody() const { if (const FunctionDecl *FD = dyn_cast(D)) return FD->getBody(); else if (const ObjCMethodDecl *MD = dyn_cast(D)) @@ -92,14 +92,14 @@ Stmt *AnalysisContext::getBody() const { llvm_unreachable("unknown code decl"); } -const ImplicitParamDecl *AnalysisContext::getSelfDecl() const { +const ImplicitParamDecl *AnalysisDeclContext::getSelfDecl() const { if (const ObjCMethodDecl *MD = dyn_cast(D)) return MD->getSelfDecl(); return NULL; } -void AnalysisContext::registerForcedBlockExpression(const Stmt *stmt) { +void AnalysisDeclContext::registerForcedBlockExpression(const Stmt *stmt) { if (!forcedBlkExprs) forcedBlkExprs = new CFG::BuildOptions::ForcedBlkExprs(); // Default construct an entry for 'stmt'. @@ -109,7 +109,7 @@ void AnalysisContext::registerForcedBlockExpression(const Stmt *stmt) { } const CFGBlock * -AnalysisContext::getBlockForRegisteredExpression(const Stmt *stmt) { +AnalysisDeclContext::getBlockForRegisteredExpression(const Stmt *stmt) { assert(forcedBlkExprs); if (const Expr *e = dyn_cast(stmt)) stmt = e->IgnoreParens(); @@ -119,7 +119,7 @@ AnalysisContext::getBlockForRegisteredExpression(const Stmt *stmt) { return itr->second; } -CFG *AnalysisContext::getCFG() { +CFG *AnalysisDeclContext::getCFG() { if (!cfgBuildOptions.PruneTriviallyFalseEdges) return getUnoptimizedCFG(); @@ -133,7 +133,7 @@ CFG *AnalysisContext::getCFG() { return cfg.get(); } -CFG *AnalysisContext::getUnoptimizedCFG() { +CFG *AnalysisDeclContext::getUnoptimizedCFG() { if (!builtCompleteCFG) { SaveAndRestore NotPrune(cfgBuildOptions.PruneTriviallyFalseEdges, false); @@ -146,7 +146,7 @@ CFG *AnalysisContext::getUnoptimizedCFG() { return completeCFG.get(); } -CFGStmtMap *AnalysisContext::getCFGStmtMap() { +CFGStmtMap *AnalysisDeclContext::getCFGStmtMap() { if (cfgStmtMap) return cfgStmtMap.get(); @@ -158,7 +158,7 @@ CFGStmtMap *AnalysisContext::getCFGStmtMap() { return 0; } -CFGReverseBlockReachabilityAnalysis *AnalysisContext::getCFGReachablityAnalysis() { +CFGReverseBlockReachabilityAnalysis *AnalysisDeclContext::getCFGReachablityAnalysis() { if (CFA) return CFA.get(); @@ -170,39 +170,39 @@ CFGReverseBlockReachabilityAnalysis *AnalysisContext::getCFGReachablityAnalysis( return 0; } -void AnalysisContext::dumpCFG() { +void AnalysisDeclContext::dumpCFG() { getCFG()->dump(getASTContext().getLangOptions()); } -ParentMap &AnalysisContext::getParentMap() { +ParentMap &AnalysisDeclContext::getParentMap() { if (!PM) PM.reset(new ParentMap(getBody())); return *PM; } -PseudoConstantAnalysis *AnalysisContext::getPseudoConstantAnalysis() { +PseudoConstantAnalysis *AnalysisDeclContext::getPseudoConstantAnalysis() { if (!PCA) PCA.reset(new PseudoConstantAnalysis(getBody())); return PCA.get(); } -AnalysisContext *AnalysisContextManager::getContext(const Decl *D, +AnalysisDeclContext *AnalysisDeclContextManager::getContext(const Decl *D, idx::TranslationUnit *TU) { - AnalysisContext *&AC = Contexts[D]; + AnalysisDeclContext *&AC = Contexts[D]; if (!AC) - AC = new AnalysisContext(this, D, TU, cfgBuildOptions); + AC = new AnalysisDeclContext(this, D, TU, cfgBuildOptions); return AC; } const StackFrameContext * -AnalysisContext::getStackFrame(LocationContext const *Parent, const Stmt *S, +AnalysisDeclContext::getStackFrame(LocationContext const *Parent, const Stmt *S, const CFGBlock *Blk, unsigned Idx) { return getLocationContextManager().getStackFrame(this, Parent, S, Blk, Idx); } -LocationContextManager & AnalysisContext::getLocationContextManager() { +LocationContextManager & AnalysisDeclContext::getLocationContextManager() { assert(Manager && - "Cannot create LocationContexts without an AnalysisContextManager!"); + "Cannot create LocationContexts without an AnalysisDeclContextManager!"); return Manager->getLocationContextManager(); } @@ -212,7 +212,7 @@ LocationContextManager & AnalysisContext::getLocationContextManager() { void LocationContext::ProfileCommon(llvm::FoldingSetNodeID &ID, ContextKind ck, - AnalysisContext *ctx, + AnalysisDeclContext *ctx, const LocationContext *parent, const void *data) { ID.AddInteger(ck); @@ -222,15 +222,15 @@ void LocationContext::ProfileCommon(llvm::FoldingSetNodeID &ID, } void StackFrameContext::Profile(llvm::FoldingSetNodeID &ID) { - Profile(ID, getAnalysisContext(), getParent(), CallSite, Block, Index); + Profile(ID, getAnalysisDeclContext(), getParent(), CallSite, Block, Index); } void ScopeContext::Profile(llvm::FoldingSetNodeID &ID) { - Profile(ID, getAnalysisContext(), getParent(), Enter); + Profile(ID, getAnalysisDeclContext(), getParent(), Enter); } void BlockInvocationContext::Profile(llvm::FoldingSetNodeID &ID) { - Profile(ID, getAnalysisContext(), getParent(), BD); + Profile(ID, getAnalysisDeclContext(), getParent(), BD); } //===----------------------------------------------------------------------===// @@ -239,7 +239,7 @@ void BlockInvocationContext::Profile(llvm::FoldingSetNodeID &ID) { template const LOC* -LocationContextManager::getLocationContext(AnalysisContext *ctx, +LocationContextManager::getLocationContext(AnalysisDeclContext *ctx, const LocationContext *parent, const DATA *d) { llvm::FoldingSetNodeID ID; @@ -256,7 +256,7 @@ LocationContextManager::getLocationContext(AnalysisContext *ctx, } const StackFrameContext* -LocationContextManager::getStackFrame(AnalysisContext *ctx, +LocationContextManager::getStackFrame(AnalysisDeclContext *ctx, const LocationContext *parent, const Stmt *s, const CFGBlock *blk, unsigned idx) { @@ -273,7 +273,7 @@ LocationContextManager::getStackFrame(AnalysisContext *ctx, } const ScopeContext * -LocationContextManager::getScope(AnalysisContext *ctx, +LocationContextManager::getScope(AnalysisDeclContext *ctx, const LocationContext *parent, const Stmt *s) { return getLocationContext(ctx, parent, s); @@ -395,9 +395,9 @@ static DeclVec* LazyInitializeReferencedDecls(const BlockDecl *BD, return BV; } -std::pair -AnalysisContext::getReferencedBlockVars(const BlockDecl *BD) { +std::pair +AnalysisDeclContext::getReferencedBlockVars(const BlockDecl *BD) { if (!ReferencedBlockVars) ReferencedBlockVars = new llvm::DenseMap(); @@ -405,7 +405,7 @@ AnalysisContext::getReferencedBlockVars(const BlockDecl *BD) { return std::make_pair(V->begin(), V->end()); } -ManagedAnalysis *&AnalysisContext::getAnalysisImpl(const void *tag) { +ManagedAnalysis *&AnalysisDeclContext::getAnalysisImpl(const void *tag) { if (!ManagedAnalyses) ManagedAnalyses = new ManagedAnalysisMap(); ManagedAnalysisMap *M = (ManagedAnalysisMap*) ManagedAnalyses; @@ -418,7 +418,7 @@ ManagedAnalysis *&AnalysisContext::getAnalysisImpl(const void *tag) { ManagedAnalysis::~ManagedAnalysis() {} -AnalysisContext::~AnalysisContext() { +AnalysisDeclContext::~AnalysisDeclContext() { delete forcedBlkExprs; delete ReferencedBlockVars; // Release the managed analyses. @@ -430,7 +430,7 @@ AnalysisContext::~AnalysisContext() { } } -AnalysisContextManager::~AnalysisContextManager() { +AnalysisDeclContextManager::~AnalysisDeclContextManager() { for (ContextMap::iterator I = Contexts.begin(), E = Contexts.end(); I!=E; ++I) delete I->second; } diff --git a/lib/Analysis/CMakeLists.txt b/lib/Analysis/CMakeLists.txt index e4b7ab8c94..7ad14c41eb 100644 --- a/lib/Analysis/CMakeLists.txt +++ b/lib/Analysis/CMakeLists.txt @@ -1,7 +1,7 @@ set(LLVM_USED_LIBS clangBasic clangAST clangIndex) add_clang_library(clangAnalysis - AnalysisContext.cpp + AnalysisDeclContext.cpp CFG.cpp CFGReachabilityAnalysis.cpp CFGStmtMap.cpp diff --git a/lib/Analysis/LiveVariables.cpp b/lib/Analysis/LiveVariables.cpp index c0912b0227..194c03cd0a 100644 --- a/lib/Analysis/LiveVariables.cpp +++ b/lib/Analysis/LiveVariables.cpp @@ -22,7 +22,7 @@ class DataflowWorklist { llvm::BitVector enqueuedBlocks; PostOrderCFGView *POV; public: - DataflowWorklist(const CFG &cfg, AnalysisContext &Ctx) + DataflowWorklist(const CFG &cfg, AnalysisDeclContext &Ctx) : enqueuedBlocks(cfg.getNumBlockIDs()), POV(Ctx.getAnalysis()) {} @@ -86,7 +86,7 @@ const CFGBlock *DataflowWorklist::dequeue() { namespace { class LiveVariablesImpl { public: - AnalysisContext &analysisContext; + AnalysisDeclContext &analysisContext; std::vector cfgBlockValues; llvm::ImmutableSet::Factory SSetFact; llvm::ImmutableSet::Factory DSetFact; @@ -106,7 +106,7 @@ public: void dumpBlockLiveness(const SourceManager& M); - LiveVariablesImpl(AnalysisContext &ac, bool KillAtAssign) + LiveVariablesImpl(AnalysisDeclContext &ac, bool KillAtAssign) : analysisContext(ac), SSetFact(false), // Do not canonicalize ImmutableSets by default. DSetFact(false), // This is a *major* performance win. @@ -323,7 +323,7 @@ void TransferFunctions::VisitBinaryOperator(BinaryOperator *B) { } void TransferFunctions::VisitBlockExpr(BlockExpr *BE) { - AnalysisContext::referenced_decls_iterator I, E; + AnalysisDeclContext::referenced_decls_iterator I, E; llvm::tie(I, E) = LV.analysisContext.getReferencedBlockVars(BE->getBlockDecl()); for ( ; I != E ; ++I) { @@ -447,7 +447,7 @@ LiveVariables::~LiveVariables() { } LiveVariables * -LiveVariables::computeLiveness(AnalysisContext &AC, +LiveVariables::computeLiveness(AnalysisDeclContext &AC, bool killAtAssign) { // No CFG? Bail out. diff --git a/lib/Analysis/PostOrderCFGView.cpp b/lib/Analysis/PostOrderCFGView.cpp index fed0e38bb5..311423f285 100644 --- a/lib/Analysis/PostOrderCFGView.cpp +++ b/lib/Analysis/PostOrderCFGView.cpp @@ -26,7 +26,7 @@ PostOrderCFGView::PostOrderCFGView(const CFG *cfg) { } } -PostOrderCFGView *PostOrderCFGView::create(AnalysisContext &ctx) { +PostOrderCFGView *PostOrderCFGView::create(AnalysisDeclContext &ctx) { const CFG *cfg = ctx.getCFG(); if (!cfg) return 0; diff --git a/lib/Analysis/ReachableCode.cpp b/lib/Analysis/ReachableCode.cpp index 49317718c3..62575f9f23 100644 --- a/lib/Analysis/ReachableCode.cpp +++ b/lib/Analysis/ReachableCode.cpp @@ -287,7 +287,7 @@ unsigned ScanReachableFromBlock(const CFGBlock *Start, return count; } -void FindUnreachableCode(AnalysisContext &AC, Callback &CB) { +void FindUnreachableCode(AnalysisDeclContext &AC, Callback &CB) { CFG *cfg = AC.getCFG(); if (!cfg) return; diff --git a/lib/Analysis/ThreadSafety.cpp b/lib/Analysis/ThreadSafety.cpp index 3153c164b9..9c62d00e81 100644 --- a/lib/Analysis/ThreadSafety.cpp +++ b/lib/Analysis/ThreadSafety.cpp @@ -648,7 +648,7 @@ public: Lockset addLock(Lockset &LSet, Expr *MutexExp, const NamedDecl *D, LockKind LK, SourceLocation Loc); - void runAnalysis(AnalysisContext &AC); + void runAnalysis(AnalysisDeclContext &AC); }; /// \brief Compute the intersection of two locksets and issue warnings for any @@ -710,7 +710,7 @@ Lockset ThreadSafetyAnalyzer::addLock(Lockset &LSet, Expr *MutexExp, /// We traverse the blocks in the CFG, compute the set of mutexes that are held /// at the end of each block, and issue warnings for thread safety violations. /// Each block in the CFG is traversed exactly once. -void ThreadSafetyAnalyzer::runAnalysis(AnalysisContext &AC) { +void ThreadSafetyAnalyzer::runAnalysis(AnalysisDeclContext &AC) { CFG *CFGraph = AC.getCFG(); if (!CFGraph) return; const NamedDecl *D = dyn_cast_or_null(AC.getDecl()); @@ -869,7 +869,7 @@ namespace thread_safety { /// We traverse the blocks in the CFG, compute the set of mutexes that are held /// at the end of each block, and issue warnings for thread safety violations. /// Each block in the CFG is traversed exactly once. -void runThreadSafetyAnalysis(AnalysisContext &AC, +void runThreadSafetyAnalysis(AnalysisDeclContext &AC, ThreadSafetyHandler &Handler) { ThreadSafetyAnalyzer Analyzer(Handler); Analyzer.runAnalysis(AC); diff --git a/lib/Analysis/UninitializedValues.cpp b/lib/Analysis/UninitializedValues.cpp index 9e98560b65..86b96ce623 100644 --- a/lib/Analysis/UninitializedValues.cpp +++ b/lib/Analysis/UninitializedValues.cpp @@ -337,7 +337,7 @@ public: class TransferFunctions : public StmtVisitor { CFGBlockValues &vals; const CFG &cfg; - AnalysisContext ∾ + AnalysisDeclContext ∾ UninitVariablesHandler *handler; /// The last DeclRefExpr seen when analyzing a block. Used to @@ -356,7 +356,7 @@ class TransferFunctions : public StmtVisitor { public: TransferFunctions(CFGBlockValues &vals, const CFG &cfg, - AnalysisContext &ac, + AnalysisDeclContext &ac, UninitVariablesHandler *handler) : vals(vals), cfg(cfg), ac(ac), handler(handler), lastDR(0), lastLoad(0), @@ -615,7 +615,7 @@ void TransferFunctions::ProcessUses(Stmt *s) { //====------------------------------------------------------------------------// static bool runOnBlock(const CFGBlock *block, const CFG &cfg, - AnalysisContext &ac, CFGBlockValues &vals, + AnalysisDeclContext &ac, CFGBlockValues &vals, llvm::BitVector &wasAnalyzed, UninitVariablesHandler *handler = 0) { @@ -672,7 +672,7 @@ static bool runOnBlock(const CFGBlock *block, const CFG &cfg, void clang::runUninitializedVariablesAnalysis( const DeclContext &dc, const CFG &cfg, - AnalysisContext &ac, + AnalysisDeclContext &ac, UninitVariablesHandler &handler, UninitVariablesAnalysisStats &stats) { CFGBlockValues vals(cfg); diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp index 647d61fbfe..8b2e269708 100644 --- a/lib/Sema/AnalysisBasedWarnings.cpp +++ b/lib/Sema/AnalysisBasedWarnings.cpp @@ -63,7 +63,7 @@ namespace { } /// CheckUnreachable - Check for unreachable code. -static void CheckUnreachable(Sema &S, AnalysisContext &AC) { +static void CheckUnreachable(Sema &S, AnalysisDeclContext &AC) { UnreachableCodeHandler UC(S); reachable_code::FindUnreachableCode(AC, UC); } @@ -89,7 +89,7 @@ enum ControlFlowKind { /// return. We assume NeverFallThrough iff we never fall off the end of the /// statement but we may return. We assume that functions not marked noreturn /// will return. -static ControlFlowKind CheckFallThrough(AnalysisContext &AC) { +static ControlFlowKind CheckFallThrough(AnalysisDeclContext &AC) { CFG *cfg = AC.getCFG(); if (cfg == 0) return UnknownFallThrough; @@ -312,7 +312,7 @@ struct CheckFallThroughDiagnostics { static void CheckFallThroughForBody(Sema &S, const Decl *D, const Stmt *Body, const BlockExpr *blkExpr, const CheckFallThroughDiagnostics& CD, - AnalysisContext &AC) { + AnalysisDeclContext &AC) { bool ReturnsVoid = false; bool HasNoReturn = false; @@ -830,7 +830,7 @@ AnalysisBasedWarnings::IssueWarnings(sema::AnalysisBasedWarnings::Policy P, const Stmt *Body = D->getBody(); assert(Body); - AnalysisContext AC(/* AnalysisContextManager */ 0, D, 0); + AnalysisDeclContext AC(/* AnalysisDeclContextManager */ 0, D, 0); // Don't generate EH edges for CallExprs as we'd like to avoid the n^2 // explosion for destrutors that can result and the compile time hit. diff --git a/lib/StaticAnalyzer/Checkers/AnalyzerStatsChecker.cpp b/lib/StaticAnalyzer/Checkers/AnalyzerStatsChecker.cpp index cd977bf54c..66b3290f4e 100644 --- a/lib/StaticAnalyzer/Checkers/AnalyzerStatsChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/AnalyzerStatsChecker.cpp @@ -54,7 +54,7 @@ void AnalyzerStatsChecker::checkEndAnalysis(ExplodedGraph &G, // Get the CFG and the Decl of this block C = LC->getCFG(); - D = LC->getAnalysisContext()->getDecl(); + D = LC->getAnalysisDeclContext()->getDecl(); unsigned total = 0, unreachable = 0; diff --git a/lib/StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp b/lib/StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp index bf7ba185b5..06899fc578 100644 --- a/lib/StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp +++ b/lib/StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp @@ -36,14 +36,14 @@ static bool isArc4RandomAvailable(const ASTContext &Ctx) { namespace { class WalkAST : public StmtVisitor { BugReporter &BR; - AnalysisContext* AC; + AnalysisDeclContext* AC; enum { num_setids = 6 }; IdentifierInfo *II_setid[num_setids]; const bool CheckRand; public: - WalkAST(BugReporter &br, AnalysisContext* ac) + WalkAST(BugReporter &br, AnalysisDeclContext* ac) : BR(br), AC(ac), II_setid(), CheckRand(isArc4RandomAvailable(BR.getContext())) {} @@ -611,7 +611,7 @@ class SecuritySyntaxChecker : public Checker { public: void checkASTCodeBody(const Decl *D, AnalysisManager& mgr, BugReporter &BR) const { - WalkAST walker(BR, mgr.getAnalysisContext(D)); + WalkAST walker(BR, mgr.getAnalysisDeclContext(D)); walker.Visit(D->getBody()); } }; diff --git a/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp b/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp index 469be05fb7..55945e6c07 100644 --- a/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp +++ b/lib/StaticAnalyzer/Checkers/CheckSizeofPointer.cpp @@ -24,10 +24,10 @@ using namespace ento; namespace { class WalkAST : public StmtVisitor { BugReporter &BR; - AnalysisContext* AC; + AnalysisDeclContext* AC; public: - WalkAST(BugReporter &br, AnalysisContext* ac) : BR(br), AC(ac) {} + WalkAST(BugReporter &br, AnalysisDeclContext* ac) : BR(br), AC(ac) {} void VisitUnaryExprOrTypeTraitExpr(UnaryExprOrTypeTraitExpr *E); void VisitStmt(Stmt *S) { VisitChildren(S); } void VisitChildren(Stmt *S); @@ -80,7 +80,7 @@ class SizeofPointerChecker : public Checker { public: void checkASTCodeBody(const Decl *D, AnalysisManager& mgr, BugReporter &BR) const { - WalkAST walker(BR, mgr.getAnalysisContext(D)); + WalkAST walker(BR, mgr.getAnalysisDeclContext(D)); walker.Visit(D->getBody()); } }; diff --git a/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp b/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp index 901af43c5f..79c889d78a 100644 --- a/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp @@ -72,7 +72,7 @@ class DeadStoreObs : public LiveVariables::Observer { const CFG &cfg; ASTContext &Ctx; BugReporter& BR; - AnalysisContext* AC; + AnalysisDeclContext* AC; ParentMap& Parents; llvm::SmallPtrSet Escaped; llvm::OwningPtr reachableCode; @@ -82,7 +82,7 @@ class DeadStoreObs : public LiveVariables::Observer { public: DeadStoreObs(const CFG &cfg, ASTContext &ctx, - BugReporter& br, AnalysisContext* ac, ParentMap& parents, + BugReporter& br, AnalysisDeclContext* ac, ParentMap& parents, llvm::SmallPtrSet &escaped) : cfg(cfg), Ctx(ctx), BR(br), AC(ac), Parents(parents), Escaped(escaped), currentBlock(0) {} @@ -350,7 +350,7 @@ public: BugReporter &BR) const { if (LiveVariables *L = mgr.getAnalysis(D)) { CFG &cfg = *mgr.getCFG(D); - AnalysisContext *AC = mgr.getAnalysisContext(D); + AnalysisDeclContext *AC = mgr.getAnalysisDeclContext(D); ParentMap &pmap = mgr.getParentMap(D); FindEscaped FS(&cfg); FS.getCFG().VisitBlockStmts(FS); diff --git a/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp b/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp index 5c257e595b..a3ebf0b750 100644 --- a/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp @@ -82,16 +82,16 @@ private: // False positive reduction methods static bool isSelfAssign(const Expr *LHS, const Expr *RHS); - static bool isUnused(const Expr *E, AnalysisContext *AC); + static bool isUnused(const Expr *E, AnalysisDeclContext *AC); static bool isTruncationExtensionAssignment(const Expr *LHS, const Expr *RHS); - static bool pathWasCompletelyAnalyzed(AnalysisContext *AC, + static bool pathWasCompletelyAnalyzed(AnalysisDeclContext *AC, const CFGBlock *CB, const CoreEngine &CE); static bool CanVary(const Expr *Ex, - AnalysisContext *AC); + AnalysisDeclContext *AC); static bool isConstantOrPseudoConstant(const DeclRefExpr *DR, - AnalysisContext *AC); + AnalysisDeclContext *AC); static bool containsNonLocalVarDecl(const Stmt *S); // Hash table and related data structures @@ -116,7 +116,7 @@ void IdempotentOperationChecker::checkPreStmt(const BinaryOperator *B, // been created yet. BinaryOperatorData &Data = hash[B]; Assumption &A = Data.assumption; - AnalysisContext *AC = C.getCurrentAnalysisContext(); + AnalysisDeclContext *AC = C.getCurrentAnalysisDeclContext(); // If we already have visited this node on a path that does not contain an // idempotent operation, return immediately. @@ -366,8 +366,8 @@ void IdempotentOperationChecker::checkEndAnalysis(ExplodedGraph &G, // warning if (Eng.hasWorkRemaining()) { // If we can trace back - AnalysisContext *AC = (*ES.begin())->getLocationContext() - ->getAnalysisContext(); + AnalysisDeclContext *AC = (*ES.begin())->getLocationContext() + ->getAnalysisDeclContext(); if (!pathWasCompletelyAnalyzed(AC, AC->getCFGStmtMap()->getBlock(B), Eng.getCoreEngine())) @@ -487,7 +487,7 @@ bool IdempotentOperationChecker::isSelfAssign(const Expr *LHS, const Expr *RHS) // Returns true if the Expr points to a VarDecl that is not read anywhere // outside of self-assignments. bool IdempotentOperationChecker::isUnused(const Expr *E, - AnalysisContext *AC) { + AnalysisDeclContext *AC) { if (!E) return false; @@ -531,7 +531,7 @@ bool IdempotentOperationChecker::isTruncationExtensionAssignment( // Returns false if a path to this block was not completely analyzed, or true // otherwise. bool -IdempotentOperationChecker::pathWasCompletelyAnalyzed(AnalysisContext *AC, +IdempotentOperationChecker::pathWasCompletelyAnalyzed(AnalysisDeclContext *AC, const CFGBlock *CB, const CoreEngine &CE) { @@ -615,7 +615,7 @@ IdempotentOperationChecker::pathWasCompletelyAnalyzed(AnalysisContext *AC, // expression may also involve a variable that behaves like a constant. The // function returns true if the expression varies, and false otherwise. bool IdempotentOperationChecker::CanVary(const Expr *Ex, - AnalysisContext *AC) { + AnalysisDeclContext *AC) { // Parentheses and casts are irrelevant here Ex = Ex->IgnoreParenCasts(); @@ -699,7 +699,7 @@ bool IdempotentOperationChecker::CanVary(const Expr *Ex, // Returns true if a DeclRefExpr is or behaves like a constant. bool IdempotentOperationChecker::isConstantOrPseudoConstant( const DeclRefExpr *DR, - AnalysisContext *AC) { + AnalysisDeclContext *AC) { // Check if the type of the Decl is const-qualified if (DR->getType().isConstQualified()) return true; diff --git a/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp b/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp index cf5501a4ac..c9d315a32e 100644 --- a/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp @@ -205,7 +205,7 @@ void MallocOverflowSecurityChecker::OutputPossibleOverflows( // Delete any possible overflows which have a comparison. CheckOverflowOps c(PossibleMallocOverflows, BR.getContext()); - c.Visit(mgr.getAnalysisContext(D)->getBody()); + c.Visit(mgr.getAnalysisDeclContext(D)->getBody()); // Output warnings for all overflows that are left. for (CheckOverflowOps::theVecType::iterator diff --git a/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp b/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp index 2fb9944afa..8b29a20dc6 100644 --- a/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp @@ -194,7 +194,7 @@ void ObjCSelfInitChecker::checkPostObjCMessage(ObjCMessage msg, // FIXME: A callback should disable checkers at the start of functions. if (!shouldRunOnFunctionOrMethod(dyn_cast( - C.getCurrentAnalysisContext()->getDecl()))) + C.getCurrentAnalysisDeclContext()->getDecl()))) return; if (isInitMessage(msg)) { @@ -221,7 +221,7 @@ void ObjCSelfInitChecker::checkPostStmt(const ObjCIvarRefExpr *E, CheckerContext &C) const { // FIXME: A callback should disable checkers at the start of functions. if (!shouldRunOnFunctionOrMethod(dyn_cast( - C.getCurrentAnalysisContext()->getDecl()))) + C.getCurrentAnalysisDeclContext()->getDecl()))) return; checkForInvalidSelf(E->getBase(), C, @@ -233,7 +233,7 @@ void ObjCSelfInitChecker::checkPreStmt(const ReturnStmt *S, CheckerContext &C) const { // FIXME: A callback should disable checkers at the start of functions. if (!shouldRunOnFunctionOrMethod(dyn_cast( - C.getCurrentAnalysisContext()->getDecl()))) + C.getCurrentAnalysisDeclContext()->getDecl()))) return; checkForInvalidSelf(S->getRetValue(), C, @@ -335,7 +335,7 @@ static bool shouldRunOnFunctionOrMethod(const NamedDecl *ND) { /// \brief Returns true if the location is 'self'. static bool isSelfVar(SVal location, CheckerContext &C) { - AnalysisContext *analCtx = C.getCurrentAnalysisContext(); + AnalysisDeclContext *analCtx = C.getCurrentAnalysisDeclContext(); if (!analCtx->getSelfDecl()) return false; if (!isa(location)) diff --git a/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp b/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp index 459ee65d19..ae28300d13 100644 --- a/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp @@ -69,7 +69,7 @@ void UnreachableCodeChecker::checkEndAnalysis(ExplodedGraph &G, // Save the CFG if we don't have it already if (!C) - C = LC->getAnalysisContext()->getUnoptimizedCFG(); + C = LC->getAnalysisDeclContext()->getUnoptimizedCFG(); if (!PM) PM = &LC->getParentMap(); diff --git a/lib/StaticAnalyzer/Core/AnalysisManager.cpp b/lib/StaticAnalyzer/Core/AnalysisManager.cpp index 17ec70d39b..72aed74237 100644 --- a/lib/StaticAnalyzer/Core/AnalysisManager.cpp +++ b/lib/StaticAnalyzer/Core/AnalysisManager.cpp @@ -66,8 +66,8 @@ AnalysisManager::AnalysisManager(ASTContext &ctx, DiagnosticsEngine &diags, } -AnalysisContext * -AnalysisManager::getAnalysisContextInAnotherTU(const Decl *D) { +AnalysisDeclContext * +AnalysisManager::getAnalysisDeclContextInAnotherTU(const Decl *D) { idx::Entity Ent = idx::Entity::get(const_cast(D), Idxer->getProgram()); FunctionDecl *FuncDef; @@ -77,7 +77,7 @@ AnalysisManager::getAnalysisContextInAnotherTU(const Decl *D) { if (FuncDef == 0) return 0; - // This AnalysisContext wraps function definition in another translation unit. + // This AnalysisDeclContext wraps function definition in another translation unit. // But it is still owned by the AnalysisManager associated with the current // translation unit. return AnaCtxMgr.getContext(FuncDef, TU); diff --git a/lib/StaticAnalyzer/Core/CoreEngine.cpp b/lib/StaticAnalyzer/Core/CoreEngine.cpp index 20ee5abbe1..525bd71111 100644 --- a/lib/StaticAnalyzer/Core/CoreEngine.cpp +++ b/lib/StaticAnalyzer/Core/CoreEngine.cpp @@ -725,8 +725,8 @@ void CallEnterNodeBuilder::generateNode(const ProgramState *state) { ExprEngine NewEng(AMgr, GCEnabled); // Create the new LocationContext. - AnalysisContext *NewAnaCtx = - AMgr.getAnalysisContext(CalleeCtx->getDecl(), + AnalysisDeclContext *NewAnaCtx = + AMgr.getAnalysisDeclContext(CalleeCtx->getDecl(), CalleeCtx->getTranslationUnit()); const StackFrameContext *OldLocCtx = CalleeCtx; diff --git a/lib/StaticAnalyzer/Core/ExprEngine.cpp b/lib/StaticAnalyzer/Core/ExprEngine.cpp index 628ab8566d..269d7c74ee 100644 --- a/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -53,7 +53,7 @@ static inline Selector GetNullarySelector(const char* name, ASTContext &Ctx) { ExprEngine::ExprEngine(AnalysisManager &mgr, bool gcEnabled) : AMgr(mgr), - AnalysisContexts(mgr.getAnalysisContextManager()), + AnalysisDeclContexts(mgr.getAnalysisDeclContextManager()), Engine(*this), G(Engine.getGraph()), Builder(NULL), @@ -1509,7 +1509,7 @@ bool ExprEngine::InlineCall(ExplodedNodeSet &Dst, const CallExpr *CE, // Check if the function definition is in the same translation unit. if (FD->hasBody(FD)) { const StackFrameContext *stackFrame = - AMgr.getStackFrame(AMgr.getAnalysisContext(FD), + AMgr.getStackFrame(AMgr.getAnalysisDeclContext(FD), Pred->getLocationContext(), CE, Builder->getBlock(), Builder->getIndex()); // Now we have the definition of the callee, create a CallEnter node. @@ -1522,7 +1522,7 @@ bool ExprEngine::InlineCall(ExplodedNodeSet &Dst, const CallExpr *CE, // Check if we can find the function definition in other translation units. if (AMgr.hasIndexer()) { - AnalysisContext *C = AMgr.getAnalysisContextInAnotherTU(FD); + AnalysisDeclContext *C = AMgr.getAnalysisDeclContextInAnotherTU(FD); if (C == 0) return false; const StackFrameContext *stackFrame = diff --git a/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp b/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp index 41c6035709..e9d5e2cc6d 100644 --- a/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp +++ b/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp @@ -224,7 +224,7 @@ void ExprEngine::VisitCXXDestructor(const CXXDestructorDecl *DD, // Create the context for 'this' region. const StackFrameContext *SFC = - AnalysisContexts.getContext(DD)-> + AnalysisDeclContexts.getContext(DD)-> getStackFrame(Pred->getLocationContext(), S, Builder->getBlock(), Builder->getIndex()); diff --git a/lib/StaticAnalyzer/Core/MemRegion.cpp b/lib/StaticAnalyzer/Core/MemRegion.cpp index 6f92da8f3e..2cc0607cb4 100644 --- a/lib/StaticAnalyzer/Core/MemRegion.cpp +++ b/lib/StaticAnalyzer/Core/MemRegion.cpp @@ -337,7 +337,7 @@ void FunctionTextRegion::Profile(llvm::FoldingSetNodeID& ID) const { void BlockTextRegion::ProfileRegion(llvm::FoldingSetNodeID& ID, const BlockDecl *BD, CanQualType, - const AnalysisContext *AC, + const AnalysisDeclContext *AC, const MemRegion*) { ID.AddInteger(MemRegion::BlockTextRegionKind); ID.AddPointer(BD); @@ -590,7 +590,7 @@ const VarRegion* MemRegionManager::getVarRegion(const VarDecl *D, const BlockTextRegion *BTR = getBlockTextRegion(BD, C.getCanonicalType(BD->getSignatureAsWritten()->getType()), - STC->getAnalysisContext()); + STC->getAnalysisDeclContext()); sReg = getGlobalsRegion(BTR); } else { @@ -678,7 +678,7 @@ MemRegionManager::getFunctionTextRegion(const FunctionDecl *FD) { const BlockTextRegion * MemRegionManager::getBlockTextRegion(const BlockDecl *BD, CanQualType locTy, - AnalysisContext *AC) { + AnalysisDeclContext *AC) { return getSubRegion(BD, locTy, AC, getCodeRegion()); } @@ -928,8 +928,8 @@ void BlockDataRegion::LazyInitializeReferencedVars() { if (ReferencedVars) return; - AnalysisContext *AC = getCodeRegion()->getAnalysisContext(); - AnalysisContext::referenced_decls_iterator I, E; + AnalysisDeclContext *AC = getCodeRegion()->getAnalysisDeclContext(); + AnalysisDeclContext::referenced_decls_iterator I, E; llvm::tie(I, E) = AC->getReferencedBlockVars(BC->getDecl()); if (I == E) { diff --git a/lib/StaticAnalyzer/Core/PathDiagnostic.cpp b/lib/StaticAnalyzer/Core/PathDiagnostic.cpp index 3a879030da..1152b3fce9 100644 --- a/lib/StaticAnalyzer/Core/PathDiagnostic.cpp +++ b/lib/StaticAnalyzer/Core/PathDiagnostic.cpp @@ -94,9 +94,9 @@ void PathDiagnosticConsumer::HandlePathDiagnostic(const PathDiagnostic *D) { //===----------------------------------------------------------------------===// static SourceLocation getValidSourceLocation(const Stmt* S, - LocationOrAnalysisContext LAC) { + LocationOrAnalysisDeclContext LAC) { SourceLocation L = S->getLocStart(); - assert(!LAC.isNull() && "A valid LocationContext or AnalysisContext should " + assert(!LAC.isNull() && "A valid LocationContext or AnalysisDeclContext should " "be passed to PathDiagnosticLocation upon creation."); // S might be a temporary statement that does not have a location in the @@ -107,7 +107,7 @@ static SourceLocation getValidSourceLocation(const Stmt* S, if (LAC.is()) PM = &LAC.get()->getParentMap(); else - PM = &LAC.get()->getParentMap(); + PM = &LAC.get()->getParentMap(); while (!L.isValid()) { S = PM->getParent(S); @@ -127,7 +127,7 @@ PathDiagnosticLocation PathDiagnosticLocation PathDiagnosticLocation::createBegin(const Stmt *S, const SourceManager &SM, - LocationOrAnalysisContext LAC) { + LocationOrAnalysisDeclContext LAC) { return PathDiagnosticLocation(getValidSourceLocation(S, LAC), SM, SingleLocK); } @@ -229,7 +229,7 @@ PathDiagnosticLocation PathDiagnosticLocation::createSingleLocation( FullSourceLoc PathDiagnosticLocation::genLocation(SourceLocation L, - LocationOrAnalysisContext LAC) const { + LocationOrAnalysisDeclContext LAC) const { assert(isValid()); // Note that we want a 'switch' here so that the compiler can warn us in // case we add more cases. @@ -248,7 +248,7 @@ FullSourceLoc } PathDiagnosticRange - PathDiagnosticLocation::genRange(LocationOrAnalysisContext LAC) const { + PathDiagnosticLocation::genRange(LocationOrAnalysisDeclContext LAC) const { assert(isValid()); // Note that we want a 'switch' here so that the compiler can warn us in // case we add more cases. diff --git a/lib/StaticAnalyzer/Core/SValBuilder.cpp b/lib/StaticAnalyzer/Core/SValBuilder.cpp index ebf7ae2fd4..f118f4a0f0 100644 --- a/lib/StaticAnalyzer/Core/SValBuilder.cpp +++ b/lib/StaticAnalyzer/Core/SValBuilder.cpp @@ -155,7 +155,7 @@ DefinedSVal SValBuilder::getBlockPointer(const BlockDecl *block, CanQualType locTy, const LocationContext *locContext) { const BlockTextRegion *BC = - MemMgr.getBlockTextRegion(block, locTy, locContext->getAnalysisContext()); + MemMgr.getBlockTextRegion(block, locTy, locContext->getAnalysisDeclContext()); const BlockDataRegion *BD = MemMgr.getBlockDataRegion(BC, locContext); return loc::MemRegionVal(BD); } diff --git a/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp b/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp index fdf95b4c7e..ded86b7746 100644 --- a/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp +++ b/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp @@ -278,7 +278,7 @@ void AnalysisConsumer::HandleCode(Decl *D) { if (!Opts.AnalyzeAll && !SM.isFromMainFile(SL)) return; - // Clear the AnalysisManager of old AnalysisContexts. + // Clear the AnalysisManager of old AnalysisDeclContexts. Mgr->ClearContexts(); // Dispatch on the actions. @@ -318,7 +318,7 @@ static void ActionExprEngine(AnalysisConsumer &C, AnalysisManager &mgr, } // Execute the worklist algorithm. - Eng.ExecuteWorkList(mgr.getAnalysisContextManager().getStackFrame(D, 0), + Eng.ExecuteWorkList(mgr.getAnalysisDeclContextManager().getStackFrame(D, 0), mgr.getMaxNodes()); // Release the auditor (if any) so that it doesn't monitor the graph diff --git a/test/Analysis/inline3.c b/test/Analysis/inline3.c index 9c8e26ece5..1fa8b905dc 100644 --- a/test/Analysis/inline3.c +++ b/test/Analysis/inline3.c @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-inline-call -analyzer-store region -verify %s -// Test when entering f1(), we set the right AnalysisContext to Environment. +// Test when entering f1(), we set the right AnalysisDeclContext to Environment. // Otherwise, block-level expr '1 && a' would not be block-level. int a; diff --git a/test/SemaCXX/missing-header.cpp b/test/SemaCXX/missing-header.cpp index f436579900..5b3915b865 100644 --- a/test/SemaCXX/missing-header.cpp +++ b/test/SemaCXX/missing-header.cpp @@ -2,8 +2,8 @@ #include "not exist" // expected-error{{'not exist' file not found}} -class AnalysisContext {}; -static ControlFlowKind CheckFallThrough(AnalysisContext &AC) { +class AnalysisDeclContext {}; +static ControlFlowKind CheckFallThrough(AnalysisDeclContext &AC) { if (const AsmStmt *AS = dyn_cast(S)) {} bool NoReturnEdge = false; } -- 2.40.0