| ## Check that BOLT in lite mode processes fragments as expected. |
| |
| # RUN: split-file %s %t |
| # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %t/main.s -o %t.o |
| # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %t/baz.s -o %t.baz.o |
| # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %t/baz2.s -o %t.baz2.o |
| # RUN: link_fdata %s %t.o %t.main.fdata |
| # RUN: link_fdata %s %t.baz.o %t.baz.fdata |
| # RUN: link_fdata %s %t.baz2.o %t.baz2.fdata |
| # RUN: merge-fdata %t.main.fdata %t.baz.fdata %t.baz2.fdata > %t.fdata |
| # RUN: %clang %cflags %t.o %t.baz.o %t.baz2.o -o %t.exe -Wl,-q |
| # RUN: llvm-bolt %t.exe -o %t.out --lite=1 --data %t.fdata -v=1 -print-cfg \ |
| # RUN: 2>&1 | FileCheck %s |
| |
| # CHECK: BOLT-INFO: processing main.cold.1 as a sibling of non-ignored function |
| # CHECK: BOLT-INFO: processing foo.cold.1/1(*2) as a sibling of non-ignored function |
| # CHECK: BOLT-INFO: processing bar.cold.1/1(*2) as a sibling of non-ignored function |
| # CHECK: BOLT-INFO: processing baz.cold.1 as a sibling of non-ignored function |
| # CHECK: BOLT-INFO: processing baz.cold.1/1(*2) as a sibling of non-ignored function |
| # CHECK: BOLT-INFO: processing baz.cold.1/2(*2) as a sibling of non-ignored function |
| |
| # CHECK: Binary Function "main.cold.1" after building cfg |
| # CHECK: Parent : main |
| |
| # CHECK: Binary Function "foo.cold.1/1(*2)" after building cfg |
| # CHECK: Parent : foo |
| |
| # CHECK: Binary Function "bar.cold.1/1(*2)" after building cfg |
| # CHECK: Parent : bar/1(*2) |
| |
| # CHECK: Binary Function "baz.cold.1" after building cfg |
| # CHECK: Parent : baz{{$}} |
| |
| # CHECK: Binary Function "baz.cold.1/1(*2)" after building cfg |
| # CHECK: Parent : baz/1(*2) |
| |
| # CHECK: Binary Function "baz.cold.1/2(*2)" after building cfg |
| # CHECK: Parent : baz/2(*2) |
| |
| #--- main.s |
| .file "main.s" |
| .globl main |
| .type main, %function |
| main: |
| .cfi_startproc |
| # FDATA: 0 [unknown] 0 1 main 0 1 0 |
| cmpl $0x0, %eax |
| je main.cold.1 |
| retq |
| .cfi_endproc |
| .size main, .-main |
| |
| .globl foo |
| .type foo, %function |
| foo: |
| .cfi_startproc |
| # FDATA: 0 [unknown] 0 1 foo 0 1 0 |
| cmpl $0x0, %eax |
| je foo.cold.1 |
| retq |
| .cfi_endproc |
| .size foo, .-foo |
| |
| .local bar |
| .type bar, %function |
| bar: |
| .cfi_startproc |
| # FDATA: 0 [unknown] 0 1 bar/1 0 1 0 |
| cmpl $0x0, %eax |
| je bar.cold.1 |
| retq |
| .cfi_endproc |
| .size bar, .-bar |
| |
| .globl baz |
| .type baz, %function |
| baz: |
| .cfi_startproc |
| # FDATA: 0 [unknown] 0 1 baz 0 1 0 |
| cmpl $0x0, %eax |
| je baz.cold.1 |
| retq |
| .cfi_endproc |
| .size baz, .-baz |
| |
| .section .text.cold |
| .globl main.cold.1 |
| .type main.cold.1, %function |
| main.cold.1: |
| .cfi_startproc |
| pushq %rbp |
| movq %rsp, %rbp |
| movl $0x0, %eax |
| popq %rbp |
| retq |
| .cfi_endproc |
| .size main.cold.1, .-main.cold.1 |
| |
| .local foo.cold.1 |
| .type foo.cold.1, %function |
| foo.cold.1: |
| .cfi_startproc |
| pushq %rbp |
| movq %rsp, %rbp |
| movl $0x0, %eax |
| popq %rbp |
| retq |
| .cfi_endproc |
| .size foo.cold.1, .-foo.cold.1 |
| |
| .local bar.cold.1 |
| .type bar.cold.1, %function |
| bar.cold.1: |
| .cfi_startproc |
| pushq %rbp |
| movq %rsp, %rbp |
| movl $0x0, %eax |
| popq %rbp |
| retq |
| .cfi_endproc |
| .size bar.cold.1, .-bar.cold.1 |
| |
| .globl baz.cold.1 |
| .type baz.cold.1, %function |
| baz.cold.1: |
| .cfi_startproc |
| pushq %rbp |
| movq %rsp, %rbp |
| movl $0x0, %eax |
| popq %rbp |
| retq |
| .cfi_endproc |
| .size baz.cold.1, .-baz.cold.1 |
| |
| #--- baz.s |
| .file "baz.s" |
| .local baz |
| .type baz, %function |
| baz: |
| .cfi_startproc |
| # FDATA: 0 [unknown] 0 1 baz/1 0 1 0 |
| cmpl $0x0, %eax |
| je baz.cold.1 |
| retq |
| .cfi_endproc |
| .size baz, .-baz |
| |
| .section .text.cold |
| .local baz.cold.1 |
| .type baz.cold.1, %function |
| baz.cold.1: |
| .cfi_startproc |
| pushq %rbp |
| movq %rsp, %rbp |
| movl $0x0, %eax |
| popq %rbp |
| retq |
| .cfi_endproc |
| .size baz.cold.1, .-baz.cold.1 |
| |
| #--- baz2.s |
| .file "baz2.s" |
| .local baz |
| .type baz, %function |
| baz: |
| .cfi_startproc |
| # FDATA: 0 [unknown] 0 1 baz/2 0 1 0 |
| cmpl $0x0, %eax |
| je baz.cold.1 |
| retq |
| .cfi_endproc |
| .size baz, .-baz |
| |
| .section .text.cold |
| .local baz.cold.1 |
| .type baz.cold.1, %function |
| baz.cold.1: |
| .cfi_startproc |
| pushq %rbp |
| movq %rsp, %rbp |
| movl $0x0, %eax |
| popq %rbp |
| retq |
| .cfi_endproc |
| .size baz.cold.1, .-baz.cold.1 |