This fixes support for merging profiles which broke as a consequence
of e50a38840d. The issue was missing
adjustment in merge logic to account for the binary IDs which are
now included in the raw profile just after header.
In addition, this change also:
* Includes the version in module signature that's used for merging
to avoid accidental attempts to merge incompatible profiles.
* Moves the binary IDs size field after version field in the header
as was suggested in the review.
Differential Revision: https://reviews.llvm.org/D107143
51 lines
1.8 KiB
C
51 lines
1.8 KiB
C
// REQUIRES: linux
|
|
// RUN: %clang_profgen -Wl,--build-id=none -O2 -o %t %s
|
|
// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
|
|
// RUN: llvm-profdata show --binary-ids %t.profraw > %t.out
|
|
// RUN: FileCheck %s --check-prefix=NO-BINARY-ID < %t.out
|
|
// RUN: llvm-profdata merge -o %t.profdata %t.profraw
|
|
|
|
// RUN: %clang_profgen -Wl,--build-id -O2 -o %t %s
|
|
// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
|
|
// RUN: llvm-profdata show --binary-ids %t.profraw > %t.profraw.out
|
|
// RUN: FileCheck %s --check-prefix=BINARY-ID-RAW-PROF < %t.profraw.out
|
|
|
|
// RUN: rm -rf %t.profdir
|
|
// RUN: env LLVM_PROFILE_FILE=%t.profdir/default_%m.profraw %run %t
|
|
// RUN: env LLVM_PROFILE_FILE=%t.profdir/default_%m.profraw %run %t
|
|
// RUN: env LLVM_PROFILE_FILE=%t.profdir/default_%m.profraw %run %t
|
|
// RUN: llvm-profdata show --binary-ids %t.profdir/default_*.profraw > %t.profraw.out
|
|
// RUN: FileCheck %s --check-prefix=BINARY-ID-MERGE-PROF < %t.profraw.out
|
|
|
|
void foo() {
|
|
}
|
|
|
|
void bar() {
|
|
}
|
|
|
|
int main() {
|
|
foo();
|
|
bar();
|
|
return 0;
|
|
}
|
|
|
|
// NO-BINARY-ID: Instrumentation level: Front-end
|
|
// NO-BINARY-ID-NEXT: Total functions: 3
|
|
// NO-BINARY-ID-NEXT: Maximum function count: 1
|
|
// NO-BINARY-ID-NEXT: Maximum internal block count: 0
|
|
// NO-BINARY-ID-NOT: Binary IDs:
|
|
|
|
// BINARY-ID-RAW-PROF: Instrumentation level: Front-end
|
|
// BINARY-ID-RAW-PROF-NEXT: Total functions: 3
|
|
// BINARY-ID-RAW-PROF-NEXT: Maximum function count: 1
|
|
// BINARY-ID-RAW-PROF-NEXT: Maximum internal block count: 0
|
|
// BINARY-ID-RAW-PROF-NEXT: Binary IDs:
|
|
// BINARY-ID-RAW-PROF-NEXT: {{[0-9a-f]+}}
|
|
|
|
// BINARY-ID-MERGE-PROF: Instrumentation level: Front-end
|
|
// BINARY-ID-MERGE-PROF-NEXT: Total functions: 3
|
|
// BINARY-ID-MERGE-PROF-NEXT: Maximum function count: 3
|
|
// BINARY-ID-MERGE-PROF-NEXT: Maximum internal block count: 0
|
|
// BINARY-ID-MERGE-PROF-NEXT: Binary IDs:
|
|
// BINARY-ID-MERGE-PROF-NEXT: {{[0-9a-f]+}}
|