Author: xazax Date: Mon Sep 14 15:31:46 2015 New Revision: 247612 URL: http://llvm.org/viewvc/llvm-project?rev=247612&view=rev Log: [Static Analyzer] Nullability checker optimization.
Differential Revision: http://reviews.llvm.org/D12848 Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp?rev=247612&r1=247611&r2=247612&view=diff ============================================================================== --- cfe/trunk/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp (original) +++ cfe/trunk/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp Mon Sep 14 15:31:46 2015 @@ -406,12 +406,17 @@ void NullabilityChecker::reportBugIfPrec /// 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<NullabilityMap>(); for (NullabilityMapTy::iterator I = Nullabilities.begin(), E = Nullabilities.end(); I != E; ++I) { - if (!SR.isLiveRegion(I->first)) { + const auto *Region = I->first->getAs<SymbolicRegion>(); + assert(Region && "Non-symbolic region is tracked."); + if (SR.isDead(Region->getSymbol())) { State = State->remove<NullabilityMap>(I->first); } } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits