| ; REQUIRES: x86_64-linux |
| ; |
| ; Check that we don't prune the contextual profile, unless the module name |
| ; matches the guid of the root. |
| ; |
| ; RUN: rm -rf %t |
| ; RUN: split-file %s %t |
| ; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata |
| ; |
| ; RUN: cp %t/example.ll %t/1234.ll |
| ; RUN: cp %t/example.ll %t/0x4d2.ll |
| ; |
| ; RUN: opt -passes='require<ctx-prof-analysis>,print<ctx-prof-analysis>' \ |
| ; RUN: -use-ctx-profile=%t/profile.ctxprofdata \ |
| ; RUN: -ctx-profile-printer-level=everything \ |
| ; RUN: %t/example.ll -S 2>&1 | FileCheck %s |
| |
| ; RUN: opt -passes='require<ctx-prof-analysis>,print<ctx-prof-analysis>' \ |
| ; RUN: -use-ctx-profile=%t/profile.ctxprofdata \ |
| ; RUN: -ctx-profile-printer-level=everything \ |
| ; RUN: %t/not-matching.ll -S 2>&1 | FileCheck %s |
| |
| ; RUN: opt -passes='require<ctx-prof-analysis>,print<ctx-prof-analysis>' \ |
| ; RUN: -use-ctx-profile=%t/profile.ctxprofdata \ |
| ; RUN: -ctx-profile-printer-level=everything \ |
| ; RUN: %t/0x4d2.ll -S 2>&1 | FileCheck %s --check-prefix=PRUNED |
| |
| ; CHECK: Contexts: |
| ; CHECK: - Guid: 1234 |
| ; CHECK: - Guid: 5678 |
| ; CHECK: FlatProfiles: |
| ; PRUNED-NOT: - Guid: 5678 |
| ; PRUNED-NOT: FlatProfiles |
| ; |
| ; pick a large GUID that would be negative, if signed, to test a few ways the |
| ; file name may be formatted. |
| ;--- profile.yaml |
| Contexts: |
| - Guid: 1234 |
| TotalRootEntryCount: 24 |
| Counters: [9] |
| Callsites: - |
| - Guid: 1000 |
| Counters: [6, 7] |
| |
| - Guid: 5678 |
| TotalRootEntryCount: 24 |
| Counters: [9] |
| Callsites: - |
| - Guid: 1000 |
| Counters: [6, 7] |
| FlatProfiles: |
| - Guid: 777 |
| Counters: [2] |
| ;--- example.ll |
| define void @an_entrypoint(i32 %a) !guid !0 { |
| ret void |
| } |
| |
| attributes #0 = { noinline } |
| !0 = !{ i64 1234 } |
| |
| ;--- not-matching.ll |
| define void @an_entrypoint(i32 %a) !guid !0 { |
| ret void |
| } |
| |
| attributes #0 = { noinline } |
| !0 = !{ i64 1000 } |