blob: 724171ac399251c78f6c8da1b643707007ad6384 [file] [log] [blame]
## Verify that BOLT does not crash while encountering instruction sequence that
## does not perfectly match jump table pattern.
# 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-cfg 2>&1 | FileCheck %s
.section .text
.align 4
.globl _start
.type _start, %function
_start:
sub w0, w0, #0x4a
## The address loaded into x22 is undefined. However, the instructions that
## follow ldr, use the x22 address as a regular jump table.
ldr x22, [x29, #0x98]
ldrb w0, [x22, w0, uxtw]
adr x1, #12
add x0, x1, w0, sxtb #2
br x0
# CHECK: br x0 # UNKNOWN
.L0:
ret
.size _start, .-_start
## Force relocation mode.
.reloc 0, R_AARCH64_NONE