Index: include/llvm/ProfileData/InstrProf.h =================================================================== --- include/llvm/ProfileData/InstrProf.h +++ include/llvm/ProfileData/InstrProf.h @@ -635,6 +635,13 @@ 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) Index: lib/ProfileData/InstrProfReader.cpp =================================================================== --- lib/ProfileData/InstrProfReader.cpp +++ lib/ProfileData/InstrProfReader.cpp @@ -233,7 +233,7 @@ 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()) Index: test/tools/llvm-profdata/value-prof.proftext =================================================================== --- test/tools/llvm-profdata/value-prof.proftext +++ test/tools/llvm-profdata/value-prof.proftext @@ -63,6 +63,15 @@ #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