Index: test/NaCl/Bitcode/switch-ptr.ll |
diff --git a/test/NaCl/Bitcode/switch-ptr.ll b/test/NaCl/Bitcode/switch-ptr.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bab44cd1ce87018bbfa9d12753b0699213263a21 |
--- /dev/null |
+++ b/test/NaCl/Bitcode/switch-ptr.ll |
@@ -0,0 +1,27 @@ |
+; Tests if we handle pointer argument for switch statement. |
+; https://code.google.com/p/nativeclient/issues/detail?id=4050 |
+ |
+; RUN: llvm-as < %s | pnacl-freeze \ |
+; RUN: | pnacl-thaw \ |
+; RUN: | llvm-dis -o - | FileCheck %s |
+ |
+@hi = internal global [1 x i8] zeroinitializer, align 1 |
+define internal void @foo() { |
+ %e = ptrtoint [1 x i8]* @hi to i32 |
+ switch i32 %e, label %baz3 [ |
+ i32 -4, label %baz1 |
+ i32 -8, label %baz2 |
+ ] |
+baz1: |
+ ret void |
+baz2: |
+ ret void |
+baz3: |
+ ret void |
+} |
+ |
+; CHECK-LABEL: @foo |
+; CHECK: %1 = ptrtoint [1 x i8]* @hi to i32 |
+; CHECK-NEXT: switch i32 %1, label |
+; CHECK-NEXT: i32 |
+; CHECK-NEXT: i32 |