From 00b690540e561391d17c65e45f818db6be8fecec Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 26 Apr 2023 12:49:32 -0700 Subject: llvm backend: fix lowering of memset The bitcast of ABI size 1 elements was problematic for some types. --- test/behavior/basic.zig | 90 ------------------------------------------------- 1 file changed, 90 deletions(-) (limited to 'test/behavior/basic.zig') diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig index 06b1fdda64..437b1b1373 100644 --- a/test/behavior/basic.zig +++ b/test/behavior/basic.zig @@ -353,96 +353,6 @@ fn f2(x: bool) []const u8 { return (if (x) &fA else &fB)(); } -test "@memset on array pointers" { - if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) { - // TODO: implement memset when element ABI size > 1 - return error.SkipZigTest; - } - - try testMemsetArray(); - try comptime testMemsetArray(); -} - -fn testMemsetArray() !void { - { - // memset array to non-undefined, ABI size == 1 - var foo: [20]u8 = undefined; - @memset(&foo, 'A'); - try expect(foo[0] == 'A'); - try expect(foo[11] == 'A'); - try expect(foo[19] == 'A'); - } - { - // memset array to non-undefined, ABI size > 1 - var foo: [20]u32 = undefined; - @memset(&foo, 1234); - try expect(foo[0] == 1234); - try expect(foo[11] == 1234); - try expect(foo[19] == 1234); - } -} - -test "@memset on slices" { - if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) { - // TODO: implement memset when element ABI size > 1 - // TODO: implement memset on slices - return error.SkipZigTest; - } - - try testMemsetSlice(); - try comptime testMemsetSlice(); -} - -fn testMemsetSlice() !void { - { - // memset slice to non-undefined, ABI size == 1 - var array: [20]u8 = undefined; - var len = array.len; - var slice = array[0..len]; - @memset(slice, 'A'); - try expect(slice[0] == 'A'); - try expect(slice[11] == 'A'); - try expect(slice[19] == 'A'); - } - { - // memset slice to non-undefined, ABI size > 1 - var array: [20]u32 = undefined; - var len = array.len; - var slice = array[0..len]; - @memset(slice, 1234); - try expect(slice[0] == 1234); - try expect(slice[11] == 1234); - try expect(slice[19] == 1234); - } -} - -test "memcpy and memset intrinsics" { - if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO - - try testMemcpyMemset(); - try comptime testMemcpyMemset(); -} - -fn testMemcpyMemset() !void { - var foo: [20]u8 = undefined; - var bar: [20]u8 = undefined; - - @memset(&foo, 'A'); - @memcpy(&bar, &foo); - - try expect(bar[0] == 'A'); - try expect(bar[11] == 'A'); - try expect(bar[19] == 'A'); -} - test "variable is allowed to be a pointer to an opaque type" { var x: i32 = 1234; _ = hereIsAnOpaqueType(@ptrCast(*OpaqueA, &x)); -- cgit v1.2.3