[all-commits] [llvm/llvm-project] 314407: [ProfileData] Use std::vector for ValueData (NFC) ...
Kazu Hirata via All-commits
all-commits at lists.llvm.org
Wed Jun 12 11:23:12 PDT 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 31440738bd6b1345ea978914fe01d2e19f4aa373
https://github.com/llvm/llvm-project/commit/31440738bd6b1345ea978914fe01d2e19f4aa373
Author: Kazu Hirata <kazu at google.com>
Date: 2024-06-12 (Wed, 12 Jun 2024)
Changed paths:
M llvm/include/llvm/ProfileData/InstrProf.h
M llvm/lib/ProfileData/InstrProf.cpp
Log Message:
-----------
[ProfileData] Use std::vector for ValueData (NFC) (#95194)
This patch changes the type of ValueData to
std::vector<InstrProfValueData> so that, in a follow-up patch, we can
teach getValueForSite to return ArrayRef<InstrProfValueData>.
Currently, a typical traversal over the value data looks like:
uint32_t NV = Func.getNumValueDataForSite(VK, I);
std::unique_ptr<InstrProfValueData[]> VD = Func.getValueForSite(VK, I);
for (uint32_t V = 0; V < NV; V++)
Do something with VD[V].Value and/or VD[V].Count;
Note that we need to call getNumValueDataForSite and getValueForSite
separately. If getValueForSite returns ArrayRef<InstrProfValueData>
in the future, then we'll be able to do something like:
for (const auto &V : Func.getValueForSite(VK, I))
Do something with V.Value and/or V.Count;
If ArrayRef<InstrProfValueData> directly points to ValueData, then
getValueForSite won't need to allocate memory with std::make_unique.
Now, switching to std::vector requires us to update several places:
- sortByTargetValues switches to llvm::sort because we don't need to
worry about sort stability.
- sortByCount retains sort stability because std::list::sort also
performs stable sort.
- merge builds another array and move it back to ValueData to avoid a
potential quadratic behavior with std::vector::insert into the
middle of a vector.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list