summaryrefslogtreecommitdiff
path: root/lib/IR/GCOV.cpp
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2013-10-22 17:43:47 +0000
committerBob Wilson <bob.wilson@apple.com>2013-10-22 17:43:47 +0000
commit51ec77d880ce53cbc8a48168185edc085df9b6d9 (patch)
treecd8ac30429d51373df6f95a0ce78a3570961972b /lib/IR/GCOV.cpp
parent135fe6ac5f5b80ef68c19b3ec7bb0063e28f2bab (diff)
downloadllvm-51ec77d880ce53cbc8a48168185edc085df9b6d9.tar.gz
llvm-51ec77d880ce53cbc8a48168185edc085df9b6d9.tar.bz2
llvm-51ec77d880ce53cbc8a48168185edc085df9b6d9.tar.xz
Fix llvm-cov counts to be 64-bit integers to avoid overflows.
Line counts in llvm-cov are read in as 64-bit integers but were being truncated to 32-bit in collectLineCounts(), which caused overflow for large counts. This patch fixes all counts to be uint64_t. Patch by Yuchen Wu! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193172 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/IR/GCOV.cpp')
-rw-r--r--lib/IR/GCOV.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/IR/GCOV.cpp b/lib/IR/GCOV.cpp
index 36c5390bbd..8a3fb47bf1 100644
--- a/lib/IR/GCOV.cpp
+++ b/lib/IR/GCOV.cpp
@@ -219,7 +219,7 @@ void GCOVBlock::dump() {
/// collectLineCounts - Collect line counts. This must be used after
/// reading .gcno and .gcda files.
void GCOVLines::collectLineCounts(FileInfo &FI, StringRef Filename,
- uint32_t Count) {
+ uint64_t Count) {
for (SmallVectorImpl<uint32_t>::iterator I = Lines.begin(),
E = Lines.end(); I != E; ++I)
FI.addLineCount(Filename, *I, Count);
@@ -236,7 +236,7 @@ void GCOVLines::dump() {
// FileInfo implementation.
/// addLineCount - Add line count for the given line number in a file.
-void FileInfo::addLineCount(StringRef Filename, uint32_t Line, uint32_t Count) {
+void FileInfo::addLineCount(StringRef Filename, uint32_t Line, uint64_t Count) {
if (LineInfo.find(Filename) == LineInfo.end()) {
OwningPtr<MemoryBuffer> Buff;
if (error_code ec = MemoryBuffer::getFileOrSTDIN(Filename, Buff)) {