xref: /llvm-project/llvm/test/Transforms/PGOProfile/memprof_annotate_yaml.test (revision 08379d6430106094aeb24ac02b82ce8e89799e9e)
1*08379d64SKazu Hirata; REQUIRES: x86_64-linux
2*08379d64SKazu Hirata
3*08379d64SKazu Hirata; Make sure that we can ingest the MemProf profile in YAML and
4*08379d64SKazu Hirata; annotate a call to new as cold.
5*08379d64SKazu Hirata
6*08379d64SKazu Hirata; RUN: split-file %s %t
7*08379d64SKazu Hirata; RUN: llvm-profdata merge %t/memprof_annotate_yaml.yaml -o %t/memprof_annotate_yaml.memprofdata
8*08379d64SKazu Hirata; RUN: opt < %t/memprof_annotate_yaml.ll -passes='memprof-use<profile-filename=%t/memprof_annotate_yaml.memprofdata>' -S 2>&1 | FileCheck %s
9*08379d64SKazu Hirata
10*08379d64SKazu Hirata;--- memprof_annotate_yaml.yaml
11*08379d64SKazu Hirata---
12*08379d64SKazu HirataHeapProfileRecords:
13*08379d64SKazu Hirata  - GUID:            _Z3foov
14*08379d64SKazu Hirata    AllocSites:
15*08379d64SKazu Hirata      - Callstack:
16*08379d64SKazu Hirata          - { Function: _Z3foov, LineOffset: 0, Column: 22, IsInlineFrame: false }
17*08379d64SKazu Hirata          - { Function: main, LineOffset: 2, Column: 5, IsInlineFrame: false }
18*08379d64SKazu Hirata        MemInfoBlock:
19*08379d64SKazu Hirata          # With these numbers, llvm::memprof::getAllocType will determine that
20*08379d64SKazu Hirata          # the call to new is cold.  See MemoryProfileInfo.cpp for details.
21*08379d64SKazu Hirata          TotalSize:                  400
22*08379d64SKazu Hirata          AllocCount:                 1
23*08379d64SKazu Hirata          TotalLifetimeAccessDensity: 1
24*08379d64SKazu Hirata          TotalLifetime:              1000000
25*08379d64SKazu Hirata    CallSites:       []
26*08379d64SKazu Hirata...
27*08379d64SKazu Hirata;--- memprof_annotate_yaml.ll
28*08379d64SKazu Hiratadefine dso_local ptr @_Z3foov() !dbg !4 {
29*08379d64SKazu Hirataentry:
30*08379d64SKazu Hirata  %call = call ptr @_Znam(i64 4) #0, !dbg !5
31*08379d64SKazu Hirata; CHECK: call ptr @_Znam(i64 4) #[[ATTR:[0-9]+]],
32*08379d64SKazu Hirata  ret ptr %call
33*08379d64SKazu Hirata}
34*08379d64SKazu Hirata
35*08379d64SKazu Hiratadeclare ptr @_Znam(i64)
36*08379d64SKazu Hirata
37*08379d64SKazu Hirataattributes #0 = { builtin allocsize(0) }
38*08379d64SKazu Hirata; CHECK: attributes #[[ATTR]] = {{.*}} "memprof"="cold"
39*08379d64SKazu Hirata
40*08379d64SKazu Hirata!llvm.module.flags = !{!2, !3}
41*08379d64SKazu Hirata
42*08379d64SKazu Hirata!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1)
43*08379d64SKazu Hirata!1 = !DIFile(filename: "t", directory: "/")
44*08379d64SKazu Hirata!2 = !{i32 7, !"Dwarf Version", i32 5}
45*08379d64SKazu Hirata!3 = !{i32 2, !"Debug Info Version", i32 3}
46*08379d64SKazu Hirata!4 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 1, unit: !0)
47*08379d64SKazu Hirata!5 = !DILocation(line: 1, column: 22, scope: !4)
48