stage2: optimize size of optional slices

This commit is contained in:
Veikka Tuominen
2022-10-24 14:41:22 +03:00
parent 9db293492b
commit dd437ae399
5 changed files with 45 additions and 45 deletions

View File

@@ -3,6 +3,7 @@ const std = @import("std");
const testing = std.testing;
const expect = testing.expect;
const expectEqual = testing.expectEqual;
const expectEqualStrings = std.testing.expectEqualStrings;
test "passing an optional integer as a parameter" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
@@ -428,3 +429,18 @@ test "alignment of wrapping an optional payload" {
};
try expect(S.foo().?.x == 1234);
}
test "Optional slice size is optimized" {
if (builtin.zig_backend == .stage1) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
var a: ?[]const u8 = null;
try expect(a == null);
a = "hello";
try expectEqualStrings(a.?, "hello");
}