## Tests stale block matching with pseudo probes. # REQUIRES: system-linux # RUN: split-file %s %t # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %t/main.s -o %t.o # RUN: %clang %cflags %t.o -o %t.exe -Wl,-q -nostdlib # RUN: llvm-bolt %t.exe -o %t.out --data %t/yaml -v=2 \ # RUN: --print-cfg --funcs=main --infer-stale-profile \ # RUN: --stale-matching-with-pseudo-probes 2>&1 | FileCheck %s # CHECK: BOLT-INFO: inference found an exact pseudo probe match for 100.00% of basic blocks (1 out of 1 stale) #--- main.s .text .globl main # -- Begin function main .p2align 4, 0x90 .type main,@function main: # @main # %bb.0: pushq %rbp movq %rsp, %rbp movl $0, -4(%rbp) .pseudoprobe 15822663052811949562 1 0 0 main xorl %eax, %eax popq %rbp retq .Lfunc_end0: .size main, .Lfunc_end0-main # -- End function .section .pseudo_probe_desc,"",@progbits .quad -2624081020897602054 .quad 4294967295 .byte 4 .ascii "main" #--- yaml --- header: profile-version: 1 binary-name: 'match-blocks-with-pseudo-probes.s.tmp.exe' binary-build-id: '' profile-flags: [ lbr ] profile-origin: branch profile reader profile-events: '' dfs-order: false hash-func: xxh3 functions: - name: main fid: 0 hash: 0x0000000000000001 exec: 1 nblocks: 6 blocks: - bid: 1 hash: 0xFFFFFFFFFFFFFFF1 insns: 1 succ: [ { bid: 3, cnt: 1} ] probes: [ { blk: [ 1 ] } ] inline_tree: [ { g: 0 } ] pseudo_probe_desc: gs: [ 0xDB956436E78DD5FA ] gh: [ 0 ] hs: [ 0xFFFFFFFF ]