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 20 void foo() { 21 } 22 23 void bar() { 24 } 25 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