aboutsummaryrefslogtreecommitdiff
path: root/lib/StaticAnalyzer/Core/BugReporter.cpp
diff options
context:
space:
mode:
authorJordy Rose <jediknil@belkadan.com>2012-03-15 22:45:29 +0000
committerJordy Rose <jediknil@belkadan.com>2012-03-15 22:45:29 +0000
commit8ec588e2ac57311604cf80608c7d4b3fb3b022f7 (patch)
tree168be5192c1fe0c896c0c6e5cc8062e7c0aa16a2 /lib/StaticAnalyzer/Core/BugReporter.cpp
parentb122818a33348a9d1694b10e44eed9746aa492b0 (diff)
[analyzer] If a metadata symbol is interesting, its region is interesting as well.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152868 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/BugReporter.cpp')
-rw-r--r--lib/StaticAnalyzer/Core/BugReporter.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/StaticAnalyzer/Core/BugReporter.cpp b/lib/StaticAnalyzer/Core/BugReporter.cpp
index 0a0c1fdb51..b59405bcd2 100644
--- a/lib/StaticAnalyzer/Core/BugReporter.cpp
+++ b/lib/StaticAnalyzer/Core/BugReporter.cpp
@@ -1255,6 +1255,9 @@ void BugReport::markInteresting(SymbolRef sym) {
if (!sym)
return;
interestingSymbols.insert(sym);
+
+ if (const SymbolMetadata *meta = dyn_cast<SymbolMetadata>(sym))
+ interestingRegions.insert(meta->getRegion());
}
void BugReport::markInteresting(const MemRegion *R) {
@@ -1262,7 +1265,7 @@ void BugReport::markInteresting(const MemRegion *R) {
return;
R = R->getBaseRegion();
interestingRegions.insert(R);
-
+
if (const SymbolicRegion *SR = dyn_cast<SymbolicRegion>(R))
interestingSymbols.insert(SR->getSymbol());
}
@@ -1279,6 +1282,8 @@ bool BugReport::isInteresting(SVal V) const {
bool BugReport::isInteresting(SymbolRef sym) const {
if (!sym)
return false;
+ // We don't currently consider metadata symbols to be interesting
+ // even if we know their region is interesting. Is that correct behavior?
return interestingSymbols.count(sym);
}