Summary: While removing unreachable blocks, we may decide to remove a block that is listed as a target in a jump table entry. If we do that, this label will be then undefined and LLVM assembler will crash. Mitigate this for now by not removing such blocks, as we don't support removing unnecessary jump tables yet. Fixes facebookincubator/BOLT#20 (cherry picked from FBD8730269)
16 lines
570 B
Plaintext
Executable File
16 lines
570 B
Plaintext
Executable File
# This reproduces issue 20 from our github repo
|
|
# "BOLT crashes when removing unreachable BBs that are a target
|
|
# in a JT"
|
|
|
|
# RUN: yaml2obj %p/Inputs/issue20.yaml &> %t.exe
|
|
# RUN: llvm-bolt %t.exe -relocs=0 -jump-tables=move -print-finalized \
|
|
# RUN: -o %t.out | FileCheck %s
|
|
|
|
CHECK: BOLT-INFO: UCE removed 0 blocks and 0 bytes of code.
|
|
CHECK: Binary Function "main"
|
|
CHECK: .LFT0 (2 instructions, align : 1)
|
|
CHECK-NEXT: CFI State : 0
|
|
CHECK-NEXT: 00000004: andq
|
|
CHECK-NEXT: 00000008: jmpq
|
|
CHECK-NEXT: Successors: .Ltmp1, .Ltmp2, .Ltmp3, .Ltmp4
|