Commit 12d18a36e5
Changed files (1)
test
stage2
test/stage2/test.zig
@@ -622,197 +622,197 @@ pub fn addCases(ctx: *TestContext) !void {
);
// Labeled blocks (no conditional branch)
- //case.addCompareOutput(
- // \\export fn _start() noreturn {
- // \\ assert(add(3, 4) == 20);
- // \\
- // \\ exit();
- // \\}
- // \\
- // \\fn add(a: u32, b: u32) u32 {
- // \\ const x: u32 = blk: {
- // \\ const c = a + b; // 7
- // \\ const d = a + c; // 10
- // \\ const e = d + b; // 14
- // \\ break :blk e;
- // \\ };
- // \\ const y = x + a; // 17
- // \\ const z = y + a; // 20
- // \\ return z;
- // \\}
- // \\
- // \\pub fn assert(ok: bool) void {
- // \\ if (!ok) unreachable; // assertion failure
- // \\}
- // \\
- // \\fn exit() noreturn {
- // \\ asm volatile ("syscall"
- // \\ :
- // \\ : [number] "{rax}" (231),
- // \\ [arg1] "{rdi}" (0)
- // \\ : "rcx", "r11", "memory"
- // \\ );
- // \\ unreachable;
- // \\}
- //,
- // "",
- //);
+ case.addCompareOutput(
+ \\export fn _start() noreturn {
+ \\ assert(add(3, 4) == 20);
+ \\
+ \\ exit();
+ \\}
+ \\
+ \\fn add(a: u32, b: u32) u32 {
+ \\ const x: u32 = blk: {
+ \\ const c = a + b; // 7
+ \\ const d = a + c; // 10
+ \\ const e = d + b; // 14
+ \\ break :blk e;
+ \\ };
+ \\ const y = x + a; // 17
+ \\ const z = y + a; // 20
+ \\ return z;
+ \\}
+ \\
+ \\pub fn assert(ok: bool) void {
+ \\ if (!ok) unreachable; // assertion failure
+ \\}
+ \\
+ \\fn exit() noreturn {
+ \\ asm volatile ("syscall"
+ \\ :
+ \\ : [number] "{rax}" (231),
+ \\ [arg1] "{rdi}" (0)
+ \\ : "rcx", "r11", "memory"
+ \\ );
+ \\ unreachable;
+ \\}
+ ,
+ "",
+ );
// This catches a possible bug in the logic for re-using dying operands.
- //case.addCompareOutput(
- // \\export fn _start() noreturn {
- // \\ assert(add(3, 4) == 116);
- // \\
- // \\ exit();
- // \\}
- // \\
- // \\fn add(a: u32, b: u32) u32 {
- // \\ const x: u32 = blk: {
- // \\ const c = a + b; // 7
- // \\ const d = a + c; // 10
- // \\ const e = d + b; // 14
- // \\ const f = d + e; // 24
- // \\ const g = e + f; // 38
- // \\ const h = f + g; // 62
- // \\ const i = g + h; // 100
- // \\ const j = i + d; // 110
- // \\ break :blk j;
- // \\ };
- // \\ const y = x + a; // 113
- // \\ const z = y + a; // 116
- // \\ return z;
- // \\}
- // \\
- // \\pub fn assert(ok: bool) void {
- // \\ if (!ok) unreachable; // assertion failure
- // \\}
- // \\
- // \\fn exit() noreturn {
- // \\ asm volatile ("syscall"
- // \\ :
- // \\ : [number] "{rax}" (231),
- // \\ [arg1] "{rdi}" (0)
- // \\ : "rcx", "r11", "memory"
- // \\ );
- // \\ unreachable;
- // \\}
- //,
- // "",
- //);
+ case.addCompareOutput(
+ \\export fn _start() noreturn {
+ \\ assert(add(3, 4) == 116);
+ \\
+ \\ exit();
+ \\}
+ \\
+ \\fn add(a: u32, b: u32) u32 {
+ \\ const x: u32 = blk: {
+ \\ const c = a + b; // 7
+ \\ const d = a + c; // 10
+ \\ const e = d + b; // 14
+ \\ const f = d + e; // 24
+ \\ const g = e + f; // 38
+ \\ const h = f + g; // 62
+ \\ const i = g + h; // 100
+ \\ const j = i + d; // 110
+ \\ break :blk j;
+ \\ };
+ \\ const y = x + a; // 113
+ \\ const z = y + a; // 116
+ \\ return z;
+ \\}
+ \\
+ \\pub fn assert(ok: bool) void {
+ \\ if (!ok) unreachable; // assertion failure
+ \\}
+ \\
+ \\fn exit() noreturn {
+ \\ asm volatile ("syscall"
+ \\ :
+ \\ : [number] "{rax}" (231),
+ \\ [arg1] "{rdi}" (0)
+ \\ : "rcx", "r11", "memory"
+ \\ );
+ \\ unreachable;
+ \\}
+ ,
+ "",
+ );
// Spilling registers to the stack.
- //case.addCompareOutput(
- // \\export fn _start() noreturn {
- // \\ assert(add(3, 4) == 791);
- // \\
- // \\ exit();
- // \\}
- // \\
- // \\fn add(a: u32, b: u32) u32 {
- // \\ const x: u32 = blk: {
- // \\ const c = a + b; // 7
- // \\ const d = a + c; // 10
- // \\ const e = d + b; // 14
- // \\ const f = d + e; // 24
- // \\ const g = e + f; // 38
- // \\ const h = f + g; // 62
- // \\ const i = g + h; // 100
- // \\ const j = i + d; // 110
- // \\ const k = i + j; // 210
- // \\ const l = k + c; // 217
- // \\ const m = l + d; // 227
- // \\ const n = m + e; // 241
- // \\ const o = n + f; // 265
- // \\ const p = o + g; // 303
- // \\ const q = p + h; // 365
- // \\ const r = q + i; // 465
- // \\ const s = r + j; // 575
- // \\ const t = s + k; // 785
- // \\ break :blk t;
- // \\ };
- // \\ const y = x + a; // 788
- // \\ const z = y + a; // 791
- // \\ return z;
- // \\}
- // \\
- // \\pub fn assert(ok: bool) void {
- // \\ if (!ok) unreachable; // assertion failure
- // \\}
- // \\
- // \\fn exit() noreturn {
- // \\ asm volatile ("syscall"
- // \\ :
- // \\ : [number] "{rax}" (231),
- // \\ [arg1] "{rdi}" (0)
- // \\ : "rcx", "r11", "memory"
- // \\ );
- // \\ unreachable;
- // \\}
- //,
- // "",
- //);
+ case.addCompareOutput(
+ \\export fn _start() noreturn {
+ \\ assert(add(3, 4) == 791);
+ \\
+ \\ exit();
+ \\}
+ \\
+ \\fn add(a: u32, b: u32) u32 {
+ \\ const x: u32 = blk: {
+ \\ const c = a + b; // 7
+ \\ const d = a + c; // 10
+ \\ const e = d + b; // 14
+ \\ const f = d + e; // 24
+ \\ const g = e + f; // 38
+ \\ const h = f + g; // 62
+ \\ const i = g + h; // 100
+ \\ const j = i + d; // 110
+ \\ const k = i + j; // 210
+ \\ const l = k + c; // 217
+ \\ const m = l + d; // 227
+ \\ const n = m + e; // 241
+ \\ const o = n + f; // 265
+ \\ const p = o + g; // 303
+ \\ const q = p + h; // 365
+ \\ const r = q + i; // 465
+ \\ const s = r + j; // 575
+ \\ const t = s + k; // 785
+ \\ break :blk t;
+ \\ };
+ \\ const y = x + a; // 788
+ \\ const z = y + a; // 791
+ \\ return z;
+ \\}
+ \\
+ \\pub fn assert(ok: bool) void {
+ \\ if (!ok) unreachable; // assertion failure
+ \\}
+ \\
+ \\fn exit() noreturn {
+ \\ asm volatile ("syscall"
+ \\ :
+ \\ : [number] "{rax}" (231),
+ \\ [arg1] "{rdi}" (0)
+ \\ : "rcx", "r11", "memory"
+ \\ );
+ \\ unreachable;
+ \\}
+ ,
+ "",
+ );
// Reusing the registers of dead operands playing nicely with conditional branching.
- //case.addCompareOutput(
- // \\export fn _start() noreturn {
- // \\ assert(add(3, 4) == 791);
- // \\ assert(add(4, 3) == 79);
- // \\
- // \\ exit();
- // \\}
- // \\
- // \\fn add(a: u32, b: u32) u32 {
- // \\ const x: u32 = if (a < b) blk: {
- // \\ const c = a + b; // 7
- // \\ const d = a + c; // 10
- // \\ const e = d + b; // 14
- // \\ const f = d + e; // 24
- // \\ const g = e + f; // 38
- // \\ const h = f + g; // 62
- // \\ const i = g + h; // 100
- // \\ const j = i + d; // 110
- // \\ const k = i + j; // 210
- // \\ const l = k + c; // 217
- // \\ const m = l + d; // 227
- // \\ const n = m + e; // 241
- // \\ const o = n + f; // 265
- // \\ const p = o + g; // 303
- // \\ const q = p + h; // 365
- // \\ const r = q + i; // 465
- // \\ const s = r + j; // 575
- // \\ const t = s + k; // 785
- // \\ break :blk t;
- // \\ } else blk: {
- // \\ const t = b + b + a; // 10
- // \\ const c = a + t; // 14
- // \\ const d = c + t; // 24
- // \\ const e = d + t; // 34
- // \\ const f = e + t; // 44
- // \\ const g = f + t; // 54
- // \\ const h = c + g; // 68
- // \\ break :blk h + b; // 71
- // \\ };
- // \\ const y = x + a; // 788, 75
- // \\ const z = y + a; // 791, 79
- // \\ return z;
- // \\}
- // \\
- // \\pub fn assert(ok: bool) void {
- // \\ if (!ok) unreachable; // assertion failure
- // \\}
- // \\
- // \\fn exit() noreturn {
- // \\ asm volatile ("syscall"
- // \\ :
- // \\ : [number] "{rax}" (231),
- // \\ [arg1] "{rdi}" (0)
- // \\ : "rcx", "r11", "memory"
- // \\ );
- // \\ unreachable;
- // \\}
- //,
- // "",
- //);
+ case.addCompareOutput(
+ \\export fn _start() noreturn {
+ \\ assert(add(3, 4) == 791);
+ \\ assert(add(4, 3) == 79);
+ \\
+ \\ exit();
+ \\}
+ \\
+ \\fn add(a: u32, b: u32) u32 {
+ \\ const x: u32 = if (a < b) blk: {
+ \\ const c = a + b; // 7
+ \\ const d = a + c; // 10
+ \\ const e = d + b; // 14
+ \\ const f = d + e; // 24
+ \\ const g = e + f; // 38
+ \\ const h = f + g; // 62
+ \\ const i = g + h; // 100
+ \\ const j = i + d; // 110
+ \\ const k = i + j; // 210
+ \\ const l = k + c; // 217
+ \\ const m = l + d; // 227
+ \\ const n = m + e; // 241
+ \\ const o = n + f; // 265
+ \\ const p = o + g; // 303
+ \\ const q = p + h; // 365
+ \\ const r = q + i; // 465
+ \\ const s = r + j; // 575
+ \\ const t = s + k; // 785
+ \\ break :blk t;
+ \\ } else blk: {
+ \\ const t = b + b + a; // 10
+ \\ const c = a + t; // 14
+ \\ const d = c + t; // 24
+ \\ const e = d + t; // 34
+ \\ const f = e + t; // 44
+ \\ const g = f + t; // 54
+ \\ const h = c + g; // 68
+ \\ break :blk h + b; // 71
+ \\ };
+ \\ const y = x + a; // 788, 75
+ \\ const z = y + a; // 791, 79
+ \\ return z;
+ \\}
+ \\
+ \\pub fn assert(ok: bool) void {
+ \\ if (!ok) unreachable; // assertion failure
+ \\}
+ \\
+ \\fn exit() noreturn {
+ \\ asm volatile ("syscall"
+ \\ :
+ \\ : [number] "{rax}" (231),
+ \\ [arg1] "{rdi}" (0)
+ \\ : "rcx", "r11", "memory"
+ \\ );
+ \\ unreachable;
+ \\}
+ ,
+ "",
+ );
// Character literals and multiline strings.
case.addCompareOutput(