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