Skip to content

Commit 875d633

Browse files
Overhaul tests.
1 parent 491042e commit 875d633

File tree

1 file changed

+120
-39
lines changed

1 file changed

+120
-39
lines changed

llvm/test/Transforms/PGOProfile/memprof-undrift.test

Lines changed: 120 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,60 +4,109 @@
44
; accordingly.
55

66
; RUN: split-file %s %t
7-
; RUN: llvm-profdata merge %t/memprof_annotate_yaml.yaml -o %t/memprof_annotate_yaml.memprofdata
8-
; RUN: opt < %t/memprof_annotate_yaml.ll -passes='memprof-use<profile-filename=%t/memprof_annotate_yaml.memprofdata>' -memprof-salvage-stale-profile -S 2>&1 | FileCheck %s
7+
; RUN: llvm-profdata merge %t/memprof_undrift.yaml -o %t/memprof_undrift.memprofdata
8+
; RUN: opt < %t/memprof_undrift.ll -passes='memprof-use<profile-filename=%t/memprof_undrift.memprofdata>' -memprof-salvage-stale-profile -memprof-ave-lifetime-cold-threshold=5 -S 2>&1 | FileCheck %s
99

10-
;--- memprof_annotate_yaml.yaml
10+
;--- memprof_undrift.yaml
1111
---
1212
HeapProfileRecords:
13+
- GUID: _Z3aaav
14+
AllocSites: []
15+
CallSites:
16+
- - { Function: _Z3aaav, LineOffset: 5, Column: 33, IsInlineFrame: false }
17+
- GUID: _Z6middlev
18+
AllocSites: []
19+
CallSites:
20+
- - { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }
1321
- GUID: _Z3foov
1422
AllocSites:
1523
- Callstack:
16-
- { Function: _Z3foov, LineOffset: 10, Column: 50, IsInlineFrame: true }
17-
- { Function: _Z3barv, LineOffset: 20, Column: 30, IsInlineFrame: false }
18-
- { Function: main, LineOffset: 2, Column: 5, IsInlineFrame: false }
24+
- { Function: _Z3foov, LineOffset: 5, Column: 33, IsInlineFrame: false }
25+
- { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }
1926
MemInfoBlock:
20-
AllocCount: 1
21-
TotalSize: 400
22-
TotalLifetime: 1000000
23-
TotalLifetimeAccessDensity: 1
27+
AllocCount: 1
28+
TotalSize: 4
29+
TotalLifetime: 10000
30+
TotalLifetimeAccessDensity: 0
2431
CallSites: []
25-
- GUID: _Z3barv
32+
- GUID: _Z4leafv
2633
AllocSites:
2734
- Callstack:
28-
- { Function: _Z3foov, LineOffset: 10, Column: 50, IsInlineFrame: true }
29-
- { Function: _Z3barv, LineOffset: 20, Column: 30, IsInlineFrame: false }
30-
- { Function: main, LineOffset: 2, Column: 5, IsInlineFrame: false }
35+
- { Function: _Z4leafv, LineOffset: 5, Column: 33, IsInlineFrame: false }
36+
- { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }
37+
- { Function: _Z3aaav, LineOffset: 5, Column: 33, IsInlineFrame: false }
38+
- { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }
3139
MemInfoBlock:
32-
AllocCount: 1
33-
TotalSize: 400
34-
TotalLifetime: 1000000
35-
TotalLifetimeAccessDensity: 1
40+
AllocCount: 1
41+
TotalSize: 4
42+
TotalLifetime: 0
43+
TotalLifetimeAccessDensity: 25000
44+
- Callstack:
45+
- { Function: _Z4leafv, LineOffset: 5, Column: 33, IsInlineFrame: false }
46+
- { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }
47+
- { Function: _Z3bbbv, LineOffset: 5, Column: 33, IsInlineFrame: false }
48+
- { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }
49+
MemInfoBlock:
50+
AllocCount: 1
51+
TotalSize: 4
52+
TotalLifetime: 10000
53+
TotalLifetimeAccessDensity: 2
54+
CallSites: []
55+
- GUID: _Z3bbbv
56+
AllocSites: []
3657
CallSites:
37-
- - { Function: _Z3foov, LineOffset: 10, Column: 50, IsInlineFrame: true }
38-
- { Function: _Z3barv, LineOffset: 20, Column: 30, IsInlineFrame: false }
58+
- - { Function: _Z3bbbv, LineOffset: 5, Column: 33, IsInlineFrame: false }
3959
...
40-
;--- memprof_annotate_yaml.ll
41-
define dso_local ptr @_Z3foov() !dbg !4 {
42-
; CHECK-LABEL: @_Z3foov
60+
;--- memprof_undrift.ll
61+
define dso_local ptr @_Z3foov() !dbg !5 {
62+
; CHECK-LABEL: @_Z3foov()
4363
entry:
44-
%call = call ptr @_Znam(i64 4) #0, !dbg !5
45-
; CHECK: = call {{.*}} #[[ATTR:[0-9]+]]
46-
ret ptr %call
64+
%call = call ptr @_Znam(i64 4) #1, !dbg !8
65+
; CHECK: call ptr @_Znam(i64 4) #[[ATTR_COLD:[0-9]+]]
66+
ret ptr %call, !dbg !9
4767
}
4868

49-
declare ptr @_Znam(i64 noundef)
69+
; Function Attrs: nobuiltin allocsize(0)
70+
declare ptr @_Znam(i64 noundef) #0
5071

51-
define dso_local ptr @_Z3barv() !dbg !6 {
52-
; CHECK-LABEL: @_Z3barv
72+
; Call hierarchy: leaf -> ::new
73+
define dso_local ptr @_Z4leafv() !dbg !10 {
74+
; CHECK-LABEL: @_Z4leafv()
5375
entry:
54-
%call.i = call ptr @_Znam(i64 4) #0, !dbg !7
55-
; CHECK: = call {{.*}} #[[ATTR]]
56-
ret ptr %call.i
76+
%call = call ptr @_Znam(i64 4) #1, !dbg !11
77+
; CHECK: call ptr @_Znam(i64 4) {{.*}}, !memprof ![[M1:[0-9]+]], !callsite ![[C1:[0-9]+]]
78+
ret ptr %call, !dbg !12
5779
}
5880

59-
attributes #0 = { builtin allocsize(0) }
60-
; CHECK: attributes #[[ATTR]] = { builtin allocsize(0) "memprof"="cold" }
81+
; Call hierarchy: middle -> leaf -> ::new
82+
define dso_local ptr @_Z6middlev() !dbg !13 {
83+
; CHECK-LABEL: @_Z6middlev()
84+
entry:
85+
%call.i = call ptr @_Znam(i64 4) #1, !dbg !14
86+
; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C2:[0-9]+]]
87+
ret ptr %call.i, !dbg !16
88+
}
89+
90+
; Call hierarchy: aaa -> middle -> leaf -> ::new
91+
define dso_local ptr @_Z3aaav() !dbg !17 {
92+
; CHECK-LABEL: @_Z3aaav()
93+
entry:
94+
%call.i.i = call ptr @_Znam(i64 4) #1, !dbg !18
95+
; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C3:[0-9]+]]
96+
ret ptr %call.i.i, !dbg !21
97+
}
98+
99+
; Call hierarchy: bbb -> middle -> leaf -> ::new
100+
define dso_local ptr @_Z3bbbv() !dbg !22 {
101+
; CHECK-LABEL: @_Z3bbbv()
102+
entry:
103+
%call.i.i = call ptr @_Znam(i64 4) #1, !dbg !23
104+
; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C4:[0-9]+]]
105+
ret ptr %call.i.i, !dbg !26
106+
}
107+
108+
attributes #0 = { nobuiltin allocsize(0) }
109+
attributes #1 = { builtin allocsize(0) }
61110

