From 5497dd541ac57f011f86a55f31abac19e2a93459 Mon Sep 17 00:00:00 2001 From: Rong Xu Date: Fri, 3 Mar 2017 21:56:34 +0000 Subject: [PATCH] [PGO] Text format profile reader needs to clear the value profile Summary: Reset the ValueData for each function to avoid using the ones in the previous function. Reviewers: davidxl Reviewed By: davidxl Subscribers: llvm-commits, xur Differential Revision: https://reviews.llvm.org/D30479 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296916 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ProfileData/InstrProf.h | 7 +++++++ lib/ProfileData/InstrProfReader.cpp | 2 +- test/tools/llvm-profdata/value-prof.proftext | 9 +++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/llvm/ProfileData/InstrProf.h b/include/llvm/ProfileData/InstrProf.h index d48622ed881..8c9a93eb7c4 100644 --- a/include/llvm/ProfileData/InstrProf.h +++ b/include/llvm/ProfileData/InstrProf.h @@ -671,6 +671,13 @@ struct InstrProfRecord { SR.sortByCount(); } } + + /// Clear value data entries and edge counters. + void Clear() { + Counts.clear(); + clearValueData(); + } + /// Clear value data entries void clearValueData() { for (uint32_t Kind = IPVK_First; Kind <= IPVK_Last; ++Kind) diff --git a/lib/ProfileData/InstrProfReader.cpp b/lib/ProfileData/InstrProfReader.cpp index 0ba6cdb0c70..856f793363f 100644 --- a/lib/ProfileData/InstrProfReader.cpp +++ b/lib/ProfileData/InstrProfReader.cpp @@ -250,7 +250,7 @@ Error TextInstrProfReader::readNextRecord(InstrProfRecord &Record) { return error(instrprof_error::malformed); // Read each counter and fill our internal storage with the values. - Record.Counts.clear(); + Record.Clear(); Record.Counts.reserve(NumCounters); for (uint64_t I = 0; I < NumCounters; ++I) { if (Line.is_at_end()) diff --git a/test/tools/llvm-profdata/value-prof.proftext b/test/tools/llvm-profdata/value-prof.proftext index b5979c84249..e35efbfa003 100644 --- a/test/tools/llvm-profdata/value-prof.proftext +++ b/test/tools/llvm-profdata/value-prof.proftext @@ -63,6 +63,15 @@ foo2:20000 #ICTEXT-NEXT: foo2:20000 # +bar +# Func Hash: +10 +# Num Counters: +2 +# Counter Values: +999000 +359800 + #ICSUM: Total Number of Indirect Call Sites : 3 #ICSUM: Total Number of Sites With Values : 2 #ICSUM: Total Number of Profiled Values : 3 -- 2.11.0