1 // REQUIRES: linux
2 // RUN: %clang_profgen -Wl,--build-id=none -O2 -o %t %s
3 // RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
4 // RUN: llvm-profdata show --binary-ids  %t.profraw > %t.out
5 // RUN: FileCheck %s --check-prefix=NO-BINARY-ID < %t.out
6 // RUN: llvm-profdata merge -o %t.profdata %t.profraw
7 
8 // RUN: %clang_profgen -Wl,--build-id -O2 -o %t %s
9 // RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
10 // RUN: llvm-profdata show --binary-ids  %t.profraw > %t.profraw.out
11 // RUN: FileCheck %s --check-prefix=BINARY-ID-RAW-PROF < %t.profraw.out
12 
13 // RUN: rm -rf %t.profdir
14 // RUN: env LLVM_PROFILE_FILE=%t.profdir/default_%m.profraw %run %t
15 // RUN: env LLVM_PROFILE_FILE=%t.profdir/default_%m.profraw %run %t
16 // RUN: env LLVM_PROFILE_FILE=%t.profdir/default_%m.profraw %run %t
17 // RUN: llvm-profdata show --binary-ids  %t.profdir/default_*.profraw > %t.profraw.out
18 // RUN: FileCheck %s --check-prefix=BINARY-ID-MERGE-PROF < %t.profraw.out
19 
foo()20 void foo() {
21 }
22 
bar()23 void bar() {
24 }
25 
main()26 int main() {
27   foo();
28   bar();
29   return 0;
30 }
31 
32 // NO-BINARY-ID: Instrumentation level: Front-end
33 // NO-BINARY-ID-NEXT: Total functions: 3
34 // NO-BINARY-ID-NEXT: Maximum function count: 1
35 // NO-BINARY-ID-NEXT: Maximum internal block count: 0
36 // NO-BINARY-ID-NOT: Binary IDs:
37 
38 // BINARY-ID-RAW-PROF: Instrumentation level: Front-end
39 // BINARY-ID-RAW-PROF-NEXT: Total functions: 3
40 // BINARY-ID-RAW-PROF-NEXT: Maximum function count: 1
41 // BINARY-ID-RAW-PROF-NEXT: Maximum internal block count: 0
42 // BINARY-ID-RAW-PROF-NEXT: Binary IDs:
43 // BINARY-ID-RAW-PROF-NEXT: {{[0-9a-f]+}}
44 
45 // BINARY-ID-MERGE-PROF: Instrumentation level: Front-end
46 // BINARY-ID-MERGE-PROF-NEXT: Total functions: 3
47 // BINARY-ID-MERGE-PROF-NEXT: Maximum function count: 3
48 // BINARY-ID-MERGE-PROF-NEXT: Maximum internal block count: 0
49 // BINARY-ID-MERGE-PROF-NEXT: Binary IDs:
50 // BINARY-ID-MERGE-PROF-NEXT: {{[0-9a-f]+}}
51