Skip to content

Commit beba2e7

Browse files
[ProfileData] Teach addValueData to honor parameter Site (#96233)
This patch teaches addValueData to honor Site for verification purposes. It does not affect the profile data in any manner.
1 parent 3482403 commit beba2e7

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

llvm/include/llvm/ProfileData/InstrProf.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,8 @@ struct InstrProfRecord {
860860
/// Reserve space for NumValueSites sites.
861861
inline void reserveSites(uint32_t ValueKind, uint32_t NumValueSites);
862862

863-
/// Add ValueData for ValueKind at value Site.
863+
/// Add ValueData for ValueKind at value Site. We do not support adding sites
864+
/// out of order. Site must go up from 0 one by one.
864865
void addValueData(uint32_t ValueKind, uint32_t Site,
865866
InstrProfValueData *VData, uint32_t N,
866867
InstrProfSymtab *SymTab);

llvm/lib/ProfileData/InstrProf.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,7 @@ void InstrProfRecord::addValueData(uint32_t ValueKind, uint32_t Site,
10011001
}
10021002
std::vector<InstrProfValueSiteRecord> &ValueSites =
10031003
getOrCreateValueSitesForKind(ValueKind);
1004+
assert(ValueSites.size() == Site);
10041005
if (N == 0)
10051006
ValueSites.emplace_back();
10061007
else

llvm/unittests/ProfileData/InstrProfTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,7 @@ TEST_P(InstrProfReaderWriterTest, icall_and_vtable_data_read_write) {
829829
{getCalleeAddress(vtable2), 2},
830830
};
831831
Record1.addValueData(IPVK_VTableTarget, 0, VD0, 3, nullptr);
832-
Record1.addValueData(IPVK_VTableTarget, 2, VD2, 2, nullptr);
832+
Record1.addValueData(IPVK_VTableTarget, 1, VD2, 2, nullptr);
833833
}
834834

835835
Writer.addRecord(std::move(Record1), getProfWeight(), Err);
@@ -1050,7 +1050,7 @@ TEST_P(MaybeSparseInstrProfTest, icall_and_vtable_data_merge) {
10501050
InstrProfValueData VD4[] = {{getCalleeAddress(vtable1), 1},
10511051
{getCalleeAddress(vtable2), 2},
10521052
{getCalleeAddress(vtable3), 3}};
1053-
Record11.addValueData(IPVK_VTableTarget, 3, VD4, 3, nullptr);
1053+
Record11.addValueData(IPVK_VTableTarget, 2, VD4, 3, nullptr);
10541054
}
10551055

10561056
// A different record for the same caller.
@@ -1086,7 +1086,7 @@ TEST_P(MaybeSparseInstrProfTest, icall_and_vtable_data_merge) {
10861086
InstrProfValueData VD4[] = {{getCalleeAddress(vtable1), 1},
10871087
{getCalleeAddress(vtable2), 2},
10881088
{getCalleeAddress(vtable3), 3}};
1089-
Record12.addValueData(IPVK_VTableTarget, 3, VD4, 3, nullptr);
1089+
Record12.addValueData(IPVK_VTableTarget, 2, VD4, 3, nullptr);
10901090
}
10911091

10921092
Writer.addRecord(std::move(Record11), Err);

0 commit comments

Comments
 (0)