diff --git a/test/cases/address_space_pointer_access_chaining_pointer_to_optional_array.zig b/test/cases/address_space_pointer_access_chaining_pointer_to_optional_array.zig new file mode 100644 index 0000000000000000000000000000000000000000..375a3a1375b8444171d9cf7d1bb4c5873c1bdb29 --- /dev/null +++ b/test/cases/address_space_pointer_access_chaining_pointer_to_optional_array.zig @@ -0,0 +1,12 @@ +fn entry(a: *addrspace(.gs) ?[1]i32) *addrspace(.gs) i32 { + return &a.*.?[0]; +} +pub fn main() void { + _ = &entry; +} + +// compile +// output_mode=Exe +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/address_spaces_pointer_access_chaining_array_pointer.zig b/test/cases/address_spaces_pointer_access_chaining_array_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..685b02aa337bcf87c60a74cc8c3553a16dd79e32 --- /dev/null +++ b/test/cases/address_spaces_pointer_access_chaining_array_pointer.zig @@ -0,0 +1,12 @@ +fn entry(a: *addrspace(.gs) [1]i32) *addrspace(.gs) i32 { + return &a[0]; +} +pub fn main() void { + _ = &entry; +} + +// compile +// output_mode=Exe +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/address_spaces_pointer_access_chaining_complex.zig b/test/cases/address_spaces_pointer_access_chaining_complex.zig new file mode 100644 index 0000000000000000000000000000000000000000..3d167ef358d165041f7564e674d2424a4f086da5 --- /dev/null +++ b/test/cases/address_spaces_pointer_access_chaining_complex.zig @@ -0,0 +1,13 @@ +const A = struct { a: ?[1]i32 }; +fn entry(a: *addrspace(.gs) [1]A) *addrspace(.gs) i32 { + return &a[0].a.?[0]; +} +pub fn main() void { + _ = &entry; +} + +// compile +// output_mode=Exe +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/address_spaces_pointer_access_chaining_struct_pointer.zig b/test/cases/address_spaces_pointer_access_chaining_struct_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..5cbee88ef8e4ca5f097cbe748a941e6c73de392c --- /dev/null +++ b/test/cases/address_spaces_pointer_access_chaining_struct_pointer.zig @@ -0,0 +1,13 @@ +const A = struct { a: i32 }; +fn entry(a: *addrspace(.gs) A) *addrspace(.gs) i32 { + return &a.a; +} +pub fn main() void { + _ = &entry; +} + +// compile +// output_mode=Exe +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/blocks.zig b/test/cases/blocks.zig new file mode 100644 index 0000000000000000000000000000000000000000..542374a76c84d3cf6ba66cec705e5aa6c2f8dcda --- /dev/null +++ b/test/cases/blocks.zig @@ -0,0 +1,23 @@ +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +fn foo(ok: bool) i32 { + const val: i32 = blk: { + var x: i32 = 1; + _ = &x; + if (!ok) break :blk x + 9; + break :blk x + 19; + }; + return val + 10; +} + +pub fn main() void { + assert(foo(false) == 20); + assert(foo(true) == 30); +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/dereferencing_though_multiple_pointers_with_address_spaces.zig b/test/cases/dereferencing_though_multiple_pointers_with_address_spaces.zig new file mode 100644 index 0000000000000000000000000000000000000000..80a44865fbb4990fd6e701637c54fc105ce88265 --- /dev/null +++ b/test/cases/dereferencing_though_multiple_pointers_with_address_spaces.zig @@ -0,0 +1,12 @@ +fn entry(a: *addrspace(.fs) *addrspace(.gs) *i32) *i32 { + return a.*.*; +} +pub fn main() void { + _ = &entry; +} + +// compile +// output_mode=Exe +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/f_segment_address_space_reading_and_writing.zig b/test/cases/f_segment_address_space_reading_and_writing.zig new file mode 100644 index 0000000000000000000000000000000000000000..73c08ec1a7d9ba98bda43d6e5d86afa73e4ead51 --- /dev/null +++ b/test/cases/f_segment_address_space_reading_and_writing.zig @@ -0,0 +1,49 @@ +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +fn setFs(value: c_ulong) void { + asm volatile ( + \\syscall + : + : [number] "{rax}" (158), + [code] "{rdi}" (0x1002), + [val] "{rsi}" (value), + : .{ .rcx = true, .r11 = true, .memory = true } + ); +} + +fn getFs() c_ulong { + var result: c_ulong = undefined; + asm volatile ( + \\syscall + : + : [number] "{rax}" (158), + [code] "{rdi}" (0x1003), + [ptr] "{rsi}" (@intFromPtr(&result)), + : .{ .rcx = true, .r11 = true, .memory = true } + ); + return result; +} + +var test_value: u64 = 12345; + +pub fn main() void { + const orig_fs = getFs(); + + setFs(@intFromPtr(&test_value)); + assert(getFs() == @intFromPtr(&test_value)); + + var test_ptr: *allowzero addrspace(.fs) u64 = @ptrFromInt(0); + _ = &test_ptr; + assert(test_ptr.* == 12345); + test_ptr.* = 98765; + assert(test_value == 98765); + + setFs(orig_fs); +} + +// run +// backend=llvm +// target=x86_64-linux +// diff --git a/test/cases/for_loop.zig b/test/cases/for_loop.zig new file mode 100644 index 0000000000000000000000000000000000000000..3be46777d807683a981a57e359a85145fb99f0b3 --- /dev/null +++ b/test/cases/for_loop.zig @@ -0,0 +1,16 @@ +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +pub fn main() void { + var x: u32 = 0; + for ("hello") |_| { + x += 1; + } + assert("hello".len == x); +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/hello_world.zig b/test/cases/hello_world.zig new file mode 100644 index 0000000000000000000000000000000000000000..8a75c68d2b84bcdf2d179ffed204288a85a941e4 --- /dev/null +++ b/test/cases/hello_world.zig @@ -0,0 +1,13 @@ +extern fn puts(s: [*:0]const u8) c_int; + +pub fn main() void { + _ = puts("hello world!"); +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// link_libc=true +// +// hello world! +// diff --git a/test/cases/large_slices.zig b/test/cases/large_slices.zig new file mode 100644 index 0000000000000000000000000000000000000000..a7d19174fdf7c1e911d64566ce9ac1a31f90c74d --- /dev/null +++ b/test/cases/large_slices.zig @@ -0,0 +1,9 @@ +pub fn main() void { + const large_slice = @as([*]const u8, @ptrFromInt(1))[0..(0xffffffffffffffff >> 3)]; + _ = large_slice; +} + +// compile +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/llvm/address_space_pointer_access_chaining_pointer_to_optional_array.zig b/test/cases/llvm/address_space_pointer_access_chaining_pointer_to_optional_array.zig deleted file mode 100644 index 375a3a1375b8444171d9cf7d1bb4c5873c1bdb29..0000000000000000000000000000000000000000 --- a/test/cases/llvm/address_space_pointer_access_chaining_pointer_to_optional_array.zig +++ /dev/null @@ -1,12 +0,0 @@ -fn entry(a: *addrspace(.gs) ?[1]i32) *addrspace(.gs) i32 { - return &a.*.?[0]; -} -pub fn main() void { - _ = &entry; -} - -// compile -// output_mode=Exe -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/address_spaces_pointer_access_chaining_array_pointer.zig b/test/cases/llvm/address_spaces_pointer_access_chaining_array_pointer.zig deleted file mode 100644 index 685b02aa337bcf87c60a74cc8c3553a16dd79e32..0000000000000000000000000000000000000000 --- a/test/cases/llvm/address_spaces_pointer_access_chaining_array_pointer.zig +++ /dev/null @@ -1,12 +0,0 @@ -fn entry(a: *addrspace(.gs) [1]i32) *addrspace(.gs) i32 { - return &a[0]; -} -pub fn main() void { - _ = &entry; -} - -// compile -// output_mode=Exe -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/address_spaces_pointer_access_chaining_complex.zig b/test/cases/llvm/address_spaces_pointer_access_chaining_complex.zig deleted file mode 100644 index 3d167ef358d165041f7564e674d2424a4f086da5..0000000000000000000000000000000000000000 --- a/test/cases/llvm/address_spaces_pointer_access_chaining_complex.zig +++ /dev/null @@ -1,13 +0,0 @@ -const A = struct { a: ?[1]i32 }; -fn entry(a: *addrspace(.gs) [1]A) *addrspace(.gs) i32 { - return &a[0].a.?[0]; -} -pub fn main() void { - _ = &entry; -} - -// compile -// output_mode=Exe -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/address_spaces_pointer_access_chaining_struct_pointer.zig b/test/cases/llvm/address_spaces_pointer_access_chaining_struct_pointer.zig deleted file mode 100644 index 5cbee88ef8e4ca5f097cbe748a941e6c73de392c..0000000000000000000000000000000000000000 --- a/test/cases/llvm/address_spaces_pointer_access_chaining_struct_pointer.zig +++ /dev/null @@ -1,13 +0,0 @@ -const A = struct { a: i32 }; -fn entry(a: *addrspace(.gs) A) *addrspace(.gs) i32 { - return &a.a; -} -pub fn main() void { - _ = &entry; -} - -// compile -// output_mode=Exe -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/blocks.zig b/test/cases/llvm/blocks.zig deleted file mode 100644 index 542374a76c84d3cf6ba66cec705e5aa6c2f8dcda..0000000000000000000000000000000000000000 --- a/test/cases/llvm/blocks.zig +++ /dev/null @@ -1,23 +0,0 @@ -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -fn foo(ok: bool) i32 { - const val: i32 = blk: { - var x: i32 = 1; - _ = &x; - if (!ok) break :blk x + 9; - break :blk x + 19; - }; - return val + 10; -} - -pub fn main() void { - assert(foo(false) == 20); - assert(foo(true) == 30); -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/dereferencing_though_multiple_pointers_with_address_spaces.zig b/test/cases/llvm/dereferencing_though_multiple_pointers_with_address_spaces.zig deleted file mode 100644 index 80a44865fbb4990fd6e701637c54fc105ce88265..0000000000000000000000000000000000000000 --- a/test/cases/llvm/dereferencing_though_multiple_pointers_with_address_spaces.zig +++ /dev/null @@ -1,12 +0,0 @@ -fn entry(a: *addrspace(.fs) *addrspace(.gs) *i32) *i32 { - return a.*.*; -} -pub fn main() void { - _ = &entry; -} - -// compile -// output_mode=Exe -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/f_segment_address_space_reading_and_writing.zig b/test/cases/llvm/f_segment_address_space_reading_and_writing.zig deleted file mode 100644 index 73c08ec1a7d9ba98bda43d6e5d86afa73e4ead51..0000000000000000000000000000000000000000 --- a/test/cases/llvm/f_segment_address_space_reading_and_writing.zig +++ /dev/null @@ -1,49 +0,0 @@ -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -fn setFs(value: c_ulong) void { - asm volatile ( - \\syscall - : - : [number] "{rax}" (158), - [code] "{rdi}" (0x1002), - [val] "{rsi}" (value), - : .{ .rcx = true, .r11 = true, .memory = true } - ); -} - -fn getFs() c_ulong { - var result: c_ulong = undefined; - asm volatile ( - \\syscall - : - : [number] "{rax}" (158), - [code] "{rdi}" (0x1003), - [ptr] "{rsi}" (@intFromPtr(&result)), - : .{ .rcx = true, .r11 = true, .memory = true } - ); - return result; -} - -var test_value: u64 = 12345; - -pub fn main() void { - const orig_fs = getFs(); - - setFs(@intFromPtr(&test_value)); - assert(getFs() == @intFromPtr(&test_value)); - - var test_ptr: *allowzero addrspace(.fs) u64 = @ptrFromInt(0); - _ = &test_ptr; - assert(test_ptr.* == 12345); - test_ptr.* = 98765; - assert(test_value == 98765); - - setFs(orig_fs); -} - -// run -// backend=llvm -// target=x86_64-linux -// diff --git a/test/cases/llvm/for_loop.zig b/test/cases/llvm/for_loop.zig deleted file mode 100644 index 3be46777d807683a981a57e359a85145fb99f0b3..0000000000000000000000000000000000000000 --- a/test/cases/llvm/for_loop.zig +++ /dev/null @@ -1,16 +0,0 @@ -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -pub fn main() void { - var x: u32 = 0; - for ("hello") |_| { - x += 1; - } - assert("hello".len == x); -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/hello_world.zig b/test/cases/llvm/hello_world.zig deleted file mode 100644 index 8a75c68d2b84bcdf2d179ffed204288a85a941e4..0000000000000000000000000000000000000000 --- a/test/cases/llvm/hello_world.zig +++ /dev/null @@ -1,13 +0,0 @@ -extern fn puts(s: [*:0]const u8) c_int; - -pub fn main() void { - _ = puts("hello world!"); -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// link_libc=true -// -// hello world! -// diff --git a/test/cases/llvm/large_slices.zig b/test/cases/llvm/large_slices.zig deleted file mode 100644 index a7d19174fdf7c1e911d64566ce9ac1a31f90c74d..0000000000000000000000000000000000000000 --- a/test/cases/llvm/large_slices.zig +++ /dev/null @@ -1,9 +0,0 @@ -pub fn main() void { - const large_slice = @as([*]const u8, @ptrFromInt(1))[0..(0xffffffffffffffff >> 3)]; - _ = large_slice; -} - -// compile -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/nested_blocks.zig b/test/cases/llvm/nested_blocks.zig deleted file mode 100644 index 9c5415a667399bb1235c649ae0f72a68386342d9..0000000000000000000000000000000000000000 --- a/test/cases/llvm/nested_blocks.zig +++ /dev/null @@ -1,24 +0,0 @@ -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -fn foo(ok: bool) i32 { - var val: i32 = blk: { - const val2: i32 = another: { - if (!ok) break :blk 10; - break :another 10; - }; - break :blk val2 + 10; - }; - return (&val).*; -} - -pub fn main() void { - assert(foo(false) == 10); - assert(foo(true) == 20); -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/optionals.zig b/test/cases/llvm/optionals.zig deleted file mode 100644 index be7afa2ee25fc2d0f99274e5eb400895b1d30e8c..0000000000000000000000000000000000000000 --- a/test/cases/llvm/optionals.zig +++ /dev/null @@ -1,49 +0,0 @@ -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -pub fn main() void { - var opt_val: ?i32 = 10; - var null_val: ?i32 = null; - - var val1: i32 = opt_val.?; - _ = &val1; - const val1_1: i32 = opt_val.?; - var ptr_val1 = &(opt_val.?); - _ = &ptr_val1; - const ptr_val1_1 = &(opt_val.?); - - var val2: i32 = null_val orelse 20; - const val2_2: i32 = null_val orelse 20; - - var value: i32 = 20; - var ptr_val2 = &(null_val orelse value); - _ = &ptr_val2; - - const val3 = opt_val orelse 30; - var val3_var = opt_val orelse 30; - _ = &val3_var; - - assert(val1 == 10); - assert(val1_1 == 10); - assert(ptr_val1.* == 10); - assert(ptr_val1_1.* == 10); - - assert(val2 == 20); - assert(val2_2 == 20); - assert(ptr_val2.* == 20); - - assert(val3 == 10); - assert(val3_var == 10); - - (null_val orelse val2) = 1234; - assert(val2 == 1234); - - (opt_val orelse val2) = 5678; - assert(opt_val.? == 5678); -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/pointer_keeps_address_space.zig b/test/cases/llvm/pointer_keeps_address_space.zig deleted file mode 100644 index 6791fc9523a1fc14a55633677cbfba3bd59dd017..0000000000000000000000000000000000000000 --- a/test/cases/llvm/pointer_keeps_address_space.zig +++ /dev/null @@ -1,12 +0,0 @@ -fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 { - return a; -} -pub fn main() void { - _ = &entry; -} - -// compile -// output_mode=Exe -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/pointer_keeps_address_space_when_taking_address_of_dereference.zig b/test/cases/llvm/pointer_keeps_address_space_when_taking_address_of_dereference.zig deleted file mode 100644 index dee11a7453f3003f3fdc34fee97ccb218ffb3392..0000000000000000000000000000000000000000 --- a/test/cases/llvm/pointer_keeps_address_space_when_taking_address_of_dereference.zig +++ /dev/null @@ -1,12 +0,0 @@ -fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 { - return &a.*; -} -pub fn main() void { - _ = &entry; -} - -// compile -// output_mode=Exe -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig b/test/cases/llvm/pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig deleted file mode 100644 index a8ef4a11639ff6a97cc72e91139dc85bac4a0e44..0000000000000000000000000000000000000000 --- a/test/cases/llvm/pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig +++ /dev/null @@ -1,12 +0,0 @@ -fn entry(a: *addrspace(.generic) i32) *i32 { - return a; -} -pub fn main() void { - _ = &entry; -} - -// compile -// output_mode=Exe -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/rem.zig b/test/cases/llvm/rem.zig deleted file mode 100644 index 40bda6b635e10d398139b19a47e27d575486e90b..0000000000000000000000000000000000000000 --- a/test/cases/llvm/rem.zig +++ /dev/null @@ -1,15 +0,0 @@ -fn assert(ok: bool) void { - if (!ok) unreachable; -} -fn rem(lhs: i32, rhs: i32, expected: i32) bool { - return @rem(lhs, rhs) == expected; -} -pub fn main() void { - assert(rem(-5, 3, -2)); - assert(rem(5, 3, 2)); -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/simple_addition_and_subtraction.zig b/test/cases/llvm/simple_addition_and_subtraction.zig deleted file mode 100644 index 7bee16c349ffa67f6634f8ea5499cb710a91a4cb..0000000000000000000000000000000000000000 --- a/test/cases/llvm/simple_addition_and_subtraction.zig +++ /dev/null @@ -1,21 +0,0 @@ -fn add(a: i32, b: i32) i32 { - return a + b; -} - -pub fn main() void { - var a: i32 = -5; - _ = &a; - const x = add(a, 7); - var y = add(2, 0); - y -= x; - assert(y == 0); -} - -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/simple_if_statement.zig b/test/cases/llvm/simple_if_statement.zig deleted file mode 100644 index 9b711309bfcccecc7cfe776b070e965e6baa8b11..0000000000000000000000000000000000000000 --- a/test/cases/llvm/simple_if_statement.zig +++ /dev/null @@ -1,16 +0,0 @@ -fn add(a: i32, b: i32) i32 { - return a + b; -} - -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -pub fn main() void { - assert(add(1, 2) == 3); -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/llvm/while_loops.zig b/test/cases/llvm/while_loops.zig deleted file mode 100644 index 0dceba0caa80e837126003118b78f2e7e2701726..0000000000000000000000000000000000000000 --- a/test/cases/llvm/while_loops.zig +++ /dev/null @@ -1,18 +0,0 @@ -fn assert(ok: bool) void { - if (!ok) unreachable; -} - -pub fn main() void { - var sum: u32 = 0; - var i: u32 = 0; - while (i < 5) : (i += 1) { - sum += i; - } - assert(sum == 10); - assert(i == 5); -} - -// run -// backend=selfhosted,llvm -// target=x86_64-linux,x86_64-macos -// diff --git a/test/cases/nested_blocks.zig b/test/cases/nested_blocks.zig new file mode 100644 index 0000000000000000000000000000000000000000..9c5415a667399bb1235c649ae0f72a68386342d9 --- /dev/null +++ b/test/cases/nested_blocks.zig @@ -0,0 +1,24 @@ +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +fn foo(ok: bool) i32 { + var val: i32 = blk: { + const val2: i32 = another: { + if (!ok) break :blk 10; + break :another 10; + }; + break :blk val2 + 10; + }; + return (&val).*; +} + +pub fn main() void { + assert(foo(false) == 10); + assert(foo(true) == 20); +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/optionals.zig b/test/cases/optionals.zig new file mode 100644 index 0000000000000000000000000000000000000000..be7afa2ee25fc2d0f99274e5eb400895b1d30e8c --- /dev/null +++ b/test/cases/optionals.zig @@ -0,0 +1,49 @@ +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +pub fn main() void { + var opt_val: ?i32 = 10; + var null_val: ?i32 = null; + + var val1: i32 = opt_val.?; + _ = &val1; + const val1_1: i32 = opt_val.?; + var ptr_val1 = &(opt_val.?); + _ = &ptr_val1; + const ptr_val1_1 = &(opt_val.?); + + var val2: i32 = null_val orelse 20; + const val2_2: i32 = null_val orelse 20; + + var value: i32 = 20; + var ptr_val2 = &(null_val orelse value); + _ = &ptr_val2; + + const val3 = opt_val orelse 30; + var val3_var = opt_val orelse 30; + _ = &val3_var; + + assert(val1 == 10); + assert(val1_1 == 10); + assert(ptr_val1.* == 10); + assert(ptr_val1_1.* == 10); + + assert(val2 == 20); + assert(val2_2 == 20); + assert(ptr_val2.* == 20); + + assert(val3 == 10); + assert(val3_var == 10); + + (null_val orelse val2) = 1234; + assert(val2 == 1234); + + (opt_val orelse val2) = 5678; + assert(opt_val.? == 5678); +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/pointer_keeps_address_space.zig b/test/cases/pointer_keeps_address_space.zig new file mode 100644 index 0000000000000000000000000000000000000000..6791fc9523a1fc14a55633677cbfba3bd59dd017 --- /dev/null +++ b/test/cases/pointer_keeps_address_space.zig @@ -0,0 +1,12 @@ +fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 { + return a; +} +pub fn main() void { + _ = &entry; +} + +// compile +// output_mode=Exe +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/pointer_keeps_address_space_when_taking_address_of_dereference.zig b/test/cases/pointer_keeps_address_space_when_taking_address_of_dereference.zig new file mode 100644 index 0000000000000000000000000000000000000000..dee11a7453f3003f3fdc34fee97ccb218ffb3392 --- /dev/null +++ b/test/cases/pointer_keeps_address_space_when_taking_address_of_dereference.zig @@ -0,0 +1,12 @@ +fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 { + return &a.*; +} +pub fn main() void { + _ = &entry; +} + +// compile +// output_mode=Exe +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig b/test/cases/pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig new file mode 100644 index 0000000000000000000000000000000000000000..a8ef4a11639ff6a97cc72e91139dc85bac4a0e44 --- /dev/null +++ b/test/cases/pointer_to_explicit_generic_address_space_coerces_to_implicit_pointer.zig @@ -0,0 +1,12 @@ +fn entry(a: *addrspace(.generic) i32) *i32 { + return a; +} +pub fn main() void { + _ = &entry; +} + +// compile +// output_mode=Exe +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/rem.zig b/test/cases/rem.zig new file mode 100644 index 0000000000000000000000000000000000000000..40bda6b635e10d398139b19a47e27d575486e90b --- /dev/null +++ b/test/cases/rem.zig @@ -0,0 +1,15 @@ +fn assert(ok: bool) void { + if (!ok) unreachable; +} +fn rem(lhs: i32, rhs: i32, expected: i32) bool { + return @rem(lhs, rhs) == expected; +} +pub fn main() void { + assert(rem(-5, 3, -2)); + assert(rem(5, 3, 2)); +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/simple_addition_and_subtraction.zig b/test/cases/simple_addition_and_subtraction.zig new file mode 100644 index 0000000000000000000000000000000000000000..7bee16c349ffa67f6634f8ea5499cb710a91a4cb --- /dev/null +++ b/test/cases/simple_addition_and_subtraction.zig @@ -0,0 +1,21 @@ +fn add(a: i32, b: i32) i32 { + return a + b; +} + +pub fn main() void { + var a: i32 = -5; + _ = &a; + const x = add(a, 7); + var y = add(2, 0); + y -= x; + assert(y == 0); +} + +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/simple_if_statement.zig b/test/cases/simple_if_statement.zig new file mode 100644 index 0000000000000000000000000000000000000000..9b711309bfcccecc7cfe776b070e965e6baa8b11 --- /dev/null +++ b/test/cases/simple_if_statement.zig @@ -0,0 +1,16 @@ +fn add(a: i32, b: i32) i32 { + return a + b; +} + +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +pub fn main() void { + assert(add(1, 2) == 3); +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +// diff --git a/test/cases/while_loops.zig b/test/cases/while_loops.zig new file mode 100644 index 0000000000000000000000000000000000000000..0dceba0caa80e837126003118b78f2e7e2701726 --- /dev/null +++ b/test/cases/while_loops.zig @@ -0,0 +1,18 @@ +fn assert(ok: bool) void { + if (!ok) unreachable; +} + +pub fn main() void { + var sum: u32 = 0; + var i: u32 = 0; + while (i < 5) : (i += 1) { + sum += i; + } + assert(sum == 10); + assert(i == 5); +} + +// run +// backend=selfhosted,llvm +// target=x86_64-linux,x86_64-macos +//