From 63248ab8887ab026e75231dde8eb4e676b8cc0d9 Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Fri, 19 Aug 2016 06:31:45 +0000 Subject: [PATCH] [Profile] Fix edge count read bug Use uint64_t to avoid value truncation before scaling. llvm-svn: 279213 --- llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp index 0865d16..707329c 100644 --- a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp +++ b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp @@ -821,7 +821,7 @@ void PGOUseFunc::populateCounters() { } static void setProfMetadata(Module *M, TerminatorInst *TI, - ArrayRef EdgeCounts, uint64_t MaxCount) { + ArrayRef EdgeCounts, uint64_t MaxCount) { MDBuilder MDB(M->getContext()); assert(MaxCount > 0 && "Bad max count"); uint64_t Scale = calculateCountScale(MaxCount); @@ -851,7 +851,7 @@ void PGOUseFunc::setBranchWeights() { // We have a non-zero Branch BB. const UseBBInfo &BBCountInfo = getBBInfo(&BB); unsigned Size = BBCountInfo.OutEdges.size(); - SmallVector EdgeCounts(Size, 0); + SmallVector EdgeCounts(Size, 0); uint64_t MaxCount = 0; for (unsigned s = 0; s < Size; s++) { const PGOUseEdge *E = BBCountInfo.OutEdges[s]; -- 2.7.4