xref: /llvm-project/bolt/test/X86/issue26.s (revision 11791ae7b0b05b8bd8d806331ff51da618912cf8)
1*11791ae7SSayhaan Siddiqui## This reproduces issue 26 from our github repo
2*11791ae7SSayhaan Siddiqui##  BOLT fails with the following assertion:
3*11791ae7SSayhaan Siddiqui##    llvm/tools/llvm-bolt/src/BinaryFunction.cpp:2950: void llvm::bolt::BinaryFunction::postProcessBranches(): Assertion `validateCFG() && "invalid CFG"' failed.
426ad0bd9SRafael Auler
526ad0bd9SRafael Auler# REQUIRES: system-linux
626ad0bd9SRafael Auler
726ad0bd9SRafael Auler# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown \
826ad0bd9SRafael Auler# RUN:   %s -o %t.o
9d4fdc981SAmir Ayupov# RUN: %clang %cflags %t.o -o %t.exe -Wl,-q
102dea832eSAmir Ayupov# RUN: llvm-bolt %t.exe --relocs --print-cfg -o %t.out 2>&1 \
1126ad0bd9SRafael Auler# RUN:    | FileCheck %s
1226ad0bd9SRafael Auler
1326ad0bd9SRafael Auler# CHECK-NOT: BOLT-WARNING: CFG invalid in XYZ @ .LBB0
1426ad0bd9SRafael Auler
1526ad0bd9SRafael Auler# CHECK: Binary Function "XYZ"
1626ad0bd9SRafael Auler
1726ad0bd9SRafael Auler# CHECK: .Ltmp{{.*}} (1 instructions, align : 1)
1826ad0bd9SRafael Auler# CHECK-NEXT: Secondary Entry Point: FUNCat{{.*}}
1926ad0bd9SRafael Auler
2026ad0bd9SRafael Auler  .text
2126ad0bd9SRafael Auler  .globl XYZ
2226ad0bd9SRafael Auler  .type XYZ, %function
2326ad0bd9SRafael Auler  .size XYZ, .Lend1-XYZ
2426ad0bd9SRafael AulerXYZ:
2526ad0bd9SRafael Auler  movl %fs:-0x350, %eax
2626ad0bd9SRafael Auler  cmpl %eax, %edi
2726ad0bd9SRafael Auler  jne .L1
2826ad0bd9SRafael Auler
2926ad0bd9SRafael Auler  cmp %rdx, (%rsi)
3026ad0bd9SRafael Auler  jne .L2
3126ad0bd9SRafael Auler
3226ad0bd9SRafael Auler  movq %rcx, (%rsi)
3326ad0bd9SRafael Auler.L1:
3426ad0bd9SRafael Auler  retq
3526ad0bd9SRafael Auler
3626ad0bd9SRafael Auler.L2:
3726ad0bd9SRafael Auler  movl $0xffffffff, %eax
3826ad0bd9SRafael Auler  retq
3926ad0bd9SRafael Auler.Lend1:
4026ad0bd9SRafael Auler
4126ad0bd9SRafael Auler  .globl FUNC
4226ad0bd9SRafael Auler  .type FUNC, %function
4326ad0bd9SRafael Auler  .size FUNC, .Lend - FUNC
4426ad0bd9SRafael AulerFUNC:
4526ad0bd9SRafael Auler  cmpq %rdi, %rsi
4626ad0bd9SRafael Auler  je .L1
4726ad0bd9SRafael Auler  retq
4826ad0bd9SRafael Auler.Lend:
4926ad0bd9SRafael Auler
5026ad0bd9SRafael Auler  .globl main
5126ad0bd9SRafael Auler  .type main, %function
5226ad0bd9SRafael Auler  .size main, .Lend2 - main
5326ad0bd9SRafael Aulermain:
5426ad0bd9SRafael Auler  xorq %rax, %rax
5526ad0bd9SRafael Auler  retq
56f0f5d19aSMaksim Panchenko
57f0f5d19aSMaksim Panchenko# For relocations against .text
58f0f5d19aSMaksim Panchenko  call exit
5926ad0bd9SRafael Auler.Lend2:
60