|
|
@@ -36,39 +36,45 @@ fn Calculate(a: Number, b: Number) -> Number {
|
|
|
// CHECK:STDOUT: define void @"_COp.Number.Main:Negate.Core"(ptr sret({ i1 }) %return, ptr %self) !dbg !4 {
|
|
|
// CHECK:STDOUT: entry:
|
|
|
// CHECK:STDOUT: %.loc19_36.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !7
|
|
|
-// CHECK:STDOUT: %.loc19_36.2 = load i1, ptr %.loc19_36.1.is_positive, align 1, !dbg !7
|
|
|
-// CHECK:STDOUT: %.loc19_28 = xor i1 %.loc19_36.2, true, !dbg !8
|
|
|
+// CHECK:STDOUT: %.loc19_36.2 = load i8, ptr %.loc19_36.1.is_positive, align 1, !dbg !7
|
|
|
+// CHECK:STDOUT: %.loc19_36.21 = trunc i8 %.loc19_36.2 to i1, !dbg !7
|
|
|
+// CHECK:STDOUT: %.loc19_28 = xor i1 %.loc19_36.21, true, !dbg !8
|
|
|
// CHECK:STDOUT: %.loc19_48.2.is_positive = getelementptr inbounds nuw { i1 }, ptr %return, i32 0, i32 0, !dbg !9
|
|
|
-// CHECK:STDOUT: store i1 %.loc19_28, ptr %.loc19_48.2.is_positive, align 1, !dbg !9
|
|
|
+// CHECK:STDOUT: %.loc19_48.3 = zext i1 %.loc19_28 to i8, !dbg !9
|
|
|
+// CHECK:STDOUT: store i8 %.loc19_48.3, ptr %.loc19_48.2.is_positive, align 1, !dbg !9
|
|
|
// CHECK:STDOUT: ret void, !dbg !10
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: define void @"_COp.Number.Main:MulWith.Core"(ptr sret({ i1 }) %return, ptr %self, ptr %other) !dbg !11 {
|
|
|
// CHECK:STDOUT: entry:
|
|
|
// CHECK:STDOUT: %.loc24_33.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !12
|
|
|
-// CHECK:STDOUT: %.loc24_33.2 = load i1, ptr %.loc24_33.1.is_positive, align 1, !dbg !12
|
|
|
-// CHECK:STDOUT: br i1 %.loc24_33.2, label %and.rhs.loc24, label %and.result.loc24, !dbg !12
|
|
|
+// CHECK:STDOUT: %.loc24_33.2 = load i8, ptr %.loc24_33.1.is_positive, align 1, !dbg !12
|
|
|
+// CHECK:STDOUT: %.loc24_33.21 = trunc i8 %.loc24_33.2 to i1, !dbg !12
|
|
|
+// CHECK:STDOUT: br i1 %.loc24_33.21, label %and.rhs.loc24, label %and.result.loc24, !dbg !12
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: and.rhs.loc24: ; preds = %entry
|
|
|
// CHECK:STDOUT: %.loc24_55.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %other, i32 0, i32 0, !dbg !13
|
|
|
-// CHECK:STDOUT: %.loc24_55.2 = load i1, ptr %.loc24_55.1.is_positive, align 1, !dbg !13
|
|
|
+// CHECK:STDOUT: %.loc24_55.2 = load i8, ptr %.loc24_55.1.is_positive, align 1, !dbg !13
|
|
|
+// CHECK:STDOUT: %.loc24_55.22 = trunc i8 %.loc24_55.2 to i1, !dbg !13
|
|
|
// CHECK:STDOUT: br label %and.result.loc24, !dbg !12
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: and.result.loc24: ; preds = %and.rhs.loc24, %entry
|
|
|
-// CHECK:STDOUT: %0 = phi i1 [ false, %entry ], [ %.loc24_55.2, %and.rhs.loc24 ]
|
|
|
+// CHECK:STDOUT: %0 = phi i1 [ false, %entry ], [ %.loc24_55.22, %and.rhs.loc24 ]
|
|
|
// CHECK:STDOUT: %.loc24_69.1 = xor i1 %0, true, !dbg !14
|
|
|
// CHECK:STDOUT: br i1 %.loc24_69.1, label %or.rhs, label %or.result, !dbg !14
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: or.rhs: ; preds = %and.result.loc24
|
|
|
// CHECK:STDOUT: %.loc25_38.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %self, i32 0, i32 0, !dbg !15
|
|
|
-// CHECK:STDOUT: %.loc25_38.2 = load i1, ptr %.loc25_38.1.is_positive, align 1, !dbg !15
|
|
|
-// CHECK:STDOUT: %.loc25_30 = xor i1 %.loc25_38.2, true, !dbg !16
|
|
|
+// CHECK:STDOUT: %.loc25_38.2 = load i8, ptr %.loc25_38.1.is_positive, align 1, !dbg !15
|
|
|
+// CHECK:STDOUT: %.loc25_38.23 = trunc i8 %.loc25_38.2 to i1, !dbg !15
|
|
|
+// CHECK:STDOUT: %.loc25_30 = xor i1 %.loc25_38.23, true, !dbg !16
|
|
|
// CHECK:STDOUT: br i1 %.loc25_30, label %and.rhs.loc25, label %and.result.loc25, !dbg !16
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: and.rhs.loc25: ; preds = %or.rhs
|
|
|
// CHECK:STDOUT: %.loc25_64.1.is_positive = getelementptr inbounds nuw { i1 }, ptr %other, i32 0, i32 0, !dbg !17
|
|
|
-// CHECK:STDOUT: %.loc25_64.2 = load i1, ptr %.loc25_64.1.is_positive, align 1, !dbg !17
|
|
|
-// CHECK:STDOUT: %.loc25_55 = xor i1 %.loc25_64.2, true, !dbg !18
|
|
|
+// CHECK:STDOUT: %.loc25_64.2 = load i8, ptr %.loc25_64.1.is_positive, align 1, !dbg !17
|
|
|
+// CHECK:STDOUT: %.loc25_64.24 = trunc i8 %.loc25_64.2 to i1, !dbg !17
|
|
|
+// CHECK:STDOUT: %.loc25_55 = xor i1 %.loc25_64.24, true, !dbg !18
|
|
|
// CHECK:STDOUT: br label %and.result.loc25, !dbg !16
|
|
|
// CHECK:STDOUT:
|
|
|
// CHECK:STDOUT: and.result.loc25: ; preds = %and.rhs.loc25, %or.rhs
|
|
|
@@ -78,7 +84,8 @@ fn Calculate(a: Number, b: Number) -> Number {
|
|
|
// CHECK:STDOUT: or.result: ; preds = %and.result.loc25, %and.result.loc24
|
|
|
// CHECK:STDOUT: %2 = phi i1 [ true, %and.result.loc24 ], [ %1, %and.result.loc25 ]
|
|
|
// CHECK:STDOUT: %.loc25_77.2.is_positive = getelementptr inbounds nuw { i1 }, ptr %return, i32 0, i32 0, !dbg !19
|
|
|
-// CHECK:STDOUT: store i1 %2, ptr %.loc25_77.2.is_positive, align 1, !dbg !19
|
|
|
+// CHECK:STDOUT: %.loc25_77.3 = zext i1 %2 to i8, !dbg !19
|
|
|
+// CHECK:STDOUT: store i8 %.loc25_77.3, ptr %.loc25_77.2.is_positive, align 1, !dbg !19
|
|
|
// CHECK:STDOUT: ret void, !dbg !20
|
|
|
// CHECK:STDOUT: }
|
|
|
// CHECK:STDOUT:
|