mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[PGO] Use ArrayRef in annotateValueSite()
Using ArrayRef in annotateValueSite's parameter instead of using an array and it's size. Differential Revision: http://reviews.llvm.org/D18568 llvm-svn: 264879
This commit is contained in:
parent
69c2b6ab61
commit
de2c81df75
@ -229,10 +229,9 @@ void annotateValueSite(Module &M, Instruction &Inst,
|
||||
const InstrProfRecord &InstrProfR,
|
||||
InstrProfValueKind ValueKind, uint32_t SiteIndx,
|
||||
uint32_t MaxMDCount = 3);
|
||||
/// Same as the above interface but using the ValueData array directly, as
|
||||
/// well as \p Sum.
|
||||
/// Same as the above interface but using an ArrayRef, as well as \p Sum.
|
||||
void annotateValueSite(Module &M, Instruction &Inst,
|
||||
const InstrProfValueData VD[], uint32_t NV,
|
||||
ArrayRef<InstrProfValueData> VDs,
|
||||
uint64_t Sum, InstrProfValueKind ValueKind,
|
||||
uint32_t MaxMDCount);
|
||||
|
||||
|
@ -606,11 +606,12 @@ void annotateValueSite(Module &M, Instruction &Inst,
|
||||
std::unique_ptr<InstrProfValueData[]> VD =
|
||||
InstrProfR.getValueForSite(ValueKind, SiteIdx, &Sum);
|
||||
|
||||
annotateValueSite(M, Inst, VD.get(), NV, Sum, ValueKind, MaxMDCount);
|
||||
ArrayRef<InstrProfValueData> VDs(VD.get(), NV);
|
||||
annotateValueSite(M, Inst, VDs, Sum, ValueKind, MaxMDCount);
|
||||
}
|
||||
|
||||
void annotateValueSite(Module &M, Instruction &Inst,
|
||||
const InstrProfValueData VD[], uint32_t NV,
|
||||
ArrayRef<InstrProfValueData> VDs,
|
||||
uint64_t Sum, InstrProfValueKind ValueKind,
|
||||
uint32_t MaxMDCount) {
|
||||
LLVMContext &Ctx = M.getContext();
|
||||
@ -627,11 +628,11 @@ void annotateValueSite(Module &M, Instruction &Inst,
|
||||
|
||||
// Value Profile Data
|
||||
uint32_t MDCount = MaxMDCount;
|
||||
for (uint32_t I = 0; I < NV; ++I) {
|
||||
for (auto &VD : VDs) {
|
||||
Vals.push_back(MDHelper.createConstant(
|
||||
ConstantInt::get(Type::getInt64Ty(Ctx), VD[I].Value)));
|
||||
ConstantInt::get(Type::getInt64Ty(Ctx), VD.Value)));
|
||||
Vals.push_back(MDHelper.createConstant(
|
||||
ConstantInt::get(Type::getInt64Ty(Ctx), VD[I].Count)));
|
||||
ConstantInt::get(Type::getInt64Ty(Ctx), VD.Count)));
|
||||
if (--MDCount == 0)
|
||||
break;
|
||||
}
|
||||
|
@ -330,7 +330,8 @@ TEST_P(MaybeSparseInstrProfTest, annotate_vp_data) {
|
||||
// Annotate with 4 records.
|
||||
InstrProfValueData VD0Sorted[] = {{1000, 6}, {2000, 5}, {3000, 4}, {4000, 3},
|
||||
{5000, 2}, {6000, 1}};
|
||||
annotateValueSite(*M, *Inst, &VD0Sorted[2], 4, 10, IPVK_IndirectCallTarget, 5);
|
||||
annotateValueSite(*M, *Inst, makeArrayRef(VD0Sorted).slice(2), 10,
|
||||
IPVK_IndirectCallTarget, 5);
|
||||
Res = getValueProfDataFromInst(*Inst, IPVK_IndirectCallTarget, 5,
|
||||
ValueData, N, T);
|
||||
ASSERT_TRUE(Res);
|
||||
|
Loading…
x
Reference in New Issue
Block a user