The order in which GCOV file info is printed depends on the string hash
function. This makes some GCOV tests brittle, because the tests must be
updated whenever the hash function changes.
Sort the filenames before printing out the file info to solve the
problem. This should be relatively cheap.
Differential Revision: https://reviews.llvm.org/D32512
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301371
91177308-0d34-0410-b5e6-
96231b3b80d8
/// print - Print source files with collected line count information.
void FileInfo::print(raw_ostream &InfoOS, StringRef MainFilename,
StringRef GCNOFile, StringRef GCDAFile) {
- for (const auto &LI : LineInfo) {
- StringRef Filename = LI.first();
+ SmallVector<StringRef, 4> Filenames;
+ for (const auto &LI : LineInfo)
+ Filenames.push_back(LI.first());
+ std::sort(Filenames.begin(), Filenames.end());
+
+ for (StringRef Filename : Filenames) {
auto AllLines = LineConsumer(Filename);
std::string CoveragePath = getCoveragePath(Filename, MainFilename);
CovOS << " -: 0:Runs:" << RunCount << "\n";
CovOS << " -: 0:Programs:" << ProgramCount << "\n";
- const LineData &Line = LI.second;
+ const LineData &Line = LineInfo[Filename];
GCOVCoverage FileCoverage(Filename);
for (uint32_t LineIndex = 0; LineIndex < Line.LastLine || !AllLines.empty();
++LineIndex) {
+File './test.h'
+Lines executed:100.00% of 1
+No branches
+No calls
+./test.h:creating 'test.h.gcov'
+
File 'test.cpp'
Lines executed:84.21% of 38
Branches executed:100.00% of 15
No calls
test.cpp:creating 'test.cpp.gcov'
-File './test.h'
-Lines executed:100.00% of 1
-No branches
-No calls
-./test.h:creating 'test.h.gcov'
-
+Function '_ZN1AC1Ev'
+Lines executed:100.00% of 1
+
+Function '_ZN1AC2Ev'
+Lines executed:100.00% of 1
+
Function '_ZN1A1BEv'
Lines executed:100.00% of 1
Function 'main'
Lines executed:91.67% of 24
-Function '_ZN1AC1Ev'
-Lines executed:100.00% of 1
-
-Function '_ZN1AC2Ev'
+File './test.h'
Lines executed:100.00% of 1
+./test.h:creating 'test.h.gcov'
File 'test.cpp'
Lines executed:84.21% of 38
test.cpp:creating 'test.cpp.gcov'
-File './test.h'
-Lines executed:100.00% of 1
-./test.h:creating 'test.h.gcov'
-
-File 'srcdir/./nested_dir/../test.h'
-Lines executed:100.00% of 1
-srcdir/./nested_dir/../test.h:creating 'test_paths.cpp##test.h.gcov'
-
File 'srcdir/./nested_dir/../test.cpp'
Lines executed:84.21% of 38
srcdir/./nested_dir/../test.cpp:creating 'test_paths.cpp##test.cpp.gcov'
+File 'srcdir/./nested_dir/../test.h'
+Lines executed:100.00% of 1
+srcdir/./nested_dir/../test.h:creating 'test_paths.cpp##test.h.gcov'
+
-File 'srcdir/./nested_dir/../test.h'
-Lines executed:100.00% of 1
-srcdir/./nested_dir/../test.h:creating 'srcdir#^#test_paths.cpp##srcdir#nested_dir#^#test.h.gcov'
-
File 'srcdir/./nested_dir/../test.cpp'
Lines executed:84.21% of 38
srcdir/./nested_dir/../test.cpp:creating 'srcdir#^#test_paths.cpp##srcdir#nested_dir#^#test.cpp.gcov'
+File 'srcdir/./nested_dir/../test.h'
+Lines executed:100.00% of 1
+srcdir/./nested_dir/../test.h:creating 'srcdir#^#test_paths.cpp##srcdir#nested_dir#^#test.h.gcov'
+
-File 'srcdir/./nested_dir/../test.h'
-Lines executed:100.00% of 1
-srcdir/./nested_dir/../test.h:creating 'test.h.gcov'
-
File 'srcdir/./nested_dir/../test.cpp'
Lines executed:84.21% of 38
srcdir/./nested_dir/../test.cpp:creating 'test.cpp.gcov'
+File 'srcdir/./nested_dir/../test.h'
+Lines executed:100.00% of 1
+srcdir/./nested_dir/../test.h:creating 'test.h.gcov'
+
-File 'test.cpp'
-Lines executed:0.00% of 38
-test.cpp:creating 'test.cpp.gcov'
-
File './test.h'
Lines executed:0.00% of 1
./test.h:creating 'test.h.gcov'
+File 'test.cpp'
+Lines executed:0.00% of 38
+test.cpp:creating 'test.cpp.gcov'
+
-File 'test.cpp'
-Lines executed:84.21% of 38
-test.cpp:creating 'test.cpp.gcov'
-
File './test.h'
Lines executed:100.00% of 1
./test.h:creating 'test.h.gcov'
+File 'test.cpp'
+Lines executed:84.21% of 38
+test.cpp:creating 'test.cpp.gcov'
+
-File 'test.cpp'
-Lines executed:84.21% of 38
-
File './test.h'
Lines executed:100.00% of 1
+File 'test.cpp'
+Lines executed:84.21% of 38
+
-File 'srcdir/./nested_dir/../test.h'
-Lines executed:100.00% of 1
-srcdir/./nested_dir/../test.h:creating 'test.h.gcov'
-
File 'srcdir/./nested_dir/../test.cpp'
Lines executed:84.21% of 38
srcdir/./nested_dir/../test.cpp:creating 'test.cpp.gcov'
+File 'srcdir/./nested_dir/../test.h'
+Lines executed:100.00% of 1
+srcdir/./nested_dir/../test.h:creating 'test.h.gcov'
+
-File 'srcdir/./nested_dir/../test.h'
-Lines executed:100.00% of 1
-srcdir/./nested_dir/../test.h:creating 'srcdir#nested_dir#^#test.h.gcov'
-
File 'srcdir/./nested_dir/../test.cpp'
Lines executed:84.21% of 38
srcdir/./nested_dir/../test.cpp:creating 'srcdir#nested_dir#^#test.cpp.gcov'
+File 'srcdir/./nested_dir/../test.h'
+Lines executed:100.00% of 1
+srcdir/./nested_dir/../test.h:creating 'srcdir#nested_dir#^#test.h.gcov'
+