brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 5529c77 Raw
178 lines · plain
1; REQUIRES: x86_64-linux2 3; Make sure that we can undrift the MemProf profile and annotate the IR4; accordingly.5;6; The IR was generated from:7;8; char *foo() { return ::new char[4]; }9; char *leaf() { return ::new char[4]; }10; char *middle() { return leaf(); }11; char *aaa() { return middle(); }12; char *bbb() { return middle(); }13;14; int main() {15;   foo();16;17;   char *a = aaa();18;   char *b = bbb();19;   a[0] = 'a';20;   b[0] = 'b';21;   delete[] a;22;   sleep(10);23;   delete[] b;24;25;   return 0;26; }27 28; RUN: split-file %s %t29; RUN: llvm-profdata merge %t/memprof_undrift.yaml -o %t/memprof_undrift.memprofdata30; 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 %s31 32;--- memprof_undrift.yaml33---34HeapProfileRecords:35  - GUID:            _Z3aaav36    AllocSites:      []37    CallSites:38      - Frames:39        - { Function: _Z3aaav, LineOffset: 5, Column: 33, IsInlineFrame: false }40  - GUID:            _Z6middlev41    AllocSites:      []42    CallSites:43      - Frames:44        - { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }45  - GUID:            _Z3foov46    AllocSites:47      - Callstack:48          - { Function: _Z3foov, LineOffset: 5, Column: 33, IsInlineFrame: false }49          - { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }50        MemInfoBlock:51          AllocCount:      152          TotalSize:       453          TotalLifetime:   1000054          TotalLifetimeAccessDensity: 055    CallSites:       []56  - GUID:            _Z4leafv57    AllocSites:58      - Callstack:59          - { Function: _Z4leafv, LineOffset: 5, Column: 33, IsInlineFrame: false }60          - { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }61          - { Function: _Z3aaav, LineOffset: 5, Column: 33, IsInlineFrame: false }62          - { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }63        MemInfoBlock:64          AllocCount:      165          TotalSize:       466          TotalLifetime:   067          TotalLifetimeAccessDensity: 2500068      - Callstack:69          - { Function: _Z4leafv, LineOffset: 5, Column: 33, IsInlineFrame: false }70          - { Function: _Z6middlev, LineOffset: 5, Column: 33, IsInlineFrame: false }71          - { Function: _Z3bbbv, LineOffset: 5, Column: 33, IsInlineFrame: false }72          - { Function: main, LineOffset: 5, Column: 33, IsInlineFrame: false }73        MemInfoBlock:74          AllocCount:      175          TotalSize:       476          TotalLifetime:   1000077          TotalLifetimeAccessDensity: 278    CallSites:       []79  - GUID:            _Z3bbbv80    AllocSites:      []81    CallSites:82      - Frames:83        - { Function: _Z3bbbv, LineOffset: 5, Column: 33, IsInlineFrame: false }84...85;--- memprof_undrift.ll86define dso_local ptr @_Z3foov() !dbg !5 {87; CHECK-LABEL: @_Z3foov()88entry:89  %call = call ptr @_Znam(i64 4) #1, !dbg !890; CHECK: call ptr @_Znam(i64 4) #[[ATTR:[0-9]+]]91  ret ptr %call, !dbg !992}93 94; Function Attrs: nobuiltin allocsize(0)95declare ptr @_Znam(i64 noundef) #096 97define dso_local ptr @_Z4leafv() !dbg !10 {98; CHECK-LABEL: @_Z4leafv()99entry:100  %call = call ptr @_Znam(i64 4) #1, !dbg !11101; CHECK: call ptr @_Znam(i64 4) {{.*}}, !memprof ![[M1:[0-9]+]], !callsite ![[C1:[0-9]+]]102  ret ptr %call, !dbg !12103}104 105define dso_local ptr @_Z6middlev() !dbg !13 {106; CHECK-LABEL: @_Z6middlev()107entry:108  %call.i = call ptr @_Znam(i64 4) #1, !dbg !14109; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C2:[0-9]+]]110  ret ptr %call.i, !dbg !16111}112 113define dso_local ptr @_Z3aaav() !dbg !17 {114; CHECK-LABEL: @_Z3aaav()115entry:116  %call.i.i = call ptr @_Znam(i64 4) #1, !dbg !18117; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C3:[0-9]+]]118  ret ptr %call.i.i, !dbg !21119}120 121define dso_local ptr @_Z3bbbv() !dbg !22 {122; CHECK-LABEL: @_Z3bbbv()123entry:124  %call.i.i = call ptr @_Znam(i64 4) #1, !dbg !23125; CHECK: call ptr @_Znam(i64 4) {{.*}}, !callsite ![[C4:[0-9]+]]126  ret ptr %call.i.i, !dbg !26127}128 129attributes #0 = { nobuiltin allocsize(0) }130attributes #1 = { builtin allocsize(0) }131 132!llvm.dbg.cu = !{!0}133!llvm.module.flags = !{!2, !3}134 135!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1)136!1 = !DIFile(filename: "undrift.cc", directory: "/")137!2 = !{i32 7, !"Dwarf Version", i32 5}138!3 = !{i32 2, !"Debug Info Version", i32 3}139!4 = !{}140!5 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 56, type: !6, unit: !0)141!6 = !DISubroutineType(types: !7)142!7 = !{}143!8 = !DILocation(line: 56, column: 22, scope: !5)144!9 = !DILocation(line: 56, column: 15, scope: !5)145!10 = distinct !DISubprogram(name: "leaf", linkageName: "_Z4leafv", scope: !1, file: !1, line: 58, type: !6, unit: !0)146!11 = !DILocation(line: 58, column: 23, scope: !10)147!12 = !DILocation(line: 58, column: 16, scope: !10)148!13 = distinct !DISubprogram(name: "middle", linkageName: "_Z6middlev", scope: !1, file: !1, line: 59, type: !6, unit: !0)149!14 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !15)150!15 = distinct !DILocation(line: 59, column: 25, scope: !13)151!16 = !DILocation(line: 59, column: 18, scope: !13)152!17 = distinct !DISubprogram(name: "aaa", linkageName: "_Z3aaav", scope: !1, file: !1, line: 61, type: !6, unit: !0)153!18 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !19)154!19 = distinct !DILocation(line: 59, column: 25, scope: !13, inlinedAt: !20)155!20 = distinct !DILocation(line: 61, column: 22, scope: !17)156!21 = !DILocation(line: 61, column: 15, scope: !17)157!22 = distinct !DISubprogram(name: "bbb", linkageName: "_Z3bbbv", scope: !1, file: !1, line: 62, type: !6, unit: !0)158!23 = !DILocation(line: 58, column: 23, scope: !10, inlinedAt: !24)159!24 = distinct !DILocation(line: 59, column: 25, scope: !13, inlinedAt: !25)160!25 = distinct !DILocation(line: 62, column: 22, scope: !22)161!26 = !DILocation(line: 62, column: 15, scope: !22)162 163; CHECK: attributes #[[ATTR]] = { builtin allocsize(0) "memprof"="cold" }164 165; CHECK: ![[M1]] = !{![[M1L:[0-9]+]], ![[M1R:[0-9]+]]}166; CHECK: ![[M1L]] = !{![[M1LL:[0-9]+]], !"cold"}167; CHECK: ![[M1LL]] = !{i64 -7165227774426488445, i64 6179674587295384169, i64 7749555980993309703}168; CHECK: ![[M1R]] = !{![[M1RL:[0-9]+]], !"notcold"}169; CHECK: ![[M1RL]] = !{i64 -7165227774426488445, i64 6179674587295384169, i64 -4748707735015301746}170 171; CHECK: ![[C1]] = !{i64 -7165227774426488445}172 173; CHECK: ![[C2]] = !{i64 6179674587295384169}174 175; CHECK: ![[C3]] = !{i64 -4748707735015301746}176 177; CHECK: ![[C4]] = !{i64 7749555980993309703}178