From: Gabor Horvath Date: Mon, 14 Sep 2015 20:31:46 +0000 (+0000) Subject: [Static Analyzer] Nullability checker optimization. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6fc8e151f749e2974caf6dadd24ba724260210dc;p=clang [Static Analyzer] Nullability checker optimization. Differential Revision: http://reviews.llvm.org/D12848 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@247612 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp b/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp index cc1d058205..74a7e38e94 100644 --- a/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp @@ -406,12 +406,17 @@ void NullabilityChecker::reportBugIfPreconditionHolds( /// Cleaning up the program state. void NullabilityChecker::checkDeadSymbols(SymbolReaper &SR, CheckerContext &C) const { + if (!SR.hasDeadSymbols()) + return; + ProgramStateRef State = C.getState(); NullabilityMapTy Nullabilities = State->get(); for (NullabilityMapTy::iterator I = Nullabilities.begin(), E = Nullabilities.end(); I != E; ++I) { - if (!SR.isLiveRegion(I->first)) { + const auto *Region = I->first->getAs(); + assert(Region && "Non-symbolic region is tracked."); + if (SR.isDead(Region->getSymbol())) { State = State->remove(I->first); } }