blob: 0f02a4b273ddadd692d54a87fd15aa1bb0ebf371 [file] [log] [blame] [edit]
## Verify that llvm-bolt removes nop instructions from functions with indirect
## branches that have defined control flow.
# REQUIRES: system-linux
# RUN: llvm-mc -filetype=obj -triple aarch64-unknown-unknown %s -o %t.o
# RUN: %clang %cflags --target=aarch64-unknown-linux %t.o -o %t.exe -Wl,-q
# RUN: llvm-bolt %t.exe -o %t.bolt --print-normalized 2>&1 | FileCheck %s
# RUN: llvm-objdump -d --disassemble-symbols=_start %t.bolt \
# RUN: | FileCheck %s --check-prefix=CHECK-OBJDUMP
# CHECK-OBJDUMP-LABEL: _start
# CHECK-OBJDUMP-NOT: nop
.section .text
.align 4
.globl _start
.type _start, %function
_start:
# CHECK-LABEL: Binary Function "_start"
nop
# CHECK-NOT: nop
br x0
# CHECK: br x0 # TAILCALL
.size _start, .-_start
## Force relocation mode.
.reloc 0, R_AARCH64_NONE