summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2019-09-30 08:47:46 +0000
committerHans Wennborg <hans@hanshq.net>2019-09-30 08:47:46 +0000
commit8569c0f1ab8a6674aad621fbca8d2d24fbecdc5b (patch)
treead08fe969660233f1c3daad4e60dfe3ac525f7bd
parent180f1feba9f3c6f9fb8bfba7d74c4d7045fc13a9 (diff)
downloadbcm5719-llvm-8569c0f1ab8a6674aad621fbca8d2d24fbecdc5b.tar.gz
bcm5719-llvm-8569c0f1ab8a6674aad621fbca8d2d24fbecdc5b.zip
Pre-commit a test case for PR43129.
llvm-svn: 373190
-rw-r--r--llvm/test/CodeGen/X86/switch-bt.ll40
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/switch-bt.ll b/llvm/test/CodeGen/X86/switch-bt.ll
index 958d053c22f..797ad4bccfd 100644
--- a/llvm/test/CodeGen/X86/switch-bt.ll
+++ b/llvm/test/CodeGen/X86/switch-bt.ll
@@ -155,3 +155,43 @@ sw.epilog:
; CHECK: cmpl $60
; CHECK: jne
}
+
+
+; TODO: Omit the range check when the default case is unreachable, see PR43129.
+declare void @g(i32)
+define void @test5(i32 %x) {
+
+; CHECK-LABEL: test5
+; CHECK: cmpl $8, %edi
+; CHECK: ja
+
+; 73 = 2^0 + 2^3 + 2^6
+; CHECK: movl $73
+; CHECK-NEXT: btl
+; CHECK-NEXT: jb
+
+; 146 = 2^1 + 2^4 + 2^7
+; CHECK-NEXT: movl $146
+; CHECK-NEXT: btl
+; CHECK-NEXT: jae
+
+
+entry:
+ switch i32 %x, label %return [
+ i32 0, label %bb0
+ i32 3, label %bb0
+ i32 6, label %bb0
+
+ i32 1, label %bb1
+ i32 4, label %bb1
+ i32 7, label %bb1
+
+ i32 2, label %bb2
+ i32 5, label %bb2
+ i32 8, label %bb2
+ ]
+bb0: tail call void @g(i32 0) br label %return
+bb1: tail call void @g(i32 1) br label %return
+bb2: tail call void @g(i32 2) br label %return
+return: unreachable
+}
OpenPOWER on IntegriCloud