[llvm] r254551 - [PGO] Allow input value node list to be null
Xinliang David Li via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 2 13:47:43 PST 2015
Author: davidxl
Date: Wed Dec 2 15:47:43 2015
New Revision: 254551
URL: http://llvm.org/viewvc/llvm-project?rev=254551&view=rev
Log:
[PGO] Allow input value node list to be null
This is to handle the case when vp node linked
list array is laziliy initialized at runtime
Modified:
llvm/trunk/include/llvm/ProfileData/InstrProfData.inc
Modified: llvm/trunk/include/llvm/ProfileData/InstrProfData.inc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ProfileData/InstrProfData.inc?rev=254551&r1=254550&r2=254551&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ProfileData/InstrProfData.inc (original)
+++ llvm/trunk/include/llvm/ProfileData/InstrProfData.inc Wed Dec 2 15:47:43 2015
@@ -538,12 +538,13 @@ int initializeValueProfRuntimeRecord(Val
}
NumValueKinds++;
RuntimeRecord->SiteCountArray[I] = (uint8_t *)calloc(N, 1);
- RuntimeRecord->NodesKind[I] = &RuntimeRecord->Nodes[S];
- if (!RuntimeRecord->NodesKind[I])
+ if (!RuntimeRecord->SiteCountArray[I])
return 1;
+ RuntimeRecord->NodesKind[I] = Nodes ? &Nodes[S] : NULL;
for (J = 0; J < N; J++) {
+ /* Compute value count for each site. */
uint32_t C = 0;
- ValueProfNode *Site = RuntimeRecord->Nodes[S + J];
+ ValueProfNode *Site = Nodes ? RuntimeRecord->NodesKind[I][J] : NULL;
while (Site) {
C++;
Site = Site->Next;
@@ -596,6 +597,8 @@ void getValueForSiteRT(const void *R, In
unsigned I, N = 0;
const ValueProfRuntimeRecord *Record = (const ValueProfRuntimeRecord *)R;
N = getNumValueDataForSiteRT(R, VK, S);
+ if (N == 0)
+ return;
ValueProfNode *VNode = Record->NodesKind[VK][S];
for (I = 0; I < N; I++) {
Dst[I] = VNode->VData;
More information about the llvm-commits
mailing list