[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
This commit is contained in:
Rong Xu 2017-03-03 21:56:34 +00:00
parent 2b465546ec
commit 5497dd541a
3 changed files with 17 additions and 1 deletions

View File

@ -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)

View File

@ -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())

View File

@ -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