llvm/bolt/test/X86/profile-passthrough-block.test

## Test YAMLProfileReader support for pass-through blocks in non-matching edges:
## match the profile edge A -> C to the CFG with blocks A -> B -> C.

# 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 --profile-ignore-hash -v=1 \
# RUN:   --print-cfg 2>&1 | FileCheck %s

# CHECK: Binary Function "main" after building cfg
# CHECK: Profile Acc : 100.0%
# CHECK-NOT: BOLT-WARNING: no successor for block .LFT0 that matches index 3 or block .Ltmp0

#--- main.s
.globl main
.type	main, @function
main:
  .cfi_startproc
.LBB00:
  pushq   %rbp
  movq    %rsp, %rbp
  subq    $16, %rsp
  testq   %rax, %rax
  js      .LBB03
.LBB01:
  jne     .LBB04
.LBB02:
  nop
.LBB03:
  xorl    %eax, %eax
  addq    $16, %rsp
  popq    %rbp
  retq
.LBB04:
  xorl    %eax, %eax
  addq    $16, %rsp
  popq    %rbp
  retq
## For relocations against .text
.LBB05:
  call exit
  .cfi_endproc
  .size	main, .-main

#--- yaml
---
header:
  profile-version: 1
  binary-name:     'profile-passthrough-block.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:            0x0000000000000000
    exec:            1
    nblocks:         6
    blocks:
      - bid:             1
        insns:           1
        succ:            [ { bid: 3, cnt: 1} ]
...