[cfe-commits] r161821 - /cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
Chandler Carruth
chandlerc at google.com
Mon Aug 13 18:22:06 PDT 2012
FYI, I think this commit is causing the following warning:
llvm/tools/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp:3726:13:
error: 'void PrintPool(llvm::raw_ostream&, clang::ento::SymbolRef,
clang::ento::ProgramStateRef)' defined but not used
[-Werror=unused-function]
On Mon, Aug 13, 2012 at 5:36 PM, Anna Zaks <ganna at apple.com> wrote:
> Author: zaks
> Date: Mon Aug 13 19:36:17 2012
> New Revision: 161821
>
> URL: http://llvm.org/viewvc/llvm-project?rev=161821&view=rev
> Log:
> [analyzer] Disable autorelease pool tracking.
>
> The autorelease pool has not been implemented completely: we were adding
> the autoreleased symbols to the state, but never looking at them. Until
> we have a complete implementation, remove the overhead and comment out
> the unused code.
>
> Modified:
> cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp?rev=161821&r1=161820&r2=161821&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp Mon Aug
> 13 19:36:17 2012
> @@ -1638,6 +1638,10 @@
>
> //===----------------------------------------------------------------------===//
> // AutoreleaseBindings - State used to track objects in autorelease pools.
>
> //===----------------------------------------------------------------------===//
> +#define AUTORELEASE_POOL_MODELING (0)
> +// We do not currently have complete modeling of autorelease pools.
> +
> +#if AUTORELEASE_POOL_MODELING
>
> typedef llvm::ImmutableMap<SymbolRef, unsigned> ARCounts;
> typedef llvm::ImmutableMap<SymbolRef, ARCounts> ARPoolContents;
> @@ -1685,6 +1689,7 @@
>
> return state->set<AutoreleasePoolContents>(pool, newCnts);
> }
> +#endif
>
>
> //===----------------------------------------------------------------------===//
> // Error reporting.
> @@ -2427,7 +2432,9 @@
> mutable OwningPtr<RetainSummaryManager> Summaries;
> mutable OwningPtr<RetainSummaryManager> SummariesGC;
>
> +#if AUTORELEASE_POOL_MODELING
> mutable ARCounts::Factory ARCountFactory;
> +#endif
>
> mutable SummaryLogTy SummaryLog;
> mutable bool ShouldResetSummaryLog;
> @@ -3004,7 +3011,10 @@
>
> case NewAutoreleasePool:
> assert(!C.isObjCGCEnabled());
> - return state->add<AutoreleaseStack>(sym);
> +#if AUTORELEASE_POOL_MODELING
> + state = state->add<AutoreleaseStack>(sym);
> +#endif
> + return state;
>
> case MayEscape:
> if (V.getKind() == RefVal::Owned) {
> @@ -3022,7 +3032,11 @@
> return state;
>
> // Update the autorelease counts.
> + // TODO: AutoreleasePoolContents are not currently used. We will
> need to
> + // call SendAutorelease after it's wired up.
> +#if AUTORELEASE_POOL_MODELING
> state = SendAutorelease(state, ARCountFactory, sym);
> +#endif
> V = V.autorelease();
> break;
>
> @@ -3718,20 +3732,23 @@
> Out << "<pool>";
> Out << ":{";
>
> +#if AUTORELEASE_POOL_MODELING
> // Get the contents of the pool.
> if (const ARCounts *Cnts = State->get<AutoreleasePoolContents>(Sym))
> for (ARCounts::iterator I = Cnts->begin(), E = Cnts->end(); I != E;
> ++I)
> Out << '(' << I.getKey() << ',' << I.getData() << ')';
> -
> +#endif
> Out << '}';
> }
>
> +#if AUTORELEASE_POOL_MODELING
> static bool UsesAutorelease(ProgramStateRef state) {
> // A state uses autorelease if it allocated an autorelease pool or if
> it has
> // objects in the caller's autorelease pool.
> return !state->get<AutoreleaseStack>().isEmpty() ||
> state->get<AutoreleasePoolContents>(SymbolRef());
> }
> +#endif
>
> void RetainCountChecker::printState(raw_ostream &Out, ProgramStateRef
> State,
> const char *NL, const char *Sep)
> const {
> @@ -3747,6 +3764,7 @@
> Out << NL;
> }
>
> +#if AUTORELEASE_POOL_MODELING
> // Print the autorelease stack.
> if (UsesAutorelease(State)) {
> Out << Sep << NL << "AR pool stack:";
> @@ -3758,6 +3776,7 @@
>
> Out << NL;
> }
> +#endif
> }
>
>
> //===----------------------------------------------------------------------===//
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120813/4cd2328b/attachment.html>
More information about the cfe-commits
mailing list