CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
178 lines
6.4 KiB
Plaintext
178 lines
6.4 KiB
Plaintext
; REQUIRES: x86_64-linux
|
|
|
|
; Make sure that we can undrift the MemProf profile and annotate the IR
|
|
; accordingly.
|
|
;
|
|
; The IR was generated from:
|
|
;
|
|
; char *foo() { return ::new char[4]; }
|
|
; char *leaf() { return ::new char[4]; }
|
|
; char *middle() { return leaf(); }
|
|
; char *aaa() { return middle(); }
|
|
; char *bbb() { return middle(); }
|
|
;
|
|
; int main() {
|
|
; foo();
|
|
;
|
|
; char *a = aaa();
|
|
; char *b = bbb();
|
|
; a[0] = 'a';
|
|
; b[0] = 'b';
|
|
; delete[] a;
|
|
; sleep(10);
|
|
; delete[] b;
|
|
;
|
|
; return 0;
|
|
; }
|
|
|
|
; RUN: split-file %s %t
|
|
; RUN: llvm-profdata merge %t/memprof_undrift.yaml -o %t/memprof_undrift.memprofdata
|
|
; 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
|
|
|
|
;--- memprof_undrift.yaml
|
|
---
|
|
HeapProfileRecords:
|
|
- GUID: _Z3aaav
|
|
AllocSites: []
|
|
CallSites:
|
|
- Frames:
|
|
- { Function: _Z3aaav, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- GUID: _Z6middlev
|
|
AllocSites: []
|
|
CallSites:
|
|
- Frames:
|
|
- { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- GUID: _Z3foov
|
|
AllocSites:
|
|
- Callstack:
|
|
- { Function: _Z3foov, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
MemInfoBlock:
|
|
AllocCount: 1
|
|
TotalSize: 4
|
|
TotalLifetime: 10000
|
|
TotalLifetimeAccessDensity: 0
|
|
CallSites: []
|
|
- GUID: _Z4leafv
|
|
AllocSites:
|
|
- Callstack:
|
|
- { Function: _Z4leafv, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- { Function: _Z3aaav, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
MemInfoBlock:
|
|
AllocCount: 1
|
|
TotalSize: 4
|
|
TotalLifetime: 0
|
|
TotalLifetimeAccessDensity: 25000
|
|
- Callstack:
|
|
- { Function: _Z4leafv, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- { Function: _Z3bbbv, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
- { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
MemInfoBlock:
|
|
AllocCount: 1
|
|
TotalSize: 4
|
|
TotalLifetime: 10000
|
|
TotalLifetimeAccessDensity: 2
|
|
CallSites: []
|
|
- GUID: _Z3bbbv
|
|
AllocSites: []
|
|
CallSites:
|
|
- Frames:
|
|
- { Function: _Z3bbbv, LineOffset: 5, Column: 33, IsInlineFrame: false }
|
|
...
|
|
;--- memprof_undrift.ll
|
|
define dso_local ptr @_Z3foov() !dbg !5 {
|
|
; CHECK-LABEL: @_Z3foov()
|
|
entry:
|
|
%call = call ptr @_Znam(i64 4) #1, !dbg !8
|
|
; CHECK: call ptr @_Znam(i64 4) #[[ATTR:[0-9]+]]
|
|
ret ptr %call, !dbg !9
|
|
}
|
|
|
|
; Function Attrs: nobuiltin allocsize(0)
|
|
declare ptr @_Znam(i64 noundef) #0
|
|
|
|
define dso_local ptr @_Z4leafv() !dbg !10 {
|
|
; CHECK-LABEL: @_Z4leafv()
|
|
entry:
|
|
%call = call ptr @_Znam(i64 4) #1, !dbg !11
|
|
; CHECK: call ptr @_Znam(i64 4) {{.*}}, !memprof ![[M1:[0-9]+]], !callsite ![[C1:[0-9]+]]
|
|
ret ptr %call, !dbg !12
|
|
}
|
|
|
|
define dso_local ptr @_Z6middlev() !dbg !13 {
|
|
; CHECK-LABEL: @_Z6middlev()
|
|
entry:
|
|
%call.i = call ptr @_Znam(i64 4) #1, !dbg !14
|
|
; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C2:[0-9]+]]
|
|
ret ptr %call.i, !dbg !16
|
|
}
|
|
|
|
define dso_local ptr @_Z3aaav() !dbg !17 {
|
|
; CHECK-LABEL: @_Z3aaav()
|
|
entry:
|
|
%call.i.i = call ptr @_Znam(i64 4) #1, !dbg !18
|
|
; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C3:[0-9]+]]
|
|
ret ptr %call.i.i, !dbg !21
|
|
}
|
|
|
|
define dso_local ptr @_Z3bbbv() !dbg !22 {
|
|
; CHECK-LABEL: @_Z3bbbv()
|
|
entry:
|
|
%call.i.i = call ptr @_Znam(i64 4) #1, !dbg !23
|
|
; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C4:[0-9]+]]
|
|
ret ptr %call.i.i, !dbg !26
|
|
}
|
|
|
|
attributes #0 = { nobuiltin allocsize(0) }
|
|
attributes #1 = { builtin allocsize(0) }
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!2, !3}
|
|
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1)
|
|
!1 = !DIFile(filename: "undrift.cc", directory: "/")
|
|
!2 = !{i32 7, !"Dwarf Version", i32 5}
|
|
!3 = !{i32 2, !"Debug Info Version", i32 3}
|
|
!4 = !{}
|
|
!5 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 56, type: !6, unit: !0)
|
|
!6 = !DISubroutineType(types: !7)
|
|
!7 = !{}
|
|
!8 = !DILocation(line: 56, column: 22, scope: !5)
|
|
!9 = !DILocation(line: 56, column: 15, scope: !5)
|
|
!10 = distinct !DISubprogram(name: "leaf", linkageName: "_Z4leafv", scope: !1, file: !1, line: 58, type: !6, unit: !0)
|
|
!11 = !DILocation(line: 58, column: 23, scope: !10)
|
|
!12 = !DILocation(line: 58, column: 16, scope: !10)
|
|
!13 = distinct !DISubprogram(name: "middle", linkageName: "_Z6middlev", scope: !1, file: !1, line: 59, type: !6, unit: !0)
|
|
!14 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !15)
|
|
!15 = distinct !DILocation(line: 59, column: 25, scope: !13)
|
|
!16 = !DILocation(line: 59, column: 18, scope: !13)
|
|
!17 = distinct !DISubprogram(name: "aaa", linkageName: "_Z3aaav", scope: !1, file: !1, line: 61, type: !6, unit: !0)
|
|
!18 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !19)
|
|
!19 = distinct !DILocation(line: 59, column: 25, scope: !13, inlinedAt: !20)
|
|
!20 = distinct !DILocation(line: 61, column: 22, scope: !17)
|
|
!21 = !DILocation(line: 61, column: 15, scope: !17)
|
|
!22 = distinct !DISubprogram(name: "bbb", linkageName: "_Z3bbbv", scope: !1, file: !1, line: 62, type: !6, unit: !0)
|
|
!23 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !24)
|
|
!24 = distinct !DILocation(line: 59, column: 25, scope: !13, inlinedAt: !25)
|
|
!25 = distinct !DILocation(line: 62, column: 22, scope: !22)
|
|
!26 = !DILocation(line: 62, column: 15, scope: !22)
|
|
|
|
; CHECK: attributes #[[ATTR]] = { builtin allocsize(0) "memprof"="cold" }
|
|
|
|
; CHECK: ![[M1]] = !{![[M1L:[0-9]+]], ![[M1R:[0-9]+]]}
|
|
; CHECK: ![[M1L]] = !{![[M1LL:[0-9]+]], !"cold"}
|
|
; CHECK: ![[M1LL]] = !{i64 -7165227774426488445, i64 6179674587295384169, i64 7749555980993309703}
|
|
; CHECK: ![[M1R]] = !{![[M1RL:[0-9]+]], !"notcold"}
|
|
; CHECK: ![[M1RL]] = !{i64 -7165227774426488445, i64 6179674587295384169, i64 -4748707735015301746}
|
|
|
|
; CHECK: ![[C1]] = !{i64 -7165227774426488445}
|
|
|
|
; CHECK: ![[C2]] = !{i64 6179674587295384169}
|
|
|
|
; CHECK: ![[C3]] = !{i64 -4748707735015301746}
|
|
|
|
; CHECK: ![[C4]] = !{i64 7749555980993309703}
|