xref: /llvm-project/llvm/test/MC/MachO/cgprofile.ll (revision 270f63b84a612dfa438df3d59903bb76fa0c7740)
1; RUN: llc -filetype=asm %s -o - -mtriple x86_64-apple-darwin | FileCheck %s
2; RUN: llc -filetype=obj %s -o %t -mtriple x86_64-apple-darwin
3; RUN: llvm-readobj --cg-profile %t | FileCheck %s --check-prefix=OBJ
4
5declare void @b()
6
7define void @a() {
8  call void @b()
9  ret void
10}
11
12define void @freq(i1 %cond) {
13  br i1 %cond, label %A, label %B
14A:
15  call void @a();
16  ret void
17B:
18  call void @b();
19  ret void
20}
21
22!llvm.module.flags = !{!0}
23
24!0 = !{i32 5, !"CG Profile", !1}
25!1 = !{!2, !3, !4, !5}
26!2 = !{ptr @a, ptr @b, i64 32}
27!3 = !{ptr @freq, ptr @a, i64 11}
28!4 = !{ptr @freq, ptr @b, i64 20}
29!5 = !{ptr @freq, null, i64 20}
30
31; CHECK: .cg_profile _a, _b, 32
32; CHECK: .cg_profile _freq, _a, 11
33; CHECK: .cg_profile _freq, _b, 20
34
35; OBJ: CGProfile [
36; OBJ:  CGProfileEntry {
37; OBJ:    From: _a
38; OBJ:    To: _b
39; OBJ:    Weight: 32
40; OBJ:  }
41; OBJ:  CGProfileEntry {
42; OBJ:    From: _freq
43; OBJ:    To: _a
44; OBJ:    Weight: 11
45; OBJ:  }
46; OBJ:  CGProfileEntry {
47; OBJ:    From: _freq
48; OBJ:    To: _b
49; OBJ:    Weight: 20
50; OBJ:  }
51; OBJ:]
52