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