From: Jordy Rose <jediknil@belkadan.com> Date: Thu, 15 Mar 2012 22:45:29 +0000 (+0000) Subject: [analyzer] If a metadata symbol is interesting, its region is interesting as well. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ec588e2ac57311604cf80608c7d4b3fb3b022f7;p=clang [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 --- 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); }