62111
!llvm.dbg.cu = !{!0}
63112
!llvm.module.flags = !{!2, !3}
@@ -66,8 +115,40 @@ attributes #0 = { builtin allocsize(0) }
66115
!1 = !DIFile(filename: "undrift.cc", directory: "/")
67116
!2 = !{i32 7, !"Dwarf Version", i32 5}
68117
!3 = !{i32 2, !"Debug Info Version", i32 3}
69-
!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 55, unit: !0)
70-
!5 = !DILocation(line: 55, column: 53, scope: !4)
71-
!6 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barv", scope: !1, file: !1, line: 56, unit: !0)
72-
!7 = !DILocation(line: 55, column: 53, scope: !4, inlinedAt: !8)
73-
!8 = distinct !DILocation(line: 56, column: 22, scope: !6)
118+
!4 = !{}
119+
!5 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 56, type: !6, unit: !0)
120+
!6 = !DISubroutineType(types: !7)
121+
!7 = !{}
122+
!8 = !DILocation(line: 56, column: 22, scope: !5)
123+
!9 = !DILocation(line: 56, column: 15, scope: !5)
124+
!10 = distinct !DISubprogram(name: "leaf", linkageName: "_Z4leafv", scope: !1, file: !1, line: 58, type: !6, unit: !0)
125+
!11 = !DILocation(line: 58, column: 23, scope: !10)
126+
!12 = !DILocation(line: 58, column: 16, scope: !10)
127+
!13 = distinct !DISubprogram(name: "middle", linkageName: "_Z6middlev", scope: !1, file: !1, line: 59, type: !6, unit: !0)
128+
!14 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !15)
129+
!15 = distinct !DILocation(line: 59, column: 25, scope: !13)
130+
!16 = !DILocation(line: 59, column: 18, scope: !13)
131+
!17 = distinct !DISubprogram(name: "aaa", linkageName: "_Z3aaav", scope: !1, file: !1, line: 61, type: !6, unit: !0)
132+
!18 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !19)
133+
!19 = distinct !DILocation(line: 59, column: 25, scope: !13, inlinedAt: !20)
134+
!20 = distinct !DILocation(line: 61, column: 22, scope: !17)
135+
!21 = !DILocation(line: 61, column: 15, scope: !17)
136+
!22 = distinct !DISubprogram(name: "bbb", linkageName: "_Z3bbbv", scope: !1, file: !1, line: 62, type: !6, unit: !0)
137+
!23 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !24)
138+
!24 = distinct !DILocation(line: 59, column: 25, scope: !13, inlinedAt: !25)
139+
!25 = distinct !DILocation(line: 62, column: 22, scope: !22)
140+
!26 = !DILocation(line: 62, column: 15, scope: !22)
141+
142+
; CHECK: ![[M1]] = !{![[M1L:[0-9]+]], ![[M1R:[0-9]+]]}
143+
; CHECK: ![[M1L]] = !{![[M1LL:[0-9]+]], !"cold"}
144+
; CHECK: ![[M1LL]] = !{i64 -7165227774426488445, i64 6179674587295384169, i64 7749555980993309703}
145+
; CHECK: ![[M1R]] = !{![[M1RL:[0-9]+]], !"notcold"}
146+
; CHECK: ![[M1RL]] = !{i64 -7165227774426488445, i64 6179674587295384169, i64 -4748707735015301746}
147+
148+
; CHECK: ![[C1]] = !{i64 -7165227774426488445}
149+
150+
; CHECK: ![[C2]] = !{i64 6179674587295384169}
151+
152+
; CHECK: ![[C3]] = !{i64 -4748707735015301746}
153+
154+
; CHECK: ![[C4]] = !{i64 7749555980993309703}

0 commit comments

Comments
 (0)