diff options
author | Yuchen Wu <yuchenericwu@hotmail.com> | 2013-11-14 00:32:00 +0000 |
---|---|---|
committer | Yuchen Wu <yuchenericwu@hotmail.com> | 2013-11-14 00:32:00 +0000 |
commit | 131a764e0e7abc90b322fd568e042d3c5a0633af (patch) | |
tree | d5844b31868fa1b75acd086e89644bec44313af3 /include | |
parent | dbb51ff01fd08df39e5040c1cd9edacdc3e4308a (diff) | |
download | external_llvm-131a764e0e7abc90b322fd568e042d3c5a0633af.zip external_llvm-131a764e0e7abc90b322fd568e042d3c5a0633af.tar.gz external_llvm-131a764e0e7abc90b322fd568e042d3c5a0633af.tar.bz2 |
llvm-cov: Removed StringMap holding GCOVLines.
According to the hazy gcov documentation, it appeared to be technically
possible for lines within a block to belong to different source files.
However, upon further investigation, gcov does not actually support
multiple source files for a single block.
This change removes a level of separation between blocks and lines by
replacing the StringMap of GCOVLines with a SmallVector of ints
representing line numbers. This also means that the GCOVLines class is
no longer needed.
This paves the way for supporting the "-a" option, which will output
block information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194637 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Support/GCOV.h | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/include/llvm/Support/GCOV.h b/include/llvm/Support/GCOV.h index d79c0f9..469a9e3 100644 --- a/include/llvm/Support/GCOV.h +++ b/include/llvm/Support/GCOV.h @@ -25,7 +25,6 @@ namespace llvm { class GCOVFunction; class GCOVBlock; -class GCOVLines; class FileInfo; namespace GCOV { @@ -211,6 +210,7 @@ public: GCOVFunction() : Ident(0), LineNumber(0) {} ~GCOVFunction(); bool read(GCOVBuffer &Buffer, GCOV::GCOVFormat Format); + StringRef getFilename() const { return Filename; } void dump(); void collectLineCounts(FileInfo &FI); private: @@ -224,31 +224,21 @@ private: /// GCOVBlock - Collects block information. class GCOVBlock { public: - GCOVBlock(uint32_t N) : Number(N), Counter(0) {} + GCOVBlock(GCOVFunction &P, uint32_t N) : + Parent(P), Number(N), Counter(0), Edges(), Lines() {} ~GCOVBlock(); void addEdge(uint32_t N) { Edges.push_back(N); } - void addLine(StringRef Filename, uint32_t LineNo); + void addLine(uint32_t N) { Lines.push_back(N); } void addCount(uint64_t N) { Counter += N; } size_t getNumEdges() { return Edges.size(); } void dump(); void collectLineCounts(FileInfo &FI); private: + GCOVFunction &Parent; uint32_t Number; uint64_t Counter; SmallVector<uint32_t, 16> Edges; - StringMap<GCOVLines *> Lines; -}; - -/// GCOVLines - A wrapper around a vector of int to keep track of line nos. -class GCOVLines { -public: - ~GCOVLines() { Lines.clear(); } - void add(uint32_t N) { Lines.push_back(N); } - void collectLineCounts(FileInfo &FI, StringRef Filename, uint64_t Count); - void dump(); - -private: - SmallVector<uint32_t, 4> Lines; + SmallVector<uint32_t, 16> Lines; }; typedef DenseMap<uint32_t, uint64_t> LineCounts; |