forked from OSchip/llvm-project
[CSSPGO][llvm-profgen] Change sample count of dangling probe in llvm-profgen
Differential Revision: https://reviews.llvm.org/D96811
This commit is contained in:
parent
0d01dfbc37
commit
c460ef61d6
|
@ -552,6 +552,13 @@ public:
|
|||
FName, Num, Weight);
|
||||
}
|
||||
|
||||
sampleprof_error addBodySamplesForProbe(uint32_t Index, uint64_t Num,
|
||||
uint64_t Weight = 1) {
|
||||
SampleRecord S;
|
||||
S.addSamples(Num, Weight);
|
||||
return BodySamples[LineLocation(Index, 0)].merge(S, Weight);
|
||||
}
|
||||
|
||||
/// Return the number of samples collected at the given location.
|
||||
/// Each location is specified by \p LineOffset and \p Discriminator.
|
||||
/// If the location is not found in profile, return error.
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
; CHECK-NEXT: 6: 15
|
||||
; CHECK-NEXT: 8: 14 bar:14
|
||||
; CHECK-NEXT: !CFGChecksum: 138950591924
|
||||
; CHECK-NEXT:[main:2 @ foo:8 @ bar]:56:14
|
||||
; CHECK-NEXT:[main:2 @ foo:8 @ bar]:28:14
|
||||
; CHECK-NEXT: 1: 14
|
||||
; CHECK-NEXT: 2: 14
|
||||
; CHECK-NEXT: 3: 14
|
||||
; CHECK-NEXT: 2: 18446744073709551615
|
||||
; CHECK-NEXT: 3: 18446744073709551615
|
||||
; CHECK-NEXT: 4: 14
|
||||
; CHECK-NEXT: !CFGChecksum: 72617220756
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
; CHECK-NEXT: 6: 15
|
||||
; CHECK-NEXT: 8: 15 bar:15
|
||||
; CHECK-NEXT: !CFGChecksum: 138950591924
|
||||
; CHECK-NEXT:[main:2 @ foo:8 @ bar]:60:15
|
||||
; CHECK-NEXT:[main:2 @ foo:8 @ bar]:30:15
|
||||
; CHECK-NEXT: 1: 15
|
||||
; CHECK-NEXT: 2: 15
|
||||
; CHECK-NEXT: 3: 15
|
||||
; CHECK-NEXT: 2: 18446744073709551615
|
||||
; CHECK-NEXT: 3: 18446744073709551615
|
||||
; CHECK-NEXT: 4: 15
|
||||
; CHECK-NEXT: !CFGChecksum: 72617220756
|
||||
|
||||
|
|
|
@ -492,7 +492,17 @@ void PseudoProbeCSProfileGenerator::populateBodySamplesWithProbes(
|
|||
FunctionSamples &FunctionProfile =
|
||||
getFunctionProfileForLeafProbe(ContextStrStack, Probe, Binary);
|
||||
|
||||
FunctionProfile.addBodySamples(Probe->Index, 0, Count);
|
||||
// Use InvalidProbeCount(UINT64_MAX) to mark sample count for a dangling
|
||||
// probe. Dangling probes are the probes associated to an empty block. With
|
||||
// this place holder, sample count on dangling probe will not be trusted by
|
||||
// the compiler and it will rely on the counts inference algorithm to get
|
||||
// the probe a reasonable count.
|
||||
if (Probe->isDangling()) {
|
||||
FunctionProfile.addBodySamplesForProbe(
|
||||
Probe->Index, FunctionSamples::InvalidProbeCount);
|
||||
continue;
|
||||
}
|
||||
FunctionProfile.addBodySamplesForProbe(Probe->Index, Count);
|
||||
FunctionProfile.addTotalSamples(Count);
|
||||
if (Probe->isEntry()) {
|
||||
FunctionProfile.addHeadSamples(Count);
|
||||
|
|
Loading…
Reference in New Issue