diff options
| author | Gabor Horvath <xazax.hun@gmail.com> | 2015-09-14 20:31:46 +0000 |
|---|---|---|
| committer | Gabor Horvath <xazax.hun@gmail.com> | 2015-09-14 20:31:46 +0000 |
| commit | be87d5bb921a653f3f2a4a8260be81a2ad691e60 (patch) | |
| tree | 2650a5e5808ffa4a6e12a5cb83df729e66a3b3e6 | |
| parent | 553927a78adaeb5d1dfd6dbd24fa7239fd463412 (diff) | |
| download | bcm5719-llvm-be87d5bb921a653f3f2a4a8260be81a2ad691e60.tar.gz bcm5719-llvm-be87d5bb921a653f3f2a4a8260be81a2ad691e60.zip | |
[Static Analyzer] Nullability checker optimization.
Differential Revision: http://reviews.llvm.org/D12848
llvm-svn: 247612
| -rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp index cc1d058205c..74a7e38e944 100644 --- a/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp +++ b/clang/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<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); } } |

