summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorGabor Horvath <xazax.hun@gmail.com>2015-09-14 20:31:46 +0000
committerGabor Horvath <xazax.hun@gmail.com>2015-09-14 20:31:46 +0000
commitbe87d5bb921a653f3f2a4a8260be81a2ad691e60 (patch)
tree2650a5e5808ffa4a6e12a5cb83df729e66a3b3e6 /clang/lib
parent553927a78adaeb5d1dfd6dbd24fa7239fd463412 (diff)
downloadbcm5719-llvm-be87d5bb921a653f3f2a4a8260be81a2ad691e60.tar.gz
bcm5719-llvm-be87d5bb921a653f3f2a4a8260be81a2ad691e60.zip
[Static Analyzer] Nullability checker optimization.
Differential Revision: http://reviews.llvm.org/D12848 llvm-svn: 247612
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp7
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);
}
}
OpenPOWER on IntegriCloud