From: Anna Zaks Date: Thu, 2 Aug 2012 00:41:43 +0000 (+0000) Subject: [analyzer] Flush bug reports in deterministic order. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0eb6c37dd4e4ad8fa2363003dea270f9fd6c2969;p=clang [analyzer] Flush bug reports in deterministic order. This makes the diagnostic output order deterministic. 1) This makes order of text diagnostics consistent from run to run. 2) Also resulted in different bugs being reported (from one run to another) with plist-html output. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161151 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Core/BugReporter.cpp b/lib/StaticAnalyzer/Core/BugReporter.cpp index 12479ca53a..1eaf1f9f76 100644 --- a/lib/StaticAnalyzer/Core/BugReporter.cpp +++ b/lib/StaticAnalyzer/Core/BugReporter.cpp @@ -1536,9 +1536,10 @@ void BugReporter::FlushReports() { I = bugTypes.begin(), E = bugTypes.end(); I != E; ++I) const_cast(*I)->FlushReports(*this); - typedef llvm::FoldingSet SetTy; - for (SetTy::iterator EI=EQClasses.begin(), EE=EQClasses.end(); EI!=EE;++EI){ - BugReportEquivClass& EQ = *EI; + typedef std::vector ContVecTy; + for (ContVecTy::iterator EI=EQClassesVector.begin(), EE=EQClassesVector.end(); + EI != EE; ++EI){ + BugReportEquivClass& EQ = **EI; FlushReport(EQ); }