diff --git a/llvm/include/llvm/Support/GCOV.h b/llvm/include/llvm/Support/GCOV.h index 0aa716aac077..0fbe86c3c5a8 100644 --- a/llvm/include/llvm/Support/GCOV.h +++ b/llvm/include/llvm/Support/GCOV.h @@ -196,7 +196,7 @@ public: GCOVFile() : Functions(), RunCount(0), ProgramCount(0) {} ~GCOVFile(); bool read(GCOVBuffer &Buffer); - void dump(); + void dump() const; void collectLineCounts(FileInfo &FI); private: SmallVector Functions; @@ -211,7 +211,7 @@ public: ~GCOVFunction(); bool read(GCOVBuffer &Buffer, GCOV::GCOVFormat Format); StringRef getFilename() const { return Filename; } - void dump(); + void dump() const; void collectLineCounts(FileInfo &FI); private: uint32_t Ident; @@ -230,8 +230,8 @@ public: void addEdge(uint32_t N) { Edges.push_back(N); } void addLine(uint32_t N) { Lines.push_back(N); } void addCount(uint64_t N) { Counter += N; } - size_t getNumEdges() { return Edges.size(); } - void dump(); + size_t getNumEdges() const { return Edges.size(); } + void dump() const; void collectLineCounts(FileInfo &FI); private: GCOVFunction &Parent; @@ -249,7 +249,7 @@ public: } void setRunCount(uint32_t Runs) { RunCount = Runs; } void setProgramCount(uint32_t Programs) { ProgramCount = Programs; } - void print(raw_fd_ostream &OS, StringRef gcnoFile, StringRef gcdaFile); + void print(raw_fd_ostream &OS, StringRef gcnoFile, StringRef gcdaFile) const; private: StringMap LineInfo; uint32_t RunCount; diff --git a/llvm/lib/IR/GCOV.cpp b/llvm/lib/IR/GCOV.cpp index f0f8c7d74bb9..b6f491776480 100644 --- a/llvm/lib/IR/GCOV.cpp +++ b/llvm/lib/IR/GCOV.cpp @@ -84,8 +84,8 @@ bool GCOVFile::read(GCOVBuffer &Buffer) { } /// dump - Dump GCOVFile content to dbgs() for debugging purposes. -void GCOVFile::dump() { - for (SmallVectorImpl::iterator I = Functions.begin(), +void GCOVFile::dump() const { + for (SmallVectorImpl::const_iterator I = Functions.begin(), E = Functions.end(); I != E; ++I) (*I)->dump(); } @@ -221,9 +221,9 @@ bool GCOVFunction::read(GCOVBuffer &Buff, GCOV::GCOVFormat Format) { } /// dump - Dump GCOVFunction content to dbgs() for debugging purposes. -void GCOVFunction::dump() { +void GCOVFunction::dump() const { dbgs() << "===== " << Name << " @ " << Filename << ":" << LineNumber << "\n"; - for (SmallVectorImpl::iterator I = Blocks.begin(), + for (SmallVectorImpl::const_iterator I = Blocks.begin(), E = Blocks.end(); I != E; ++I) (*I)->dump(); } @@ -254,18 +254,18 @@ void GCOVBlock::collectLineCounts(FileInfo &FI) { } /// dump - Dump GCOVBlock content to dbgs() for debugging purposes. -void GCOVBlock::dump() { +void GCOVBlock::dump() const { dbgs() << "Block : " << Number << " Counter : " << Counter << "\n"; if (!Edges.empty()) { dbgs() << "\tEdges : "; - for (SmallVectorImpl::iterator I = Edges.begin(), E = Edges.end(); + for (SmallVectorImpl::const_iterator I = Edges.begin(), E = Edges.end(); I != E; ++I) dbgs() << (*I) << ","; dbgs() << "\n"; } if (!Lines.empty()) { dbgs() << "\tLines : "; - for (SmallVectorImpl::iterator I = Lines.begin(), + for (SmallVectorImpl::const_iterator I = Lines.begin(), E = Lines.end(); I != E; ++I) dbgs() << (*I) << ","; dbgs() << "\n"; @@ -277,16 +277,16 @@ void GCOVBlock::dump() { /// print - Print source files with collected line count information. void FileInfo::print(raw_fd_ostream &OS, StringRef gcnoFile, - StringRef gcdaFile) { - for (StringMap::iterator I = LineInfo.begin(), E = LineInfo.end(); - I != E; ++I) { + StringRef gcdaFile) const { + for (StringMap::const_iterator I = LineInfo.begin(), + E = LineInfo.end(); I != E; ++I) { StringRef Filename = I->first(); OS << " -: 0:Source:" << Filename << "\n"; OS << " -: 0:Graph:" << gcnoFile << "\n"; OS << " -: 0:Data:" << gcdaFile << "\n"; OS << " -: 0:Runs:" << RunCount << "\n"; OS << " -: 0:Programs:" << ProgramCount << "\n"; - LineCounts &L = LineInfo[Filename]; + const LineCounts &L = I->second; OwningPtr Buff; if (error_code ec = MemoryBuffer::getFileOrSTDIN(Filename, Buff)) { errs() << Filename << ": " << ec.message() << "\n"; @@ -295,11 +295,12 @@ void FileInfo::print(raw_fd_ostream &OS, StringRef gcnoFile, StringRef AllLines = Buff->getBuffer(); uint32_t i = 0; while (!AllLines.empty()) { - if (L.find(i) != L.end()) { - if (L[i] == 0) + LineCounts::const_iterator CountIt = L.find(i); + if (CountIt != L.end()) { + if (CountIt->second == 0) OS << " #####:"; else - OS << format("%9" PRIu64 ":", L[i]); + OS << format("%9" PRIu64 ":", CountIt->second); } else { OS << " -:"; }