Change llvm-cov output formatting to be more similar to gcov.
authorBob Wilson <bob.wilson@apple.com>
Tue, 22 Oct 2013 05:09:41 +0000 (05:09 +0000)
committerBob Wilson <bob.wilson@apple.com>
Tue, 22 Oct 2013 05:09:41 +0000 (05:09 +0000)
- Replaced tabs with proper padding
- print() takes two arguments, which are the GCNO and GCDA filenames
- Files are listed at the top of output, appended by line 0
- Stripped strings of trailing \0s
- Removed last two lines of whitespace in output

Patch by Yuchen Wu!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193148 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/GCOV.h
lib/IR/GCOV.cpp
tools/llvm-cov/llvm-cov.cpp

index f1040f545c9307fdc04288a5d23e6982d62d8b54..67d637021a23d92196ca236b40174285b0ca167a 100644 (file)
@@ -145,7 +145,7 @@ public:
     uint32_t Len = readInt() * 4;
     StringRef Str = Buffer->getBuffer().slice(Cursor, Cursor+Len);
     Cursor += Len;
-    return Str;
+    return Str.split('\0').first;
   }
 
   uint64_t getCursor() const { return Cursor; }
@@ -216,7 +216,7 @@ typedef SmallVector<uint32_t, 16> LineCounts;
 class FileInfo {
 public:
   void addLineCount(StringRef Filename, uint32_t Line, uint32_t Count);
-  void print();
+  void print(StringRef gcnoFile, StringRef gcdaFile);
 private:
   StringMap<LineCounts> LineInfo;
 };
index b8907d01b43deb7961ae979122f15cbb37d0cfcf..36c5390bbdbdfd89065a61bae3c18e570225f2b5 100644 (file)
@@ -15,6 +15,7 @@
 #include "llvm/Support/GCOV.h"
 #include "llvm/ADT/OwningPtr.h"
 #include "llvm/ADT/STLExtras.h"
+#include "llvm/Support/Format.h"
 #include "llvm/Support/MemoryObject.h"
 #include "llvm/Support/system_error.h"
 using namespace llvm;
@@ -243,7 +244,7 @@ void FileInfo::addLineCount(StringRef Filename, uint32_t Line, uint32_t Count) {
       return;
     }
     StringRef AllLines = Buff.take()->getBuffer();
-    LineCounts L(AllLines.count('\n')+2);
+    LineCounts L(AllLines.count('\n'));
     L[Line-1] = Count;
     LineInfo[Filename] = L;
     return;
@@ -253,11 +254,13 @@ void FileInfo::addLineCount(StringRef Filename, uint32_t Line, uint32_t Count) {
 }
 
 /// print -  Print source files with collected line count information.
-void FileInfo::print() {
+void FileInfo::print(StringRef gcnoFile, StringRef gcdaFile) {
   for (StringMap<LineCounts>::iterator I = LineInfo.begin(), E = LineInfo.end();
        I != E; ++I) {
     StringRef Filename = I->first();
-    outs() << Filename << "\n";
+    outs() << "        -:    0:Source:" << Filename << "\n";
+    outs() << "        -:    0:Graph:" << gcnoFile << "\n";
+    outs() << "        -:    0:Data:" << gcdaFile << "\n";
     LineCounts &L = LineInfo[Filename];
     OwningPtr<MemoryBuffer> Buff;
     if (error_code ec = MemoryBuffer::getFileOrSTDIN(Filename, Buff)) {
@@ -267,16 +270,15 @@ void FileInfo::print() {
     StringRef AllLines = Buff.take()->getBuffer();
     for (unsigned i = 0, e = L.size(); i != e; ++i) {
       if (L[i])
-        outs() << L[i] << ":\t";
+        outs() << format("%9lu:", L[i]);
       else
-        outs() << " :\t";
+        outs() << "        -:";
       std::pair<StringRef, StringRef> P = AllLines.split('\n');
       if (AllLines != P.first)
-        outs() << P.first;
+        outs() << format("%5u:", i+1) << P.first;
       outs() << "\n";
       AllLines = P.second;
     }
   }
 }
 
-
index 7404679145640873d0f8adac1c600c8c39e21986..26aec4632b57ebfc1bb407e0d7f3b97725cfa46c 100644 (file)
@@ -74,6 +74,6 @@ int main(int argc, char **argv) {
 
   FileInfo FI;
   GF.collectLineCounts(FI);
-  FI.print();
+  FI.print(InputGCNO, InputGCDA);
   return 0;
 }