llvm/bolt/test/X86/match-functions-with-call-graph.test

## Tests blocks matching by called function names in inferStaleProfile.

# REQUIRES: system-linux
# RUN: split-file %s %t
# RUN: %clang %cflags %t/main.cpp -o %t.exe -Wl,-q -nostdlib
# RUN: llvm-bolt %t.exe -o %t.out --data %t/yaml --profile-ignore-hash -v=1 \
# RUN:   --dyno-stats --print-cfg --infer-stale-profile=1 --match-with-call-graph 2>&1 | FileCheck %s

# CHECK: BOLT-INFO: matched 1 functions with call graph

#--- main.cpp
void foo() {}

void bar() {}

void qux() {
    foo();
    bar();
}

void fred() {
    foo();
    qux();
    bar();
    bar();
    foo();
}

int main() {
    return 0;
}

#--- yaml
---
header:
  profile-version: 1
  binary-name:     'match-functions-with-calls-as-anchors.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:            0x0000000000000001
        insns:           1
        succ:            [ { bid: 3, cnt: 1} ]
  - name:            _Z3foov
    fid:             1
    hash:            0x0000000000000002
    exec:            1
    nblocks:         6
    blocks:
      - bid:             1
        hash:            0x0000000000000002
        insns:           1
        succ:            [ { bid: 3, cnt: 1} ]

  - name:            _Z3barv
    fid:             2
    hash:            0x0000000000000003
    exec:            1
    nblocks:         6
    blocks:
      - bid:             1
        hash:            0x0000000000000003
        insns:           1
        succ:            [ { bid: 3, cnt: 1} ]
  - name:            _Z3quxv
    fid:             3
    hash:            0x0000000000000004
    exec:            4
    nblocks:         6
    blocks:
      - bid:             1
        hash:            0x0000000000000004
        insns:           1
        succ:            [ { bid: 3, cnt: 1} ]
        calls:           [ { off : 0, fid : 1, cnt : 0},
                           { off : 0, fid : 2, cnt : 0} ]
  - name:            _Z4bazv
    fid:             4
    hash:            0x0000000000000005
    exec:            1
    nblocks:         6
    blocks:
      - bid:             1
        hash:            0x0000000000000005
        insns:           1
        succ:            [ { bid: 3, cnt: 1} ]
        calls:           [ { off : 0, fid : 3, cnt : 0},
                           { off : 0, fid : 1, cnt : 0},
                           { off : 0, fid : 2, cnt : 0},
                           { off : 0, fid : 1, cnt : 0},
                           { off : 0, fid : 2, cnt : 0} ]
...