[cfe-commits] r167351 - in /cfe/trunk: include/clang/Analysis/AnalysisContext.h include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h lib/Analysis/AnalysisDeclContext.cpp lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
Jordan Rose
jordan_rose at apple.com
Fri Nov 2 20:45:22 PDT 2012
This is silly. For CheckerContext, inTopFrame is !isInInlined. For LocationContext, this shouldn't be virtual; it's just getEnclosingStackFrame()->getParent() == 0.
On Nov 2, 2012, at 19:54 , Anna Zaks <ganna at apple.com> wrote:
> Author: zaks
> Date: Fri Nov 2 21:54:16 2012
> New Revision: 167351
>
> URL: http://llvm.org/viewvc/llvm-project?rev=167351&view=rev
> Log:
> [analyzer] add LocationContext::inTopFrame() helper.
>
> Modified:
> cfe/trunk/include/clang/Analysis/AnalysisContext.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
> cfe/trunk/lib/Analysis/AnalysisDeclContext.cpp
> cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
>
> Modified: cfe/trunk/include/clang/Analysis/AnalysisContext.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Analysis/AnalysisContext.h?rev=167351&r1=167350&r2=167351&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Analysis/AnalysisContext.h (original)
> +++ cfe/trunk/include/clang/Analysis/AnalysisContext.h Fri Nov 2 21:54:16 2012
> @@ -237,6 +237,9 @@
>
> const StackFrameContext *getCurrentStackFrame() const;
>
> + /// Return true if the current LocationContext has no caller context.
> + virtual bool inTopFrame() const;
> +
> virtual void Profile(llvm::FoldingSetNodeID &ID) = 0;
>
> public:
> @@ -271,6 +274,9 @@
>
> const CFGBlock *getCallSiteBlock() const { return Block; }
>
> + /// Return true if the current LocationContext has no caller context.
> + virtual bool inTopFrame() const { return getParent() == 0; }
> +
> unsigned getIndex() const { return Index; }
>
> void Profile(llvm::FoldingSetNodeID &ID);
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h?rev=167351&r1=167350&r2=167351&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h Fri Nov 2 21:54:16 2012
> @@ -100,6 +100,9 @@
> return Pred->getStackFrame();
> }
>
> + /// Return true if the current LocationContext has no caller context.
> + bool inTopFrame() const { return getLocationContext()->inTopFrame(); }
> +
> /// Returns true if the predecessor is within an inlined function/method.
> bool isWithinInlined() {
> return (getStackFrame()->getParent() != 0);
>
> Modified: cfe/trunk/lib/Analysis/AnalysisDeclContext.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/AnalysisDeclContext.cpp?rev=167351&r1=167350&r2=167351&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Analysis/AnalysisDeclContext.cpp (original)
> +++ cfe/trunk/lib/Analysis/AnalysisDeclContext.cpp Fri Nov 2 21:54:16 2012
> @@ -355,6 +355,10 @@
> return NULL;
> }
>
> +bool LocationContext::inTopFrame() const {
> + return getCurrentStackFrame()->inTopFrame();
> +}
> +
> bool LocationContext::isParentOf(const LocationContext *LC) const {
> do {
> const LocationContext *Parent = LC->getParent();
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp?rev=167351&r1=167350&r2=167351&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp Fri Nov 2 21:54:16 2012
> @@ -3190,12 +3190,6 @@
> // Handle return statements.
> //===----------------------------------------------------------------------===//
>
> -// Return true if the current LocationContext has no caller context.
> -static bool inTopFrame(CheckerContext &C) {
> - const LocationContext *LC = C.getLocationContext();
> - return LC->getParent() == 0;
> -}
> -
> void RetainCountChecker::checkPreStmt(const ReturnStmt *S,
> CheckerContext &C) const {
>
> @@ -3204,7 +3198,7 @@
> // better checking even for inlined calls, and see if they match
> // with their expected semantics (e.g., the method should return a retained
> // object, etc.).
> - if (!inTopFrame(C))
> + if (!C.inTopFrame())
> return;
>
> const Expr *RetE = S->getRetValue();
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list