Skip to content

Commit f553764

Browse files
committed
[llvm-profgen] Update total samples by accumulating all its body samples
Like probe-based profile, the total samples is the sum of all its body samples. This patch fix it by a post-processing update for the line-number based profile. Tested it on our internal services, results showed no performance change. Reviewed By: hoy, wenlei Differential Revision: https://reviews.llvm.org/D112672
1 parent 8314a04 commit f553764

17 files changed

Lines changed: 119 additions & 93 deletions

‎llvm/include/llvm/ProfileData/SampleProf.h‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,20 @@ class FunctionSamples {
731731
return BodySamples[LineLocation(Index, 0)].merge(S, Weight);
732732
}
733733

734+
// Accumulate all body samples to set total samples.
735+
void updateTotalSamples() {
736+
setTotalSamples(0);
737+
for (const auto &I : BodySamples)
738+
addTotalSamples(I.second.getSamples());
739+
740+
for (auto &I : CallsiteSamples) {
741+
for (auto &CS : I.second) {
742+
CS.second.updateTotalSamples();
743+
addTotalSamples(CS.second.getTotalSamples());
744+
}
745+
}
746+
}
747+
734748
/// Return the number of samples collected at the given location.
735749
/// Each location is specified by \p LineOffset and \p Discriminator.
736750
/// If the location is not found in profile, return error.

‎llvm/test/tools/llvm-profgen/coroutine.test‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; RUN: FileCheck %s --input-file %t --check-prefix=CHECK
33

44
; Check that the head sample count for ticker is 0.
5-
; CHECK: _Z6tickeri:353:0
5+
; CHECK: _Z6tickeri:67:0
66
; CHECK-NOT: _Z6tickeri.resume
77

88

‎llvm/test/tools/llvm-profgen/cs-interrupt.test‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
>>>>>>> 02ea7084c370 ([llvm-profgen] Support LBR only perf script)
77
; RUN: FileCheck %s --input-file %t
88

9-
; CHECK:[main:1 @ foo]:88:0
10-
; CHECK: 2: 5
11-
; CHECK: 3: 5 bar:5
12-
; CHECK:[main:1 @ foo:3 @ bar]:74:5
9+
; CHECK:[main:1 @ foo:3 @ bar]:17:5
1310
; CHECK: 0: 5
1411
; CHECK: 1: 5
1512
; CHECK: 2: 3
1613
; CHECK: 5: 4
14+
; CHECK:[main:1 @ foo]:10:0
15+
; CHECK: 2: 5
16+
; CHECK: 3: 5 bar:5
1717

1818
; CHECK-UNWINDER: [main:1 @ foo]
1919
; CHECK-UNWINDER-NEXT: 3

‎llvm/test/tools/llvm-profgen/cs-preinline.test‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,37 +15,37 @@
1515

1616
; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-TRIM
1717

18-
; CHECK-DEFAULT: [main:1 @ foo]:225:0
18+
; CHECK-DEFAULT: [main:1 @ foo]:44:0
1919
; CHECK-DEFAULT-NEXT: 2.1: 14
2020
; CHECK-DEFAULT-NEXT: 3: 15
2121
; CHECK-DEFAULT-NEXT: 3.1: 14 bar:14
2222
; CHECK-DEFAULT-NEXT: 3.2: 1
2323
; CHECK-DEFAULT-NEXT: !Attributes: 1
24-
; CHECK-DEFAULT-NEXT:[main:1 @ foo:3.1 @ bar]:84:0
24+
; CHECK-DEFAULT-NEXT:[main:1 @ foo:3.1 @ bar]:14:0
2525
; CHECK-DEFAULT-NEXT: 1: 14
2626
; CHECK-DEFAULT-NEXT: !Attributes: 1
2727

28-
; CHECK-PREINL: [foo]:225:0
28+
; CHECK-PREINL: [foo]:44:0
2929
; CHECK-PREINL-NEXT: 2.1: 14
3030
; CHECK-PREINL-NEXT: 3: 15
3131
; CHECK-PREINL-NEXT: 3.1: 14 bar:14
3232
; CHECK-PREINL-NEXT: 3.2: 1
3333
; CHECK-PREINL-NEXT: !Attributes: 1
34-
; CHECK-PREINL-NEXT:[foo:3.1 @ bar]:84:0
34+
; CHECK-PREINL-NEXT:[foo:3.1 @ bar]:14:0
3535
; CHECK-PREINL-NEXT: 1: 14
3636
; CHECK-PREINL-NEXT: !Attributes: 3
3737

38-
; CHECK-NO-PREINL: [foo]:225:0
38+
; CHECK-NO-PREINL: [foo]:44:0
3939
; CHECK-NO-PREINL-NEXT: 2.1: 14
4040
; CHECK-NO-PREINL-NEXT: 3: 15
4141
; CHECK-NO-PREINL-NEXT: 3.1: 14 bar:14
4242
; CHECK-NO-PREINL-NEXT: 3.2: 1
4343
; CHECK-NO-PREINL-NEXT: !Attributes: 1
44-
; CHECK-NO-PREINL-NEXT:[bar]:84:0
44+
; CHECK-NO-PREINL-NEXT:[bar]:14:0
4545
; CHECK-NO-PREINL-NEXT: 1: 14
4646
; CHECK-NO-PREINL-NEXT: !Attributes: 1
4747

