| author | |
| committer | |
| log | 4dba253cd2b22811c414aa0c183cf371bd111a57 |
| tree | 2b4c357da6bc672ccbf4dea0d3e39e125c0d3c81 |
| parent | 589e564f16fd9c07dde9ae88910219d25b7a377f |
| signature |
There is nothing inherently LLVM-specific about any of these.38 files changed, 351 insertions(+), 351 deletions(-)
test/cases/address_space_pointer_access_chaining_pointer_to_optional_array.zig created+12| ... | @@ -0,0 +1,12 @@ | ||
| 1 | fn entry(a: *addrspace(.gs) ?[1]i32) *addrspace(.gs) i32 { | ||
| 2 | return &a.*.?[0]; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/address_spaces_pointer_access_chaining_array_pointer.zig created+12| ... | @@ -0,0 +1,12 @@ | ||
| 1 | fn entry(a: *addrspace(.gs) [1]i32) *addrspace(.gs) i32 { | ||
| 2 | return &a[0]; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/address_spaces_pointer_access_chaining_complex.zig created+13| ... | @@ -0,0 +1,13 @@ | ||
| 1 | const A = struct { a: ?[1]i32 }; | ||
| 2 | fn entry(a: *addrspace(.gs) [1]A) *addrspace(.gs) i32 { | ||
| 3 | return &a[0].a.?[0]; | ||
| 4 | } | ||
| 5 | pub fn main() void { | ||
| 6 | _ = &entry; | ||
| 7 | } | ||
| 8 | |||
| 9 | // compile | ||
| 10 | // output_mode=Exe | ||
| 11 | // backend=selfhosted,llvm | ||
| 12 | // target=x86_64-linux,x86_64-macos | ||
| 13 | // | ||
test/cases/address_spaces_pointer_access_chaining_struct_pointer.zig created+13| ... | @@ -0,0 +1,13 @@ | ||
| 1 | const A = struct { a: i32 }; | ||
| 2 | fn entry(a: *addrspace(.gs) A) *addrspace(.gs) i32 { | ||
| 3 | return &a.a; | ||
| 4 | } | ||
| 5 | pub fn main() void { | ||
| 6 | _ = &entry; | ||
| 7 | } | ||
| 8 | |||
| 9 | // compile | ||
| 10 | // output_mode=Exe | ||
| 11 | // backend=selfhosted,llvm | ||
| 12 | // target=x86_64-linux,x86_64-macos | ||
| 13 | // | ||
test/cases/blocks.zig created+23| ... | @@ -0,0 +1,23 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | fn foo(ok: bool) i32 { | ||
| 6 | const val: i32 = blk: { | ||
| 7 | var x: i32 = 1; | ||
| 8 | _ = &x; | ||
| 9 | if (!ok) break :blk x + 9; | ||
| 10 | break :blk x + 19; | ||
| 11 | }; | ||
| 12 | return val + 10; | ||
| 13 | } | ||
| 14 | |||
| 15 | pub fn main() void { | ||
| 16 | assert(foo(false) == 20); | ||
| 17 | assert(foo(true) == 30); | ||
| 18 | } | ||
| 19 | |||
| 20 | // run | ||
| 21 | // backend=selfhosted,llvm | ||
| 22 | // target=x86_64-linux,x86_64-macos | ||
| 23 | // | ||
test/cases/dereferencing_though_multiple_pointers_with_address_spaces.zig created+12| ... | @@ -0,0 +1,12 @@ | ||
| 1 | fn entry(a: *addrspace(.fs) *addrspace(.gs) *i32) *i32 { | ||
| 2 | return a.*.*; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/f_segment_address_space_reading_and_writing.zig created+49| ... | @@ -0,0 +1,49 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | fn setFs(value: c_ulong) void { | ||
| 6 | asm volatile ( | ||
| 7 | \\syscall | ||
| 8 | : | ||
| 9 | : [number] "{rax}" (158), | ||
| 10 | [code] "{rdi}" (0x1002), | ||
| 11 | [val] "{rsi}" (value), | ||
| 12 | : .{ .rcx = true, .r11 = true, .memory = true } | ||
| 13 | ); | ||
| 14 | } | ||
| 15 | |||
| 16 | fn getFs() c_ulong { | ||
| 17 | var result: c_ulong = undefined; | ||
| 18 | asm volatile ( | ||
| 19 | \\syscall | ||
| 20 | : | ||
| 21 | : [number] "{rax}" (158), | ||
| 22 | [code] "{rdi}" (0x1003), | ||
| 23 | [ptr] "{rsi}" (@intFromPtr(&result)), | ||
| 24 | : .{ .rcx = true, .r11 = true, .memory = true } | ||
| 25 | ); | ||
| 26 | return result; | ||
| 27 | } | ||
| 28 | |||
| 29 | var test_value: u64 = 12345; | ||
| 30 | |||
| 31 | pub fn main() void { | ||
| 32 | const orig_fs = getFs(); | ||
| 33 | |||
| 34 | setFs(@intFromPtr(&test_value)); | ||
| 35 | assert(getFs() == @intFromPtr(&test_value)); | ||
| 36 | |||
| 37 | var test_ptr: *allowzero addrspace(.fs) u64 = @ptrFromInt(0); | ||
| 38 | _ = &test_ptr; | ||
| 39 | assert(test_ptr.* == 12345); | ||
| 40 | test_ptr.* = 98765; | ||
| 41 | assert(test_value == 98765); | ||
| 42 | |||
| 43 | setFs(orig_fs); | ||
| 44 | } | ||
| 45 | |||
| 46 | // run | ||
| 47 | // backend=llvm | ||
| 48 | // target=x86_64-linux | ||
| 49 | // | ||
test/cases/for_loop.zig created+16| ... | @@ -0,0 +1,16 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn main() void { | ||
| 6 | var x: u32 = 0; | ||
| 7 | for ("hello") |_| { | ||
| 8 | x += 1; | ||
| 9 | } | ||
| 10 | assert("hello".len == x); | ||
| 11 | } | ||
| 12 | |||
| 13 | // run | ||
| 14 | // backend=selfhosted,llvm | ||
| 15 | // target=x86_64-linux,x86_64-macos | ||
| 16 | // | ||
test/cases/hello_world.zig created+13| ... | @@ -0,0 +1,13 @@ | ||
| 1 | extern fn puts(s: [*:0]const u8) c_int; | ||
| 2 | |||
| 3 | pub fn main() void { | ||
| 4 | _ = puts("hello world!"); | ||
| 5 | } | ||
| 6 | |||
| 7 | // run | ||
| 8 | // backend=selfhosted,llvm | ||
| 9 | // target=x86_64-linux,x86_64-macos | ||
| 10 | // link_libc=true | ||
| 11 | // | ||
| 12 | // hello world! | ||
| 13 | // | ||
test/cases/large_slices.zig created+9| ... | @@ -0,0 +1,9 @@ | ||
| 1 | pub fn main() void { | ||
| 2 | const large_slice = @as([*]const u8, @ptrFromInt(1))[0..(0xffffffffffffffff >> 3)]; | ||
| 3 | _ = large_slice; | ||
| 4 | } | ||
| 5 | |||
| 6 | // compile | ||
| 7 | // backend=selfhosted,llvm | ||
| 8 | // target=x86_64-linux,x86_64-macos | ||
| 9 | // | ||
test/cases/llvm/address_space_pointer_access_chaining_pointer_to_optional_array.zig deleted-12| ... | @@ -1,12 +0,0 @@ | ||
| 1 | fn entry(a: *addrspace(.gs) ?[1]i32) *addrspace(.gs) i32 { | ||
| 2 | return &a.*.?[0]; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/llvm/address_spaces_pointer_access_chaining_array_pointer.zig deleted-12| ... | @@ -1,12 +0,0 @@ | ||
| 1 | fn entry(a: *addrspace(.gs) [1]i32) *addrspace(.gs) i32 { | ||
| 2 | return &a[0]; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/llvm/address_spaces_pointer_access_chaining_complex.zig deleted-13| ... | @@ -1,13 +0,0 @@ | ||
| 1 | const A = struct { a: ?[1]i32 }; | ||
| 2 | fn entry(a: *addrspace(.gs) [1]A) *addrspace(.gs) i32 { | ||
| 3 | return &a[0].a.?[0]; | ||
| 4 | } | ||
| 5 | pub fn main() void { | ||
| 6 | _ = &entry; | ||
| 7 | } | ||
| 8 | |||
| 9 | // compile | ||
| 10 | // output_mode=Exe | ||
| 11 | // backend=selfhosted,llvm | ||
| 12 | // target=x86_64-linux,x86_64-macos | ||
| 13 | // | ||
test/cases/llvm/address_spaces_pointer_access_chaining_struct_pointer.zig deleted-13| ... | @@ -1,13 +0,0 @@ | ||
| 1 | const A = struct { a: i32 }; | ||
| 2 | fn entry(a: *addrspace(.gs) A) *addrspace(.gs) i32 { | ||
| 3 | return &a.a; | ||
| 4 | } | ||
| 5 | pub fn main() void { | ||
| 6 | _ = &entry; | ||
| 7 | } | ||
| 8 | |||
| 9 | // compile | ||
| 10 | // output_mode=Exe | ||
| 11 | // backend=selfhosted,llvm | ||
| 12 | // target=x86_64-linux,x86_64-macos | ||
| 13 | // | ||
test/cases/llvm/blocks.zig deleted-23| ... | @@ -1,23 +0,0 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | fn foo(ok: bool) i32 { | ||
| 6 | const val: i32 = blk: { | ||
| 7 | var x: i32 = 1; | ||
| 8 | _ = &x; | ||
| 9 | if (!ok) break :blk x + 9; | ||
| 10 | break :blk x + 19; | ||
| 11 | }; | ||
| 12 | return val + 10; | ||
| 13 | } | ||
| 14 | |||
| 15 | pub fn main() void { | ||
| 16 | assert(foo(false) == 20); | ||
| 17 | assert(foo(true) == 30); | ||
| 18 | } | ||
| 19 | |||
| 20 | // run | ||
| 21 | // backend=selfhosted,llvm | ||
| 22 | // target=x86_64-linux,x86_64-macos | ||
| 23 | // | ||
test/cases/llvm/dereferencing_though_multiple_pointers_with_address_spaces.zig deleted-12| ... | @@ -1,12 +0,0 @@ | ||
| 1 | fn entry(a: *addrspace(.fs) *addrspace(.gs) *i32) *i32 { | ||
| 2 | return a.*.*; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/llvm/f_segment_address_space_reading_and_writing.zig deleted-49| ... | @@ -1,49 +0,0 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | fn setFs(value: c_ulong) void { | ||
| 6 | asm volatile ( | ||
| 7 | \\syscall | ||
| 8 | : | ||
| 9 | : [number] "{rax}" (158), | ||
| 10 | [code] "{rdi}" (0x1002), | ||
| 11 | [val] "{rsi}" (value), | ||
| 12 | : .{ .rcx = true, .r11 = true, .memory = true } | ||
| 13 | ); | ||
| 14 | } | ||
| 15 | |||
| 16 | fn getFs() c_ulong { | ||
| 17 | var result: c_ulong = undefined; | ||
| 18 | asm volatile ( | ||
| 19 | \\syscall | ||
| 20 | : | ||
| 21 | : [number] "{rax}" (158), | ||
| 22 | [code] "{rdi}" (0x1003), | ||
| 23 | [ptr] "{rsi}" (@intFromPtr(&result)), | ||
| 24 | : .{ .rcx = true, .r11 = true, .memory = true } | ||
| 25 | ); | ||
| 26 | return result; | ||
| 27 | } | ||
| 28 | |||
| 29 | var test_value: u64 = 12345; | ||
| 30 | |||
| 31 | pub fn main() void { | ||
| 32 | const orig_fs = getFs(); | ||
| 33 | |||
| 34 | setFs(@intFromPtr(&test_value)); | ||
| 35 | assert(getFs() == @intFromPtr(&test_value)); | ||
| 36 | |||
| 37 | var test_ptr: *allowzero addrspace(.fs) u64 = @ptrFromInt(0); | ||
| 38 | _ = &test_ptr; | ||
| 39 | assert(test_ptr.* == 12345); | ||
| 40 | test_ptr.* = 98765; | ||
| 41 | assert(test_value == 98765); | ||
| 42 | |||
| 43 | setFs(orig_fs); | ||
| 44 | } | ||
| 45 | |||
| 46 | // run | ||
| 47 | // backend=llvm | ||
| 48 | // target=x86_64-linux | ||
| 49 | // | ||
test/cases/llvm/for_loop.zig deleted-16| ... | @@ -1,16 +0,0 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn main() void { | ||
| 6 | var x: u32 = 0; | ||
| 7 | for ("hello") |_| { | ||
| 8 | x += 1; | ||
| 9 | } | ||
| 10 | assert("hello".len == x); | ||
| 11 | } | ||
| 12 | |||
| 13 | // run | ||
| 14 | // backend=selfhosted,llvm | ||
| 15 | // target=x86_64-linux,x86_64-macos | ||
| 16 | // | ||
test/cases/llvm/hello_world.zig deleted-13| ... | @@ -1,13 +0,0 @@ | ||
| 1 | extern fn puts(s: [*:0]const u8) c_int; | ||
| 2 | |||
| 3 | pub fn main() void { | ||
| 4 | _ = puts("hello world!"); | ||
| 5 | } | ||
| 6 | |||
| 7 | // run | ||
| 8 | // backend=selfhosted,llvm | ||
| 9 | // target=x86_64-linux,x86_64-macos | ||
| 10 | // link_libc=true | ||
| 11 | // | ||
| 12 | // hello world! | ||
| 13 | // | ||
test/cases/llvm/large_slices.zig deleted-9| ... | @@ -1,9 +0,0 @@ | ||
| 1 | pub fn main() void { | ||
| 2 | const large_slice = @as([*]const u8, @ptrFromInt(1))[0..(0xffffffffffffffff >> 3)]; | ||
| 3 | _ = large_slice; | ||
| 4 | } | ||
| 5 | |||
| 6 | // compile | ||
| 7 | // backend=selfhosted,llvm | ||
| 8 | // target=x86_64-linux,x86_64-macos | ||
| 9 | // | ||
test/cases/llvm/nested_blocks.zig deleted-24| ... | @@ -1,24 +0,0 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | fn foo(ok: bool) i32 { | ||
| 6 | var val: i32 = blk: { | ||
| 7 | const val2: i32 = another: { | ||
| 8 | if (!ok) break :blk 10; | ||
| 9 | break :another 10; | ||
| 10 | }; | ||
| 11 | break :blk val2 + 10; | ||
| 12 | }; | ||
| 13 | return (&val).*; | ||
| 14 | } | ||
| 15 | |||
| 16 | pub fn main() void { | ||
| 17 | assert(foo(false) == 10); | ||
| 18 | assert(foo(true) == 20); | ||
| 19 | } | ||
| 20 | |||
| 21 | // run | ||
| 22 | // backend=selfhosted,llvm | ||
| 23 | // target=x86_64-linux,x86_64-macos | ||
| 24 | // | ||
test/cases/llvm/optionals.zig deleted-49| ... | @@ -1,49 +0,0 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn main() void { | ||
| 6 | var opt_val: ?i32 = 10; | ||
| 7 | var null_val: ?i32 = null; | ||
| 8 | |||
| 9 | var val1: i32 = opt_val.?; | ||
| 10 | _ = &val1; | ||
| 11 | const val1_1: i32 = opt_val.?; | ||
| 12 | var ptr_val1 = &(opt_val.?); | ||
| 13 | _ = &ptr_val1; | ||
| 14 | const ptr_val1_1 = &(opt_val.?); | ||
| 15 | |||
| 16 | var val2: i32 = null_val orelse 20; | ||
| 17 | const val2_2: i32 = null_val orelse 20; | ||
| 18 | |||
| 19 | var value: i32 = 20; | ||
| 20 | var ptr_val2 = &(null_val orelse value); | ||
| 21 | _ = &ptr_val2; | ||
| 22 | |||
| 23 | const val3 = opt_val orelse 30; | ||
| 24 | var val3_var = opt_val orelse 30; | ||
| 25 | _ = &val3_var; | ||
| 26 | |||
| 27 | assert(val1 == 10); | ||
| 28 | assert(val1_1 == 10); | ||
| 29 | assert(ptr_val1.* == 10); | ||
| 30 | assert(ptr_val1_1.* == 10); | ||
| 31 | |||
| 32 | assert(val2 == 20); | ||
| 33 | assert(val2_2 == 20); | ||
| 34 | assert(ptr_val2.* == 20); | ||
| 35 | |||
| 36 | assert(val3 == 10); | ||
| 37 | assert(val3_var == 10); | ||
| 38 | |||
| 39 | (null_val orelse val2) = 1234; | ||
| 40 | assert(val2 == 1234); | ||
| 41 | |||
| 42 | (opt_val orelse val2) = 5678; | ||
| 43 | assert(opt_val.? == 5678); | ||
| 44 | } | ||
| 45 | |||
| 46 | // run | ||
| 47 | // backend=selfhosted,llvm | ||
| 48 | // target=x86_64-linux,x86_64-macos | ||
| 49 | // | ||
test/cases/llvm/pointer_keeps_address_space.zig deleted-12| ... | @@ -1,12 +0,0 @@ | ||
| 1 | fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 { | ||
| 2 | return a; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/llvm/pointer_keeps_address_space_when_taking_address_of_dereference.zig deleted-12| ... | @@ -1,12 +0,0 @@ | ||
| 1 | fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 { | ||
| 2 | return &a.*; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/llvm/pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig deleted-12| ... | @@ -1,12 +0,0 @@ | ||
| 1 | fn entry(a: *addrspace(.generic) i32) *i32 { | ||
| 2 | return a; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/llvm/rem.zig deleted-15| ... | @@ -1,15 +0,0 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | fn rem(lhs: i32, rhs: i32, expected: i32) bool { | ||
| 5 | return @rem(lhs, rhs) == expected; | ||
| 6 | } | ||
| 7 | pub fn main() void { | ||
| 8 | assert(rem(-5, 3, -2)); | ||
| 9 | assert(rem(5, 3, 2)); | ||
| 10 | } | ||
| 11 | |||
| 12 | // run | ||
| 13 | // backend=selfhosted,llvm | ||
| 14 | // target=x86_64-linux,x86_64-macos | ||
| 15 | // | ||
test/cases/llvm/simple_addition_and_subtraction.zig deleted-21| ... | @@ -1,21 +0,0 @@ | ||
| 1 | fn add(a: i32, b: i32) i32 { | ||
| 2 | return a + b; | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn main() void { | ||
| 6 | var a: i32 = -5; | ||
| 7 | _ = &a; | ||
| 8 | const x = add(a, 7); | ||
| 9 | var y = add(2, 0); | ||
| 10 | y -= x; | ||
| 11 | assert(y == 0); | ||
| 12 | } | ||
| 13 | |||
| 14 | fn assert(ok: bool) void { | ||
| 15 | if (!ok) unreachable; | ||
| 16 | } | ||
| 17 | |||
| 18 | // run | ||
| 19 | // backend=selfhosted,llvm | ||
| 20 | // target=x86_64-linux,x86_64-macos | ||
| 21 | // | ||
test/cases/llvm/simple_if_statement.zig deleted-16| ... | @@ -1,16 +0,0 @@ | ||
| 1 | fn add(a: i32, b: i32) i32 { | ||
| 2 | return a + b; | ||
| 3 | } | ||
| 4 | |||
| 5 | fn assert(ok: bool) void { | ||
| 6 | if (!ok) unreachable; | ||
| 7 | } | ||
| 8 | |||
| 9 | pub fn main() void { | ||
| 10 | assert(add(1, 2) == 3); | ||
| 11 | } | ||
| 12 | |||
| 13 | // run | ||
| 14 | // backend=selfhosted,llvm | ||
| 15 | // target=x86_64-linux,x86_64-macos | ||
| 16 | // | ||
test/cases/llvm/while_loops.zig deleted-18| ... | @@ -1,18 +0,0 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn main() void { | ||
| 6 | var sum: u32 = 0; | ||
| 7 | var i: u32 = 0; | ||
| 8 | while (i < 5) : (i += 1) { | ||
| 9 | sum += i; | ||
| 10 | } | ||
| 11 | assert(sum == 10); | ||
| 12 | assert(i == 5); | ||
| 13 | } | ||
| 14 | |||
| 15 | // run | ||
| 16 | // backend=selfhosted,llvm | ||
| 17 | // target=x86_64-linux,x86_64-macos | ||
| 18 | // | ||
test/cases/nested_blocks.zig created+24| ... | @@ -0,0 +1,24 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | fn foo(ok: bool) i32 { | ||
| 6 | var val: i32 = blk: { | ||
| 7 | const val2: i32 = another: { | ||
| 8 | if (!ok) break :blk 10; | ||
| 9 | break :another 10; | ||
| 10 | }; | ||
| 11 | break :blk val2 + 10; | ||
| 12 | }; | ||
| 13 | return (&val).*; | ||
| 14 | } | ||
| 15 | |||
| 16 | pub fn main() void { | ||
| 17 | assert(foo(false) == 10); | ||
| 18 | assert(foo(true) == 20); | ||
| 19 | } | ||
| 20 | |||
| 21 | // run | ||
| 22 | // backend=selfhosted,llvm | ||
| 23 | // target=x86_64-linux,x86_64-macos | ||
| 24 | // | ||
test/cases/optionals.zig created+49| ... | @@ -0,0 +1,49 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn main() void { | ||
| 6 | var opt_val: ?i32 = 10; | ||
| 7 | var null_val: ?i32 = null; | ||
| 8 | |||
| 9 | var val1: i32 = opt_val.?; | ||
| 10 | _ = &val1; | ||
| 11 | const val1_1: i32 = opt_val.?; | ||
| 12 | var ptr_val1 = &(opt_val.?); | ||
| 13 | _ = &ptr_val1; | ||
| 14 | const ptr_val1_1 = &(opt_val.?); | ||
| 15 | |||
| 16 | var val2: i32 = null_val orelse 20; | ||
| 17 | const val2_2: i32 = null_val orelse 20; | ||
| 18 | |||
| 19 | var value: i32 = 20; | ||
| 20 | var ptr_val2 = &(null_val orelse value); | ||
| 21 | _ = &ptr_val2; | ||
| 22 | |||
| 23 | const val3 = opt_val orelse 30; | ||
| 24 | var val3_var = opt_val orelse 30; | ||
| 25 | _ = &val3_var; | ||
| 26 | |||
| 27 | assert(val1 == 10); | ||
| 28 | assert(val1_1 == 10); | ||
| 29 | assert(ptr_val1.* == 10); | ||
| 30 | assert(ptr_val1_1.* == 10); | ||
| 31 | |||
| 32 | assert(val2 == 20); | ||
| 33 | assert(val2_2 == 20); | ||
| 34 | assert(ptr_val2.* == 20); | ||
| 35 | |||
| 36 | assert(val3 == 10); | ||
| 37 | assert(val3_var == 10); | ||
| 38 | |||
| 39 | (null_val orelse val2) = 1234; | ||
| 40 | assert(val2 == 1234); | ||
| 41 | |||
| 42 | (opt_val orelse val2) = 5678; | ||
| 43 | assert(opt_val.? == 5678); | ||
| 44 | } | ||
| 45 | |||
| 46 | // run | ||
| 47 | // backend=selfhosted,llvm | ||
| 48 | // target=x86_64-linux,x86_64-macos | ||
| 49 | // | ||
test/cases/pointer_keeps_address_space.zig created+12| ... | @@ -0,0 +1,12 @@ | ||
| 1 | fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 { | ||
| 2 | return a; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/pointer_keeps_address_space_when_taking_address_of_dereference.zig created+12| ... | @@ -0,0 +1,12 @@ | ||
| 1 | fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 { | ||
| 2 | return &a.*; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig created+12| ... | @@ -0,0 +1,12 @@ | ||
| 1 | fn entry(a: *addrspace(.generic) i32) *i32 { | ||
| 2 | return a; | ||
| 3 | } | ||
| 4 | pub fn main() void { | ||
| 5 | _ = &entry; | ||
| 6 | } | ||
| 7 | |||
| 8 | // compile | ||
| 9 | // output_mode=Exe | ||
| 10 | // backend=selfhosted,llvm | ||
| 11 | // target=x86_64-linux,x86_64-macos | ||
| 12 | // | ||
test/cases/rem.zig created+15| ... | @@ -0,0 +1,15 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | fn rem(lhs: i32, rhs: i32, expected: i32) bool { | ||
| 5 | return @rem(lhs, rhs) == expected; | ||
| 6 | } | ||
| 7 | pub fn main() void { | ||
| 8 | assert(rem(-5, 3, -2)); | ||
| 9 | assert(rem(5, 3, 2)); | ||
| 10 | } | ||
| 11 | |||
| 12 | // run | ||
| 13 | // backend=selfhosted,llvm | ||
| 14 | // target=x86_64-linux,x86_64-macos | ||
| 15 | // | ||
test/cases/simple_addition_and_subtraction.zig created+21| ... | @@ -0,0 +1,21 @@ | ||
| 1 | fn add(a: i32, b: i32) i32 { | ||
| 2 | return a + b; | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn main() void { | ||
| 6 | var a: i32 = -5; | ||
| 7 | _ = &a; | ||
| 8 | const x = add(a, 7); | ||
| 9 | var y = add(2, 0); | ||
| 10 | y -= x; | ||
| 11 | assert(y == 0); | ||
| 12 | } | ||
| 13 | |||
| 14 | fn assert(ok: bool) void { | ||
| 15 | if (!ok) unreachable; | ||
| 16 | } | ||
| 17 | |||
| 18 | // run | ||
| 19 | // backend=selfhosted,llvm | ||
| 20 | // target=x86_64-linux,x86_64-macos | ||
| 21 | // | ||
test/cases/simple_if_statement.zig created+16| ... | @@ -0,0 +1,16 @@ | ||
| 1 | fn add(a: i32, b: i32) i32 { | ||
| 2 | return a + b; | ||
| 3 | } | ||
| 4 | |||
| 5 | fn assert(ok: bool) void { | ||
| 6 | if (!ok) unreachable; | ||
| 7 | } | ||
| 8 | |||
| 9 | pub fn main() void { | ||
| 10 | assert(add(1, 2) == 3); | ||
| 11 | } | ||
| 12 | |||
| 13 | // run | ||
| 14 | // backend=selfhosted,llvm | ||
| 15 | // target=x86_64-linux,x86_64-macos | ||
| 16 | // | ||
test/cases/while_loops.zig created+18| ... | @@ -0,0 +1,18 @@ | ||
| 1 | fn assert(ok: bool) void { | ||
| 2 | if (!ok) unreachable; | ||
| 3 | } | ||
| 4 | |||
| 5 | pub fn main() void { | ||
| 6 | var sum: u32 = 0; | ||
| 7 | var i: u32 = 0; | ||
| 8 | while (i < 5) : (i += 1) { | ||
| 9 | sum += i; | ||
| 10 | } | ||
| 11 | assert(sum == 10); | ||
| 12 | assert(i == 5); | ||
| 13 | } | ||
| 14 | |||
| 15 | // run | ||
| 16 | // backend=selfhosted,llvm | ||
| 17 | // target=x86_64-linux,x86_64-macos | ||
| 18 | // | ||