| ; 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 |
| } |