]> git.proxmox.com Git - rustc.git/blame - src/compiler-rt/test/profile/instrprof-basic.c
New upstream version 1.19.0+dfsg3
[rustc.git] / src / compiler-rt / test / profile / instrprof-basic.c
CommitLineData
1a4d82fc
JJ
1// RUN: %clang_profgen -o %t -O3 %s
2// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
3// RUN: llvm-profdata merge -o %t.profdata %t.profraw
5bcae85e
SL
4// RUN: %clang_profuse=%t.profdata -o - -S -emit-llvm %s | FileCheck %s --check-prefix=COMMON --check-prefix=ORIG
5//
7cac9316
XL
6// RUN: rm -fr %t.dir1
7// RUN: mkdir -p %t.dir1
8// RUN: env LLVM_PROFILE_FILE=%t.dir1/profraw_e_%1m %run %t
9// RUN: env LLVM_PROFILE_FILE=%t.dir1/profraw_e_%1m %run %t
10// RUN: llvm-profdata merge -o %t.em.profdata %t.dir1
5bcae85e
SL
11// RUN: %clang_profuse=%t.em.profdata -o - -S -emit-llvm %s | FileCheck %s --check-prefix=COMMON --check-prefix=MERGE
12//
7cac9316
XL
13// RUN: rm -fr %t.dir2
14// RUN: mkdir -p %t.dir2
15// RUN: %clang_profgen=%t.dir2/%m.profraw -o %t.merge -O3 %s
5bcae85e
SL
16// RUN: %run %t.merge
17// RUN: %run %t.merge
7cac9316 18// RUN: llvm-profdata merge -o %t.m.profdata %t.dir2/
5bcae85e 19// RUN: %clang_profuse=%t.m.profdata -o - -S -emit-llvm %s | FileCheck %s --check-prefix=COMMON --check-prefix=MERGE
7cac9316
XL
20//
21// Test that merging is enabled by default with -fprofile-generate=
22// RUN: rm -fr %t.dir3
23// RUN: mkdir -p %t.dir3
24// RUN: %clang_pgogen=%t.dir3/ -o %t.merge3 -O0 %s
25// RUN: %run %t.merge3
26// RUN: %run %t.merge3
27// RUN: %run %t.merge3
28// RUN: %run %t.merge3
29// RUN: llvm-profdata merge -o %t.m3.profdata %t.dir3/
30// RUN: %clang_profuse=%t.m3.profdata -O0 -o - -S -emit-llvm %s | FileCheck %s --check-prefix=COMMON --check-prefix=PGOMERGE
31//
32// Test that merging is enabled by default with -fprofile-generate
33// RUN: rm -fr %t.dir4
34// RUN: mkdir -p %t.dir4
35// RUN: %clang_pgogen -o %t.dir4/merge4 -O0 %s
36// RUN: cd %t.dir4
37// RUN: %run %t.dir4/merge4
38// RUN: %run %t.dir4/merge4
39// RUN: %run %t.dir4/merge4
40// RUN: %run %t.dir4/merge4
41// RUN: rm -f %t.dir4/merge4
42// RUN: llvm-profdata merge -o %t.m4.profdata ./
43// RUN: %clang_profuse=%t.m4.profdata -O0 -o - -S -emit-llvm %s | FileCheck %s --check-prefix=COMMON --check-prefix=PGOMERGE
1a4d82fc 44
92a42be0 45int begin(int i) {
5bcae85e 46 // COMMON: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PD1:[0-9]+]]
92a42be0
SL
47 if (i)
48 return 0;
49 return 1;
50}
51
52int end(int i) {
5bcae85e 53 // COMMON: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PD2:[0-9]+]]
92a42be0
SL
54 if (i)
55 return 0;
56 return 1;
57}
58
1a4d82fc 59int main(int argc, const char *argv[]) {
92a42be0
SL
60 begin(0);
61 end(1);
62
5bcae85e 63 // COMMON: br i1 %{{.*}}, label %{{.*}}, label %{{.*}}, !prof ![[PD2:[0-9]+]]
1a4d82fc
JJ
64 if (argc)
65 return 0;
66 return 1;
67}
92a42be0 68
5bcae85e
SL
69// ORIG: ![[PD1]] = !{!"branch_weights", i32 1, i32 2}
70// ORIG: ![[PD2]] = !{!"branch_weights", i32 2, i32 1}
71// MERGE: ![[PD1]] = !{!"branch_weights", i32 1, i32 3}
72// MERGE: ![[PD2]] = !{!"branch_weights", i32 3, i32 1}
7cac9316
XL
73// PGOMERGE: ![[PD1]] = !{!"branch_weights", i32 0, i32 4}
74// PGOMERGE: ![[PD2]] = !{!"branch_weights", i32 4, i32 0}