## 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: '<unknown>'
  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 ]
