| ## 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 |