48-
; CHECK-TRIM-NOT: [foo]:225:0
49-
; CHECK-TRIM:[foo:3.1 @ bar]:84:0
48+
; CHECK-TRIM-NOT: [foo]
49+
; CHECK-TRIM:[foo:3.1 @ bar]:14:0
5050
; CHECK-TRIM-NEXT: 1: 14
5151
; CHECK-TRIM-NEXT: !Attributes: 3

‎llvm/test/tools/llvm-profgen/fname-canonicalization.test‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/unique-linkage-name-dwarf.perfscript --binary=%S/Inputs/unique-linkage-name-dwarf.perfbin --output=%t --profile-summary-cold-count=0
33
; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-DWARF-FNAME
44

5-
; CHECK-DWARF-FNAME:[main:1 @ foo]:225:0
5+
; CHECK-DWARF-FNAME:[main:1 @ foo]:43:0
66
; CHECK-DWARF-FNAME: 2: 14
77
; CHECK-DWARF-FNAME: 3: 29 bar.__uniq.26267048767521081047744692097241227776:14
8-
; CHECK-DWARF-FNAME:[main:1 @ foo:3 @ bar.__uniq.26267048767521081047744692097241227776]:84:0
8+
; CHECK-DWARF-FNAME:[main:1 @ foo:3 @ bar.__uniq.26267048767521081047744692097241227776]:14:0
99
; CHECK-DWARF-FNAME: 1: 14
1010

1111

‎llvm/test/tools/llvm-profgen/func-split.test‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,26 @@
33
; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/func-split.perfscript --binary=%S/Inputs/func-split.perfbin --output=%t --ignore-stack-samples
44
; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-STRIP-CTX
55

6-
;CHECK: [foo]:408:0
6+
;CHECK: [foo]:82:0
77
;CHECK: 2.1: 27
88
;CHECK: 3: 27
99
;CHECK: 3.1: 2 bar:2
1010
;CHECK: 3.2: 26
11-
;CHECK: [foo:3.1 @ bar]:8:0
11+
;CHECK: [foo:3.1 @ bar]:2:0
1212
;CHECK: 1: 1
1313
;CHECK: 5: 1
1414
;CHECK: [bar]:0:1
1515

1616
;CHECK-NOT: foo.cold
1717

18-
;CHECK-STRIP-CTX: foo:408:0
18+
;CHECK-STRIP-CTX: foo:81:0
1919
;CHECK-STRIP-CTX: 0: 0
2020
;CHECK-STRIP-CTX: 2.1: 27
2121
;CHECK-STRIP-CTX: 3: 27
2222
;CHECK-STRIP-CTX: 3.1: 1 bar:1
2323
;CHECK-STRIP-CTX: 3.2: 26
2424
;CHECK-STRIP-CTX: 4: 0
25-
;CHECK-STRIP-CTX: bar:8:1
25+
;CHECK-STRIP-CTX: bar:2:1
2626
;CHECK-STRIP-CTX: 1: 1
2727
;CHECK-STRIP-CTX: 5: 1
2828

‎llvm/test/tools/llvm-profgen/inline-cs-noprobe.test‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
; CHECK-SYM-LIST: foo
1414
; CHECK-SYM-LIST: main
1515

16-
; CHECK:[main:1 @ foo]:225:0
16+
; CHECK:[main:1 @ foo]:44:0
1717
; CHECK: 2.1: 14
1818
; CHECK: 3: 15
1919
; CHECK: 3.1: 14 bar:14
2020
; CHECK: 3.2: 1
21-
; CHECK:[main:1 @ foo:3.1 @ bar]:84:0
21+
; CHECK:[main:1 @ foo:3.1 @ bar]:14:0
2222
; CHECK: 1: 14
2323

2424
; CHECK-UNWINDER: [main:1 @ foo]
@@ -34,16 +34,16 @@
3434
; CHECK-UNWINDER: 6af-6bb:14
3535
; CHECK-UNWINDER: 0
3636

37-
; CHECK-STRIP-CTX: main:295:0
37+
; CHECK-STRIP-CTX: main:44:0
3838
; CHECK-STRIP-CTX: 0: 0
3939
; CHECK-STRIP-CTX: 2: 0
40-
; CHECK-STRIP-CTX: 1: foo:295
40+
; CHECK-STRIP-CTX: 1: foo:44
4141
; CHECK-STRIP-CTX: 2.1: 14
4242
; CHECK-STRIP-CTX: 3: 15
4343
; CHECK-STRIP-CTX: 3.2: 1
4444
; CHECK-STRIP-CTX: 4: 0
4545
; CHECK-STRIP-CTX: 7: 0
46-
; CHECK-STRIP-CTX: 3.1: bar:84
46+
; CHECK-STRIP-CTX: 3.1: bar:14
4747
; CHECK-STRIP-CTX: 1: 14
4848

4949
; original code:

