| Index: test/NaCl/Bitcode/pnacl-bcdis/switch.ll
|
| diff --git a/test/NaCl/Bitcode/pnacl-bcdis/switch.ll b/test/NaCl/Bitcode/pnacl-bcdis/switch.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5bd242be772699f90f838a35c2178b214add419a
|
| --- /dev/null
|
| +++ b/test/NaCl/Bitcode/pnacl-bcdis/switch.ll
|
| @@ -0,0 +1,73 @@
|
| +; Test switch statements.
|
| +
|
| +; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress --remove-abbreviations \
|
| +; RUN: | pnacl-bcdis | FileCheck %s
|
| +
|
| +
|
| +; Test case where we switch on a variable.
|
| +define void @SwitchVariable(i32 %p0) {
|
| +
|
| +; CHECK: | | %b0:
|
| +
|
| + switch i32 %p0, label %b1 [
|
| + i32 1, label %b2
|
| + i32 2, label %b2
|
| + i32 4, label %b3
|
| + i32 5, label %b3
|
| + ]
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <12, 1, 1, 1, 4, 1, 1,| switch i32 %p0 {
|
| +; CHECK-NEXT: | 2, 2, 1, 1, 4, 2, 1, | default: br label %b1;
|
| +; CHECK-NEXT: | 1, 8, 3, 1, 1, 10, 3>| i32 1: br label %b2;
|
| +; CHECK-NEXT: | | i32 2: br label %b2;
|
| +; CHECK-NEXT: | | i32 4: br label %b3;
|
| +; CHECK-NEXT: | | i32 5: br label %b3;
|
| +; CHECK-NEXT: | | }
|
| +
|
| +b1:
|
| + br label %b4
|
| +
|
| +
|
| +b2:
|
| + br label %b4
|
| +
|
| +b3:
|
| + br label %b4
|
| +
|
| +b4:
|
| + ret void
|
| +}
|
| +
|
| +; Test case where we switch on a constant.
|
| +define void @SwitchConstant() {
|
| +
|
| +; CHECK: | | %b0:
|
| +
|
| + switch i32 3, label %b1 [
|
| + i32 2, label %b2
|
| + i32 1, label %b2
|
| + i32 5, label %b3
|
| + i32 4, label %b3
|
| + ]
|
| +
|
| +; CHECK-NEXT: {{.*}}| 3: <12, 1, 1, 1, 4, 1, 1,| switch i32 %c0 {
|
| +; CHECK-NEXT: | 4, 2, 1, 1, 2, 2, 1, | default: br label %b1;
|
| +; CHECK-NEXT: | 1, 10, 3, 1, 1, 8, 3>| i32 2: br label %b2;
|
| +; CHECK-NEXT: | | i32 1: br label %b2;
|
| +; CHECK-NEXT: | | i32 5: br label %b3;
|
| +; CHECK-NEXT: | | i32 4: br label %b3;
|
| +; CHECK-NEXT: | | }
|
| +
|
| +b1:
|
| + br label %b4
|
| +
|
| +b2:
|
| + br label %b4
|
| +
|
| +b3:
|
| + br label %b4
|
| +
|
| +b4:
|
| + ret void
|
| +}
|
| +
|
|
|