35 lines
777 B
LLVM
35 lines
777 B
LLVM
; RUN: llc -mtriple=x86_64-linux-gnu %s -o - -verify-machineinstrs | FileCheck %s
|
|
|
|
define i32 @tail_merge_unreachable(i32 %i) {
|
|
entry:
|
|
br i1 undef, label %sw, label %end
|
|
sw:
|
|
switch i32 %i, label %end [
|
|
i32 99, label %sw.bb
|
|
i32 98, label %sw.bb
|
|
i32 101, label %sw.bb
|
|
i32 97, label %sw.bb2
|
|
i32 96, label %sw.bb2
|
|
i32 100, label %sw.bb2
|
|
]
|
|
sw.bb:
|
|
unreachable
|
|
sw.bb2:
|
|
unreachable
|
|
end:
|
|
%p = phi i32 [ 1, %sw ], [ 0, %entry ]
|
|
ret i32 %p
|
|
|
|
; CHECK-LABEL: tail_merge_unreachable:
|
|
; Range Check
|
|
; CHECK: addl $-96
|
|
; CHECK: cmpl $5
|
|
; CHECK: jbe [[JUMP_TABLE_BLOCK:[.][A-Za-z0-9_]+]]
|
|
; CHECK: retq
|
|
; CHECK: [[JUMP_TABLE_BLOCK]]:
|
|
; CHECK: btl
|
|
; CHECK: jae [[UNREACHABLE_BLOCK:[.][A-Za-z0-9_]+]]
|
|
; CHECK: [[UNREACHABLE_BLOCK]]:
|
|
; CHECK: .Lfunc_end0
|
|
}
|