‎llvm/test/tools/llvm-profgen/inline-force-dwarf.test‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
; RUN: llvm-profgen --format=text --ignore-stack-samples --use-dwarf-correlation --perfscript=%S/Inputs/inline-cs-pseudoprobe.perfscript --binary=%S/Inputs/inline-cs-pseudoprobe.perfbin --output=%t --profile-summary-cold-count=0
22
; RUN: FileCheck %s --input-file %t
33

4-
; CHECK: main:295:0
4+
; CHECK: main:43:0
55
; CHECK-NEXT: 0: 0
66
; CHECK-NEXT: 2: 0
7-
; CHECK-NEXT: 1: foo:295
7+
; CHECK-NEXT: 1: foo:43
88
; CHECK-NEXT: 2: 14
99
; CHECK-NEXT: 3: 15
1010
; CHECK-NEXT: 4: 0
11-
; CHECK-NEXT: 3: bar:84
11+
; CHECK-NEXT: 3: bar:14
1212
; CHECK-NEXT: 1: 14
1313

1414

‎llvm/test/tools/llvm-profgen/inline-noprobe.test‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@
77
; RUN: llvm-profgen --format=text --use-dwarf-correlation --perfscript=%S/Inputs/inline-noprobe.perfscript --binary=%S/Inputs/inline-noprobe.perfbin --output=%t
88
; RUN: FileCheck %s --input-file %t --check-prefix=CHECK
99

10-
CHECK: main:669:0
10+
CHECK: main:188:0
1111
CHECK: 0: 0
1212
CHECK: 2: 0
13-
CHECK: 1: foo:669
13+
CHECK: 1: foo:188
1414
CHECK: 2.1: 42
1515
CHECK: 3: 62
1616
CHECK: 3.2: 21
1717
CHECK: 4: 0
18-
CHECK: 3.1: bar:210
18+
CHECK: 3.1: bar:42
1919
CHECK: 1: 42
20-
CHECK: 3.2: bar:63
20+
CHECK: 3.2: bar:21
2121
CHECK: 1: 21
2222

2323
CHECK-RAW-PROFILE: 3

‎llvm/test/tools/llvm-profgen/inline-noprobe2.test‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
;CHECK-RAW-PROFILE-NOT: 7f7448e889e4
2828
;CHECK-RAW-PROFILE-NOT: 7f7448e88826
2929

30-
;CHECK: partition_pivot_first:1045:5
30+
;CHECK: partition_pivot_first:367:5
3131
;CHECK-NEXT: 0: 5
3232
;CHECK-NEXT: 1: 5
3333
;CHECK-NEXT: 2: 5
@@ -39,15 +39,15 @@
3939
;CHECK-NEXT: 4.3: 26
4040
;CHECK-NEXT: 5: 6
4141
;CHECK-NEXT: 6: 6
42-
;CHECK-NEXT: 4.2: swap:100
42+
;CHECK-NEXT: 4.2: swap:75
4343
;CHECK-NEXT: 1: 25
4444
;CHECK-NEXT: 2: 25
4545
;CHECK-NEXT: 3: 25
46-
;CHECK-NEXT: 5: swap:24
46+
;CHECK-NEXT: 5: swap:18
4747
;CHECK-NEXT: 1: 6
4848
;CHECK-NEXT: 2: 6
4949
;CHECK-NEXT: 3: 6
50-
;CHECK-NEXT: partition_pivot_last:389:7
50+
;CHECK-NEXT: partition_pivot_last:225:7
5151
;CHECK-NEXT: 1: 6
5252
;CHECK-NEXT: 2: 6
5353
;CHECK-NEXT: 3: 6
@@ -63,7 +63,7 @@
6363

6464
;CHECK-NEXT: 6: 5
6565
;CHECK-NEXT: 7: 5
66-
;CHECK-NEXT: 5: swap:61
66+
;CHECK-NEXT: 5: swap:54
6767

6868
;w/o duplication factor : 1: 9
6969
;w/o duplication factor : 2: 9
@@ -72,17 +72,17 @@
7272
;CHECK-NEXT: 2: 18
7373
;CHECK-NEXT: 3: 18
7474

75-
;CHECK-NEXT: 6: swap:20
75+
;CHECK-NEXT: 6: swap:15
7676
;CHECK-NEXT: 1: 5
7777
;CHECK-NEXT: 2: 5
7878
;CHECK-NEXT: 3: 5
79-
;CHECK-NEXT: quick_sort:318:25
79+
;CHECK-NEXT: quick_sort:83:25
8080
;CHECK-NEXT: 1: 24
8181
;CHECK-NEXT: 2: 12 partition_pivot_last:7 partition_pivot_first:5
8282
;CHECK-NEXT: 3: 11 quick_sort:12
8383
;CHECK-NEXT: 4: 12 quick_sort:12
8484
;CHECK-NEXT: 6: 24
85-
;CHECK-NEXT: main:213:0
85+
;CHECK-NEXT: main:52:0
8686
;CHECK-NEXT: 0: 0
8787
;CHECK-NEXT: 3: 0
8888
;CHECK-NEXT: 4.1: 0

0 commit comments

Comments
 (0)