[analyzer] Don't repeat a bug equivalence class if every report is invalid.

I removed this check in the recursion->iteration commit, but forgot that
generatePathDiagnostic may be called multiple times if there are multiple
PathDiagnosticConsumers.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177214 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jordan Rose 2013-03-16 01:07:47 +00:00
Родитель 2710ed8fd9
Коммит 9a9fe4068e
1 изменённых файлов: 13 добавлений и 3 удалений

Просмотреть файл

@ -2114,13 +2114,23 @@ bool GRBugReporter::generatePathDiagnostic(PathDiagnostic& PD,
ArrayRef<BugReport *> &bugReports) {
assert(!bugReports.empty());
bool HasValid = false;
SmallVector<const ExplodedNode *, 32> errorNodes;
for (ArrayRef<BugReport*>::iterator I = bugReports.begin(),
E = bugReports.end();
I != E; ++I) {
errorNodes.push_back((*I)->getErrorNode());
E = bugReports.end(); I != E; ++I) {
if ((*I)->isValid()) {
HasValid = true;
errorNodes.push_back((*I)->getErrorNode());
} else {
errorNodes.push_back(0);
}
}
// If all the reports have been marked invalid by a previous path generation,
// we're done.
if (!HasValid)
return false;
typedef PathDiagnosticConsumer::PathGenerationScheme PathGenerationScheme;
PathGenerationScheme ActiveScheme = PC.getGenerationScheme();