| # This reproduces issue 26 from our github repo |
| # BOLT fails with the following assertion: |
| # llvm/tools/llvm-bolt/src/BinaryFunction.cpp:2950: void llvm::bolt::BinaryFunction::postProcessBranches(): Assertion `validateCFG() && "invalid CFG"' failed. |
| |
| # REQUIRES: system-linux |
| |
| # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown \ |
| # RUN: %s -o %t.o |
| # RUN: %clang %cflags %t.o -o %t.exe -Wl,-q |
| # RUN: llvm-bolt %t.exe --relocs --print-cfg -o %t.out 2>&1 \ |
| # RUN: | FileCheck %s |
| |
| # CHECK-NOT: BOLT-WARNING: CFG invalid in XYZ @ .LBB0 |
| |
| # CHECK: Binary Function "XYZ" |
| |
| # CHECK: .Ltmp{{.*}} (1 instructions, align : 1) |
| # CHECK-NEXT: Secondary Entry Point: FUNCat{{.*}} |
| |
| .text |
| .globl XYZ |
| .type XYZ, %function |
| .size XYZ, .Lend1-XYZ |
| XYZ: |
| movl %fs:-0x350, %eax |
| cmpl %eax, %edi |
| jne .L1 |
| |
| cmp %rdx, (%rsi) |
| jne .L2 |
| |
| movq %rcx, (%rsi) |
| .L1: |
| retq |
| |
| .L2: |
| movl $0xffffffff, %eax |
| retq |
| .Lend1: |
| |
| .globl FUNC |
| .type FUNC, %function |
| .size FUNC, .Lend - FUNC |
| FUNC: |
| cmpq %rdi, %rsi |
| je .L1 |
| retq |
| .Lend: |
| |
| .globl main |
| .type main, %function |
| .size main, .Lend2 - main |
| main: |
| xorq %rax, %rax |
| retq |
| |
| # For relocations against .text |
| call exit |
| .Lend2: |