Index: test/Transforms/MinSFI/substitute-undefs.ll |
diff --git a/test/Transforms/MinSFI/substitute-undefs.ll b/test/Transforms/MinSFI/substitute-undefs.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dd1bc487ccfabf59be164fa5267e0464f0f8462f |
--- /dev/null |
+++ b/test/Transforms/MinSFI/substitute-undefs.ll |
@@ -0,0 +1,98 @@ |
+; RUN: opt %s -minsfi-substitute-undefs -S | FileCheck %s |
+ |
+target datalayout = "p:32:32:32" |
+target triple = "le32-unknown-nacl" |
+ |
+define i1 @test_undef_i1() { |
+ ret i1 undef ; replaced with 0x0 |
+} |
+ |
+; CHECK-LABEL: define i1 @test_undef_i1() { |
+; CHECK-NEXT: ret i1 false |
+; CHECK-NEXT: } |
+ |
+define i8 @test_undef_i8() { |
+ ret i8 undef ; replaced with 0xBE |
+} |
+ |
+; CHECK-LABEL: define i8 @test_undef_i8() { |
+; CHECK-NEXT: ret i8 -66 |
+; CHECK-NEXT: } |
+ |
+define i64 @test_undef_i64() { |
+ ret i64 undef ; replaced with 0xBAADF00DCAFEBABE |
+} |
+ |
+; CHECK-LABEL: define i64 @test_undef_i64() { |
+; CHECK-NEXT: ret i64 -4995072469653079362 |
+; CHECK-NEXT: } |
+ |
+define <8 x i16> @test_undef_i16vec() { |
+ ret <8 x i16> undef ; replace with a vector of 0xBABE |
+} |
+ |
+; CHECK-LABEL: define <8 x i16> @test_undef_i16vec() { |
+; CHECK-NEXT: ret <8 x i16> <i16 -17730, i16 -17730, i16 -17730, i16 -17730, i16 -17730, i16 -17730, i16 -17730, i16 -17730> |
+; CHECK-NEXT: } |
+ |
+define float @test_undef_float() { |
+ ret float undef ; replaced with pi |
+} |
+ |
+; CHECK-LABEL: define float @test_undef_float() { |
+; CHECK-NEXT: ret float 0x400921FB60000000 |
+; CHECK-NEXT: } |
+ |
+define double @test_undef_double() { |
+ ret double undef ; replaced with pi |
+} |
+ |
+; CHECK-LABEL: define double @test_undef_double() { |
+; CHECK-NEXT: ret double 0x400921FB54442EEA |
+; CHECK-NEXT: } |
+ |
+define <4 x float> @test_undef_floatvec() { |
+ ret <4 x float> undef ; replaced with a vector of pi |
+} |
+ |
+; CHECK-LABEL: define <4 x float> @test_undef_floatvec() { |
+; CHECK-NEXT: ret <4 x float> <float 0x400921FB60000000, float 0x400921FB60000000, float 0x400921FB60000000, float 0x400921FB60000000> |
+; CHECK-NEXT: } |
+ |
+ |
+ |
+declare void @foo(i32, float) |
+ |
+define void @test_more_operands() { |
+ call void @foo(i32 undef, float undef) |
+ ret void |
+} |
+ |
+; CHECK-LABEL: define void @test_more_operands() { |
+; CHECK-NEXT: call void @foo(i32 -889275714, float 0x400921FB60000000) |
+; CHECK-NEXT: ret void |
+; CHECK-NEXT: } |
+ |
+define void @test_more_basicblocks() { |
+entry: |
+ br label %loop |
+ |
+loop: |
+ %i = phi i16 [ undef, %entry ], [ %next, %loop ] |
+ %next = add i16 %i, 1 |
+ br i1 undef, label %exit, label %loop |
+ |
+exit: |
+ ret void |
+} |
+ |
+; CHECK-LABEL: define void @test_more_basicblocks() { |
+; CHECK-NEXT: entry: |
+; CHECK-NEXT: br label %loop |
+; CHECK: loop: |
+; CHECK-NEXT: %i = phi i16 [ -17730, %entry ], [ %next, %loop ] |
+; CHECK-NEXT: %next = add i16 %i, 1 |
+; CHECK-NEXT: br i1 false, label %exit |
+; CHECK: exit: |
+; CHECK-NEXT: ret void |
+; CHECK-NEXT: } |