authorgravatar for joachim.schmidt557@outlook.comJoachim Schmidt <joachim.schmidt557@outlook.com> 2022-02-14 22:33:01+01:00
committergravatar for joachim.schmidt557@outlook.comJoachim Schmidt <joachim.schmidt557@outlook.com> 2022-02-14 22:33:01+01:00
log22895f5616c663bb7b8ad9866c29d00bc4bc315c
treed0bec94aacb933d99b54e469317a1160f8c08ffe
parent98c71cc88a2d472dded057a4a6f1d610dad9e491
signaturelock-open Commit is signed but in an unrecognized format.

stage2 AArch64: Enable behavior testing


28 files changed, 226 insertions(+), 5 deletions(-)

src/arch/aarch64/CodeGen.zig+30-4
...@@ -1029,14 +1029,16 @@ fn binOpRegister(...@@ -1029,14 +1029,16 @@ fn binOpRegister(
1029 if (!rhs_is_register) try self.genSetReg(rhs_ty, rhs_reg, rhs);1029 if (!rhs_is_register) try self.genSetReg(rhs_ty, rhs_reg, rhs);
10301030
1031 const mir_tag: Mir.Inst.Tag = switch (tag) {1031 const mir_tag: Mir.Inst.Tag = switch (tag) {
1032 .add => .add_shifted_register,1032 .add, .ptr_add => .add_shifted_register,
1033 .sub => .sub_shifted_register,1033 .sub, .ptr_sub => .sub_shifted_register,
1034 .xor => .eor_shifted_register,1034 .xor => .eor_shifted_register,
1035 else => unreachable,1035 else => unreachable,
1036 };1036 };
1037 const mir_data: Mir.Inst.Data = switch (tag) {1037 const mir_data: Mir.Inst.Data = switch (tag) {
1038 .add,1038 .add,
1039 .sub,1039 .sub,
1040 .ptr_add,
1041 .ptr_sub,
1040 => .{ .rrr_imm6_shift = .{1042 => .{ .rrr_imm6_shift = .{
1041 .rd = dest_reg,1043 .rd = dest_reg,
1042 .rn = lhs_reg,1044 .rn = lhs_reg,
...@@ -1225,7 +1227,24 @@ fn binOp(...@@ -1225,7 +1227,24 @@ fn binOp(
1225 },1227 },
1226 .ptr_add,1228 .ptr_add,
1227 .ptr_sub,1229 .ptr_sub,
1228 => return self.fail("TODO ptr_add, ptr_sub", .{}),1230 => {
1231 switch (lhs_ty.zigTypeTag()) {
1232 .Pointer => {
1233 const ptr_ty = lhs_ty;
1234 const pointee_ty = switch (ptr_ty.ptrSize()) {
1235 .One => ptr_ty.childType().childType(), // ptr to array, so get array element type
1236 else => ptr_ty.childType(),
1237 };
1238
1239 if (pointee_ty.abiSize(self.target.*) > 1) {
1240 return self.fail("TODO ptr_add, ptr_sub with more element sizes", .{});
1241 }
1242
1243 return try self.binOpRegister(tag, maybe_inst, lhs, rhs, lhs_ty, rhs_ty);
1244 },
1245 else => unreachable,
1246 }
1247 },
1229 else => unreachable,1248 else => unreachable,
1230 }1249 }
1231}1250}
...@@ -1439,7 +1458,14 @@ fn airWrapErrUnionPayload(self: *Self, inst: Air.Inst.Index) !void {...@@ -1439,7 +1458,14 @@ fn airWrapErrUnionPayload(self: *Self, inst: Air.Inst.Index) !void {
1439/// E to E!T1458/// E to E!T
1440fn airWrapErrUnionErr(self: *Self, inst: Air.Inst.Index) !void {1459fn airWrapErrUnionErr(self: *Self, inst: Air.Inst.Index) !void {
1441 const ty_op = self.air.instructions.items(.data)[inst].ty_op;1460 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
1442 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement wrap errunion error for {}", .{self.target.cpu.arch});1461 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {
1462 const error_union_ty = self.air.getRefType(ty_op.ty);
1463 const payload_ty = error_union_ty.errorUnionPayload();
1464 const mcv = try self.resolveInst(ty_op.operand);
1465 if (!payload_ty.hasRuntimeBits()) break :result mcv;
1466
1467 return self.fail("TODO implement wrap errunion error for non-empty payloads", .{});
1468 };
1443 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });1469 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1444}1470}
14451471
test/behavior.zig+1-1
...@@ -54,7 +54,7 @@ test {...@@ -54,7 +54,7 @@ test {
54 _ = @import("behavior/decltest.zig");54 _ = @import("behavior/decltest.zig");
55 }55 }
5656
57 if (builtin.zig_backend != .stage2_arm and builtin.zig_backend != .stage2_x86_64) {57 if (builtin.zig_backend != .stage2_arm and builtin.zig_backend != .stage2_x86_64 and builtin.zig_backend != .stage2_aarch64) {
58 // Tests that pass (partly) for stage1, llvm backend, C backend, wasm backend.58 // Tests that pass (partly) for stage1, llvm backend, C backend, wasm backend.
59 _ = @import("behavior/bitcast.zig");59 _ = @import("behavior/bitcast.zig");
60 _ = @import("behavior/bugs/624.zig");60 _ = @import("behavior/bugs/624.zig");
test/behavior/align.zig+18
...@@ -27,6 +27,7 @@ test "default alignment allows unspecified in type syntax" {...@@ -27,6 +27,7 @@ test "default alignment allows unspecified in type syntax" {
27}27}
2828
29test "implicitly decreasing pointer alignment" {29test "implicitly decreasing pointer alignment" {
30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
30 const a: u32 align(4) = 3;31 const a: u32 align(4) = 3;
31 const b: u32 align(8) = 4;32 const b: u32 align(8) = 4;
32 try expect(addUnaligned(&a, &b) == 7);33 try expect(addUnaligned(&a, &b) == 7);
...@@ -37,6 +38,7 @@ fn addUnaligned(a: *align(1) const u32, b: *align(1) const u32) u32 {...@@ -37,6 +38,7 @@ fn addUnaligned(a: *align(1) const u32, b: *align(1) const u32) u32 {
37}38}
3839
39test "@alignCast pointers" {40test "@alignCast pointers" {
41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
40 var x: u32 align(4) = 1;42 var x: u32 align(4) = 1;
41 expectsOnly1(&x);43 expectsOnly1(&x);
42 try expect(x == 2);44 try expect(x == 2);
...@@ -102,6 +104,7 @@ fn fnWithAlignedStack() i32 {...@@ -102,6 +104,7 @@ fn fnWithAlignedStack() i32 {
102}104}
103105
104test "implicitly decreasing slice alignment" {106test "implicitly decreasing slice alignment" {
107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;108 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
106109
107 const a: u32 align(4) = 3;110 const a: u32 align(4) = 3;
...@@ -113,6 +116,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {...@@ -113,6 +116,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {
113}116}
114117
115test "specifying alignment allows pointer cast" {118test "specifying alignment allows pointer cast" {
119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
117121
118 try testBytesAlign(0x33);122 try testBytesAlign(0x33);
...@@ -124,6 +128,7 @@ fn testBytesAlign(b: u8) !void {...@@ -124,6 +128,7 @@ fn testBytesAlign(b: u8) !void {
124}128}
125129
126test "@alignCast slices" {130test "@alignCast slices" {
131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
127 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;132 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
128133
129 var array align(4) = [_]u32{ 1, 1 };134 var array align(4) = [_]u32{ 1, 1 };
...@@ -139,6 +144,7 @@ fn sliceExpects4(slice: []align(4) u32) void {...@@ -139,6 +144,7 @@ fn sliceExpects4(slice: []align(4) u32) void {
139}144}
140145
141test "return error union with 128-bit integer" {146test "return error union with 128-bit integer" {
147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
142 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;148 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
143149
144 try expect(3 == try give());150 try expect(3 == try give());
...@@ -148,6 +154,7 @@ fn give() anyerror!u128 {...@@ -148,6 +154,7 @@ fn give() anyerror!u128 {
148}154}
149155
150test "page aligned array on stack" {156test "page aligned array on stack" {
157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
151 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;158 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;159 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
...@@ -173,6 +180,7 @@ fn noop1() align(1) void {}...@@ -173,6 +180,7 @@ fn noop1() align(1) void {}
173fn noop4() align(4) void {}180fn noop4() align(4) void {}
174181
175test "function alignment" {182test "function alignment" {
183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
176 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;184 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
177 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;185 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
...@@ -189,6 +197,7 @@ test "function alignment" {...@@ -189,6 +197,7 @@ test "function alignment" {
189}197}
190198
191test "implicitly decreasing fn alignment" {199test "implicitly decreasing fn alignment" {
200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage1) return error.SkipZigTest;201 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
193 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;202 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;203 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
...@@ -216,6 +225,7 @@ fn alignedBig() align(16) i32 {...@@ -216,6 +225,7 @@ fn alignedBig() align(16) i32 {
216}225}
217226
218test "@alignCast functions" {227test "@alignCast functions" {
228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage1) return error.SkipZigTest;229 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
220 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;230 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;231 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
...@@ -239,6 +249,7 @@ fn simple4() align(4) i32 {...@@ -239,6 +249,7 @@ fn simple4() align(4) i32 {
239}249}
240250
241test "generic function with align param" {251test "generic function with align param" {
252 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
242 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;253 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
243 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;254 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
244 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;255 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
...@@ -260,6 +271,7 @@ fn whyWouldYouEverDoThis(comptime align_bytes: u8) align(align_bytes) u8 {...@@ -260,6 +271,7 @@ fn whyWouldYouEverDoThis(comptime align_bytes: u8) align(align_bytes) u8 {
260}271}
261272
262test "runtime known array index has best alignment possible" {273test "runtime known array index has best alignment possible" {
274 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
263 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;275 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
264 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;276 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
...@@ -302,6 +314,7 @@ fn testIndex2(ptr: [*]align(4) u8, index: usize, comptime T: type) !void {...@@ -302,6 +314,7 @@ fn testIndex2(ptr: [*]align(4) u8, index: usize, comptime T: type) !void {
302}314}
303315
304test "alignment of function with c calling convention" {316test "alignment of function with c calling convention" {
317 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
305 if (builtin.zig_backend == .stage1) return error.SkipZigTest;318 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
306319
307 var runtime_nothing = &nothing;320 var runtime_nothing = &nothing;
...@@ -318,6 +331,7 @@ const DefaultAligned = struct {...@@ -318,6 +331,7 @@ const DefaultAligned = struct {
318};331};
319332
320test "read 128-bit field from default aligned struct in stack memory" {333test "read 128-bit field from default aligned struct in stack memory" {
334 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
321 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;335 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
322 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;336 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
323 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;337 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
...@@ -337,6 +351,7 @@ var default_aligned_global = DefaultAligned{...@@ -337,6 +351,7 @@ var default_aligned_global = DefaultAligned{
337};351};
338352
339test "read 128-bit field from default aligned struct in global memory" {353test "read 128-bit field from default aligned struct in global memory" {
354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
340 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;355 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
341 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;356 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
342 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;357 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
...@@ -348,6 +363,7 @@ test "read 128-bit field from default aligned struct in global memory" {...@@ -348,6 +363,7 @@ test "read 128-bit field from default aligned struct in global memory" {
348}363}
349364
350test "struct field explicit alignment" {365test "struct field explicit alignment" {
366 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
351 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;367 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
352 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;368 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
353 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;369 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
...@@ -369,6 +385,7 @@ test "struct field explicit alignment" {...@@ -369,6 +385,7 @@ test "struct field explicit alignment" {
369}385}
370386
371test "align(@alignOf(T)) T does not force resolution of T" {387test "align(@alignOf(T)) T does not force resolution of T" {
388 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
372 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;389 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
373 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;390 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
374 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;391 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
...@@ -397,6 +414,7 @@ test "align(@alignOf(T)) T does not force resolution of T" {...@@ -397,6 +414,7 @@ test "align(@alignOf(T)) T does not force resolution of T" {
397}414}
398415
399test "align(N) on functions" {416test "align(N) on functions" {
417 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
400 if (builtin.zig_backend == .stage1) return error.SkipZigTest;418 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
401 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;419 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
402 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;420 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
test/behavior/alignof.zig+1
...@@ -11,6 +11,7 @@ const Foo = struct {...@@ -11,6 +11,7 @@ const Foo = struct {
11};11};
1212
13test "@alignOf(T) before referencing T" {13test "@alignOf(T) before referencing T" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
test/behavior/array.zig+27
...@@ -6,6 +6,7 @@ const expect = testing.expect;...@@ -6,6 +6,7 @@ const expect = testing.expect;
6const expectEqual = testing.expectEqual;6const expectEqual = testing.expectEqual;
77
8test "array to slice" {8test "array to slice" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1011
11 const a: u32 align(4) = 3;12 const a: u32 align(4) = 3;
...@@ -20,6 +21,7 @@ test "array to slice" {...@@ -20,6 +21,7 @@ test "array to slice" {
20}21}
2122
22test "arrays" {23test "arrays" {
24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2426
25 var array: [5]u32 = undefined;27 var array: [5]u32 = undefined;
...@@ -46,6 +48,7 @@ fn getArrayLen(a: []const u32) usize {...@@ -46,6 +48,7 @@ fn getArrayLen(a: []const u32) usize {
46}48}
4749
48test "array init with mult" {50test "array init with mult" {
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
49 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;52 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5053
51 const a = 'a';54 const a = 'a';
...@@ -57,6 +60,7 @@ test "array init with mult" {...@@ -57,6 +60,7 @@ test "array init with mult" {
57}60}
5861
59test "array literal with explicit type" {62test "array literal with explicit type" {
63 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;64 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6165
62 const hex_mult: [4]u16 = .{ 4096, 256, 16, 1 };66 const hex_mult: [4]u16 = .{ 4096, 256, 16, 1 };
...@@ -86,6 +90,7 @@ const ArrayDotLenConstExpr = struct {...@@ -86,6 +90,7 @@ const ArrayDotLenConstExpr = struct {
86const some_array = [_]u8{ 0, 1, 2, 3 };90const some_array = [_]u8{ 0, 1, 2, 3 };
8791
88test "array literal with specified size" {92test "array literal with specified size" {
93 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
89 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;94 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9095
91 var array = [2]u8{ 1, 2 };96 var array = [2]u8{ 1, 2 };
...@@ -94,6 +99,7 @@ test "array literal with specified size" {...@@ -94,6 +99,7 @@ test "array literal with specified size" {
94}99}
95100
96test "array len field" {101test "array len field" {
102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
97 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;103 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
98104
99 var arr = [4]u8{ 0, 0, 0, 0 };105 var arr = [4]u8{ 0, 0, 0, 0 };
...@@ -105,6 +111,7 @@ test "array len field" {...@@ -105,6 +111,7 @@ test "array len field" {
105}111}
106112
107test "array with sentinels" {113test "array with sentinels" {
114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
108 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;115 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
109116
110 const S = struct {117 const S = struct {
...@@ -134,6 +141,7 @@ test "array with sentinels" {...@@ -134,6 +141,7 @@ test "array with sentinels" {
134}141}
135142
136test "void arrays" {143test "void arrays" {
144 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
137 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;145 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
138146
139 var array: [4]void = undefined;147 var array: [4]void = undefined;
...@@ -144,6 +152,7 @@ test "void arrays" {...@@ -144,6 +152,7 @@ test "void arrays" {
144}152}
145153
146test "nested arrays" {154test "nested arrays" {
155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;156 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
148157
149 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };158 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };
...@@ -157,6 +166,7 @@ test "nested arrays" {...@@ -157,6 +166,7 @@ test "nested arrays" {
157}166}
158167
159test "implicit comptime in array type size" {168test "implicit comptime in array type size" {
169 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;170 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161171
162 var arr: [plusOne(10)]bool = undefined;172 var arr: [plusOne(10)]bool = undefined;
...@@ -168,6 +178,7 @@ fn plusOne(x: u32) u32 {...@@ -168,6 +178,7 @@ fn plusOne(x: u32) u32 {
168}178}
169179
170test "single-item pointer to array indexing and slicing" {180test "single-item pointer to array indexing and slicing" {
181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
171 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;182 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
172183
173 try testSingleItemPtrArrayIndexSlice();184 try testSingleItemPtrArrayIndexSlice();
...@@ -193,6 +204,7 @@ fn doSomeMangling(array: *[4]u8) void {...@@ -193,6 +204,7 @@ fn doSomeMangling(array: *[4]u8) void {
193}204}
194205
195test "implicit cast zero sized array ptr to slice" {206test "implicit cast zero sized array ptr to slice" {
207 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
196 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;208 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
197209
198 {210 {
...@@ -208,6 +220,7 @@ test "implicit cast zero sized array ptr to slice" {...@@ -208,6 +220,7 @@ test "implicit cast zero sized array ptr to slice" {
208}220}
209221
210test "anonymous list literal syntax" {222test "anonymous list literal syntax" {
223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
211 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;224 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
212225
213 const S = struct {226 const S = struct {
...@@ -227,6 +240,7 @@ var s_array: [8]Sub = undefined;...@@ -227,6 +240,7 @@ var s_array: [8]Sub = undefined;
227const Sub = struct { b: u8 };240const Sub = struct { b: u8 };
228const Str = struct { a: []Sub };241const Str = struct { a: []Sub };
229test "set global var array via slice embedded in struct" {242test "set global var array via slice embedded in struct" {
243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO244 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO245 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -243,6 +257,7 @@ test "set global var array via slice embedded in struct" {...@@ -243,6 +257,7 @@ test "set global var array via slice embedded in struct" {
243}257}
244258
245test "read/write through global variable array of struct fields initialized via array mult" {259test "read/write through global variable array of struct fields initialized via array mult" {
260 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
246 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO261 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
247 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO262 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
248 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -264,6 +279,7 @@ test "read/write through global variable array of struct fields initialized via...@@ -264,6 +279,7 @@ test "read/write through global variable array of struct fields initialized via
264}279}
265280
266test "implicit cast single-item pointer" {281test "implicit cast single-item pointer" {
282 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
267 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO283 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
268 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO284 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
269 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO285 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -284,6 +300,7 @@ fn testArrayByValAtComptime(b: [2]u8) u8 {...@@ -284,6 +300,7 @@ fn testArrayByValAtComptime(b: [2]u8) u8 {
284}300}
285301
286test "comptime evaluating function that takes array by value" {302test "comptime evaluating function that takes array by value" {
303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
287 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO304 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
288 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO305 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
289 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO306 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -296,6 +313,7 @@ test "comptime evaluating function that takes array by value" {...@@ -296,6 +313,7 @@ test "comptime evaluating function that takes array by value" {
296}313}
297314
298test "runtime initialize array elem and then implicit cast to slice" {315test "runtime initialize array elem and then implicit cast to slice" {
316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
299 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO317 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
300 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO318 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -306,6 +324,7 @@ test "runtime initialize array elem and then implicit cast to slice" {...@@ -306,6 +324,7 @@ test "runtime initialize array elem and then implicit cast to slice" {
306}324}
307325
308test "array literal as argument to function" {326test "array literal as argument to function" {
327 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
309 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO328 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
310 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO329 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
311 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -334,6 +353,7 @@ test "array literal as argument to function" {...@@ -334,6 +353,7 @@ test "array literal as argument to function" {
334}353}
335354
336test "double nested array to const slice cast in array literal" {355test "double nested array to const slice cast in array literal" {
356 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
337 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO357 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
338 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO358 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
339 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -395,6 +415,7 @@ test "double nested array to const slice cast in array literal" {...@@ -395,6 +415,7 @@ test "double nested array to const slice cast in array literal" {
395}415}
396416
397test "anonymous literal in array" {417test "anonymous literal in array" {
418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
398 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO419 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
399 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO420 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
400 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO421 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -420,6 +441,7 @@ test "anonymous literal in array" {...@@ -420,6 +441,7 @@ test "anonymous literal in array" {
420}441}
421442
422test "access the null element of a null terminated array" {443test "access the null element of a null terminated array" {
444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
423 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO445 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO446 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO447 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -437,6 +459,7 @@ test "access the null element of a null terminated array" {...@@ -437,6 +459,7 @@ test "access the null element of a null terminated array" {
437}459}
438460
439test "type deduction for array subscript expression" {461test "type deduction for array subscript expression" {
462 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
440 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO463 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
441 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO464 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO465 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -455,6 +478,7 @@ test "type deduction for array subscript expression" {...@@ -455,6 +478,7 @@ test "type deduction for array subscript expression" {
455}478}
456479
457test "sentinel element count towards the ABI size calculation" {480test "sentinel element count towards the ABI size calculation" {
481 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
458 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO482 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO
459 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO483 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
460 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO484 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
...@@ -481,6 +505,7 @@ test "sentinel element count towards the ABI size calculation" {...@@ -481,6 +505,7 @@ test "sentinel element count towards the ABI size calculation" {
481}505}
482506
483test "zero-sized array with recursive type definition" {507test "zero-sized array with recursive type definition" {
508 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
484 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO509 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO
485 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO510 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
486 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO511 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
...@@ -505,6 +530,7 @@ test "zero-sized array with recursive type definition" {...@@ -505,6 +530,7 @@ test "zero-sized array with recursive type definition" {
505}530}
506531
507test "type coercion of anon struct literal to array" {532test "type coercion of anon struct literal to array" {
533 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
508 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO534 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO535 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
510 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -540,6 +566,7 @@ test "type coercion of anon struct literal to array" {...@@ -540,6 +566,7 @@ test "type coercion of anon struct literal to array" {
540}566}
541567
542test "type coercion of pointer to anon struct literal to pointer to array" {568test "type coercion of pointer to anon struct literal to pointer to array" {
569 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
543 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO570 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // TODO
544 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO571 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
545 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO572 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
test/behavior/basic.zig+32
...@@ -15,6 +15,7 @@ test "empty function with comments" {...@@ -15,6 +15,7 @@ test "empty function with comments" {
15}15}
1616
17test "truncate" {17test "truncate" {
18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1920
20 try expect(testTruncate(0x10fd) == 0xfd);21 try expect(testTruncate(0x10fd) == 0xfd);
...@@ -25,6 +26,7 @@ fn testTruncate(x: u32) u8 {...@@ -25,6 +26,7 @@ fn testTruncate(x: u32) u8 {
25}26}
2627
27test "truncate to non-power-of-two integers" {28test "truncate to non-power-of-two integers" {
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2931
30 try testTrunc(u32, u1, 0b10101, 0b1);32 try testTrunc(u32, u1, 0b10101, 0b1);
...@@ -46,6 +48,7 @@ const g1: i32 = 1233 + 1;...@@ -46,6 +48,7 @@ const g1: i32 = 1233 + 1;
46var g2: i32 = 0;48var g2: i32 = 0;
4749
48test "global variables" {50test "global variables" {
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
49 try expect(g2 == 0);52 try expect(g2 == 0);
50 g2 = g1;53 g2 = g1;
51 try expect(g2 == 1234);54 try expect(g2 == 1234);
...@@ -112,6 +115,7 @@ fn first4KeysOfHomeRow() []const u8 {...@@ -112,6 +115,7 @@ fn first4KeysOfHomeRow() []const u8 {
112}115}
113116
114test "return string from function" {117test "return string from function" {
118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
117121
...@@ -119,12 +123,14 @@ test "return string from function" {...@@ -119,12 +123,14 @@ test "return string from function" {
119}123}
120124
121test "hex escape" {125test "hex escape" {
126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;127 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
123128
124 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));129 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
125}130}
126131
127test "multiline string" {132test "multiline string" {
133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
129135
130 const s1 =136 const s1 =
...@@ -137,6 +143,7 @@ test "multiline string" {...@@ -137,6 +143,7 @@ test "multiline string" {
137}143}
138144
139test "multiline string comments at start" {145test "multiline string comments at start" {
146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
141148
142 const s1 =149 const s1 =
...@@ -149,6 +156,7 @@ test "multiline string comments at start" {...@@ -149,6 +156,7 @@ test "multiline string comments at start" {
149}156}
150157
151test "multiline string comments at end" {158test "multiline string comments at end" {
159 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
153161
154 const s1 =162 const s1 =
...@@ -161,6 +169,7 @@ test "multiline string comments at end" {...@@ -161,6 +169,7 @@ test "multiline string comments at end" {
161}169}
162170
163test "multiline string comments in middle" {171test "multiline string comments in middle" {
172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;173 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
165174
166 const s1 =175 const s1 =
...@@ -173,6 +182,7 @@ test "multiline string comments in middle" {...@@ -173,6 +182,7 @@ test "multiline string comments in middle" {
173}182}
174183
175test "multiline string comments at multiple places" {184test "multiline string comments at multiple places" {
185 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
177187
178 const s1 =188 const s1 =
...@@ -191,6 +201,7 @@ test "string concatenation" {...@@ -191,6 +201,7 @@ test "string concatenation" {
191}201}
192202
193test "array mult operator" {203test "array mult operator" {
204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
195206
196 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));207 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
...@@ -216,6 +227,7 @@ test "compile time global reinterpret" {...@@ -216,6 +227,7 @@ test "compile time global reinterpret" {
216}227}
217228
218test "cast undefined" {229test "cast undefined" {
230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;231 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
220232
221 const array: [100]u8 = undefined;233 const array: [100]u8 = undefined;
...@@ -227,6 +239,7 @@ fn testCastUndefined(x: []const u8) void {...@@ -227,6 +239,7 @@ fn testCastUndefined(x: []const u8) void {
227}239}
228240
229test "implicit cast after unreachable" {241test "implicit cast after unreachable" {
242 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;243 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
231244
232 try expect(outer() == 1234);245 try expect(outer() == 1234);
...@@ -284,6 +297,7 @@ fn fB() []const u8 {...@@ -284,6 +297,7 @@ fn fB() []const u8 {
284}297}
285298
286test "call function pointer in struct" {299test "call function pointer in struct" {
300 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
287 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
288 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;302 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
289303
...@@ -310,6 +324,7 @@ const FnPtrWrapper = struct {...@@ -310,6 +324,7 @@ const FnPtrWrapper = struct {
310};324};
311325
312test "const ptr from var variable" {326test "const ptr from var variable" {
327 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;328 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
314329
315 var x: u64 = undefined;330 var x: u64 = undefined;
...@@ -326,6 +341,7 @@ fn copy(src: *const u64, dst: *u64) void {...@@ -326,6 +341,7 @@ fn copy(src: *const u64, dst: *u64) void {
326}341}
327342
328test "call result of if else expression" {343test "call result of if else expression" {
344 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;345 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
330 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;346 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
331 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO347 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
...@@ -339,6 +355,7 @@ fn f2(x: bool) []const u8 {...@@ -339,6 +355,7 @@ fn f2(x: bool) []const u8 {
339}355}
340356
341test "memcpy and memset intrinsics" {357test "memcpy and memset intrinsics" {
358 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;359 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
343 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;360 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
344 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO361 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
...@@ -361,6 +378,7 @@ fn testMemcpyMemset() !void {...@@ -361,6 +378,7 @@ fn testMemcpyMemset() !void {
361}378}
362379
363test "variable is allowed to be a pointer to an opaque type" {380test "variable is allowed to be a pointer to an opaque type" {
381 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;382 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
365 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;383 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
366 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO384 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
...@@ -374,6 +392,7 @@ fn hereIsAnOpaqueType(ptr: *OpaqueA) *OpaqueA {...@@ -374,6 +392,7 @@ fn hereIsAnOpaqueType(ptr: *OpaqueA) *OpaqueA {
374}392}
375393
376test "take address of parameter" {394test "take address of parameter" {
395 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
377 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;396 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
378 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;397 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
379398
...@@ -400,6 +419,7 @@ fn testPointerToVoidReturnType2() *const void {...@@ -400,6 +419,7 @@ fn testPointerToVoidReturnType2() *const void {
400}419}
401420
402test "array 2D const double ptr" {421test "array 2D const double ptr" {
422 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
403 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;423 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
404 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
405425
...@@ -419,6 +439,7 @@ fn testArray2DConstDoublePtr(ptr: *const f32) !void {...@@ -419,6 +439,7 @@ fn testArray2DConstDoublePtr(ptr: *const f32) !void {
419}439}
420440
421test "double implicit cast in same expression" {441test "double implicit cast in same expression" {
442 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
422 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;443 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
423 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;444 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
424445
...@@ -430,6 +451,7 @@ fn nine() u8 {...@@ -430,6 +451,7 @@ fn nine() u8 {
430}451}
431452
432test "struct inside function" {453test "struct inside function" {
454 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;455 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
434456
435 try testStructInFn();457 try testStructInFn();
...@@ -451,6 +473,7 @@ fn testStructInFn() !void {...@@ -451,6 +473,7 @@ fn testStructInFn() !void {
451}473}
452474
453test "fn call returning scalar optional in equality expression" {475test "fn call returning scalar optional in equality expression" {
476 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
454 try expect(getNull() == null);477 try expect(getNull() == null);
455}478}
456479
...@@ -459,6 +482,7 @@ fn getNull() ?*i32 {...@@ -459,6 +482,7 @@ fn getNull() ?*i32 {
459}482}
460483
461test "global variable assignment with optional unwrapping with var initialized to undefined" {484test "global variable assignment with optional unwrapping with var initialized to undefined" {
485 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
462 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
463487
464 const S = struct {488 const S = struct {
...@@ -476,6 +500,7 @@ test "global variable assignment with optional unwrapping with var initialized t...@@ -476,6 +500,7 @@ test "global variable assignment with optional unwrapping with var initialized t
476var global_foo: *i32 = undefined;500var global_foo: *i32 = undefined;
477501
478test "peer result location with typed parent, runtime condition, comptime prongs" {502test "peer result location with typed parent, runtime condition, comptime prongs" {
503 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
479 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;504 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
480 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;505 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
481506
...@@ -550,6 +575,7 @@ test "comptime cast fn to ptr" {...@@ -550,6 +575,7 @@ test "comptime cast fn to ptr" {
550}575}
551576
552test "equality compare fn ptrs" {577test "equality compare fn ptrs" {
578 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
553 if (builtin.zig_backend == .stage1) return error.SkipZigTest;579 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
554580
555 var a = &emptyFn;581 var a = &emptyFn;
...@@ -557,6 +583,7 @@ test "equality compare fn ptrs" {...@@ -557,6 +583,7 @@ test "equality compare fn ptrs" {
557}583}
558584
559test "self reference through fn ptr field" {585test "self reference through fn ptr field" {
586 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
560 if (builtin.zig_backend == .stage1) return error.SkipZigTest;587 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
561 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;588 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
562589
...@@ -576,6 +603,7 @@ test "self reference through fn ptr field" {...@@ -576,6 +603,7 @@ test "self reference through fn ptr field" {
576}603}
577604
578test "global variable initialized to global variable array element" {605test "global variable initialized to global variable array element" {
606 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
579 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
580 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;608 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
581609
...@@ -593,6 +621,7 @@ var gdt = [_]GDTEntry{...@@ -593,6 +621,7 @@ var gdt = [_]GDTEntry{
593var global_ptr = &gdt[0];621var global_ptr = &gdt[0];
594622
595test "global constant is loaded with a runtime-known index" {623test "global constant is loaded with a runtime-known index" {
624 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
596 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;625 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
597626
598 const S = struct {627 const S = struct {
...@@ -610,6 +639,7 @@ test "global constant is loaded with a runtime-known index" {...@@ -610,6 +639,7 @@ test "global constant is loaded with a runtime-known index" {
610}639}
611640
612test "multiline string literal is null terminated" {641test "multiline string literal is null terminated" {
642 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
613 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;643 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
614 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;644 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
615645
...@@ -643,6 +673,7 @@ test "explicit cast optional pointers" {...@@ -643,6 +673,7 @@ test "explicit cast optional pointers" {
643}673}
644674
645test "pointer comparison" {675test "pointer comparison" {
676 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
646 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;677 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
647 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;678 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
648679
...@@ -655,6 +686,7 @@ fn ptrEql(a: *const []const u8, b: *const []const u8) bool {...@@ -655,6 +686,7 @@ fn ptrEql(a: *const []const u8, b: *const []const u8) bool {
655}686}
656687
657test "string concatenation" {688test "string concatenation" {
689 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
658 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;690 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
659 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;691 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
660692
test/behavior/bit_shifting.zig+1
...@@ -61,6 +61,7 @@ fn ShardedTable(comptime Key: type, comptime mask_bit_count: comptime_int, compt...@@ -61,6 +61,7 @@ fn ShardedTable(comptime Key: type, comptime mask_bit_count: comptime_int, compt
61}61}
6262
63test "sharded table" {63test "sharded table" {
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
64 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;67 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
test/behavior/bugs/1381.zig+1
...@@ -12,6 +12,7 @@ const A = union(enum) {...@@ -12,6 +12,7 @@ const A = union(enum) {
12};12};
1313
14test "union that needs padding bytes inside an array" {14test "union that needs padding bytes inside an array" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 var as = [_]A{18 var as = [_]A{
test/behavior/bugs/1486.zig+2
...@@ -1,10 +1,12 @@...@@ -1,10 +1,12 @@
1const std = @import("std");1const std = @import("std");
2const expect = std.testing.expect;2const expect = std.testing.expect;
3const builtin = @import("builtin");
34
4const ptr = &global;5const ptr = &global;
5var global: usize = 123;6var global: usize = 123;
67
7test "constant pointer to global variable causes runtime load" {8test "constant pointer to global variable causes runtime load" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8 global = 1234;10 global = 1234;
9 try expect(&global == ptr);11 try expect(&global == ptr);
10 try expect(ptr.* == 1234);12 try expect(ptr.* == 1234);
test/behavior/bugs/1735.zig+1
...@@ -42,6 +42,7 @@ const a = struct {...@@ -42,6 +42,7 @@ const a = struct {
42};42};
4343
44test "initialization" {44test "initialization" {
45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;46 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
46 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
47 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;48 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
test/behavior/bugs/1741.zig+1
...@@ -2,6 +2,7 @@ const std = @import("std");...@@ -2,6 +2,7 @@ const std = @import("std");
2const builtin = @import("builtin");2const builtin = @import("builtin");
33
4test "fixed" {4test "fixed" {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7 const x: f32 align(128) = 12.34;8 const x: f32 align(128) = 12.34;
test/behavior/bugs/2006.zig+1
...@@ -6,6 +6,7 @@ const S = struct {...@@ -6,6 +6,7 @@ const S = struct {
6 p: *S,6 p: *S,
7};7};
8test "bug 2006" {8test "bug 2006" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
10 var a: S = undefined;11 var a: S = undefined;
11 a = S{ .p = undefined };12 a = S{ .p = undefined };
test/behavior/bugs/2578.zig+1
...@@ -12,6 +12,7 @@ fn bar(pointer: ?*anyopaque) void {...@@ -12,6 +12,7 @@ fn bar(pointer: ?*anyopaque) void {
12}12}
1313
14test "fixed" {14test "fixed" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
test/behavior/bugs/3007.zig+1
...@@ -19,6 +19,7 @@ fn get_foo() Foo.FooError!*Foo {...@@ -19,6 +19,7 @@ fn get_foo() Foo.FooError!*Foo {
19}19}
2020
21test "fixed" {21test "fixed" {
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
test/behavior/bugs/3112.zig+1
...@@ -12,6 +12,7 @@ fn prev(p: ?State) void {...@@ -12,6 +12,7 @@ fn prev(p: ?State) void {
12}12}
1313
14test "zig test crash" {14test "zig test crash" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage1) return error.SkipZigTest;16 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
test/behavior/bugs/3367.zig+1
...@@ -10,6 +10,7 @@ const Mixin = struct {...@@ -10,6 +10,7 @@ const Mixin = struct {
10};10};
1111
12test "container member access usingnamespace decls" {12test "container member access usingnamespace decls" {
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 var foo = Foo{};16 var foo = Foo{};
test/behavior/bugs/394.zig+1
...@@ -11,6 +11,7 @@ const expect = @import("std").testing.expect;...@@ -11,6 +11,7 @@ const expect = @import("std").testing.expect;
11const builtin = @import("builtin");11const builtin = @import("builtin");
1212
13test "bug 394 fixed" {13test "bug 394 fixed" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
16 const x = S{17 const x = S{
test/behavior/bugs/656.zig+1
...@@ -11,6 +11,7 @@ const Value = struct {...@@ -11,6 +11,7 @@ const Value = struct {
11};11};
1212
13test "optional if after an if in a switch prong of a switch with 2 prongs in an else" {13test "optional if after an if in a switch prong of a switch with 2 prongs in an else" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
16 try foo(false, true);17 try foo(false, true);
test/behavior/bugs/7250.zig+1
...@@ -14,6 +14,7 @@ threadlocal var g_uart0 = nrfx_uart_t{...@@ -14,6 +14,7 @@ threadlocal var g_uart0 = nrfx_uart_t{
14};14};
1515
16test "reference a global threadlocal variable" {16test "reference a global threadlocal variable" {
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;18 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
test/behavior/cast.zig+36
...@@ -18,6 +18,7 @@ test "integer literal to pointer cast" {...@@ -18,6 +18,7 @@ test "integer literal to pointer cast" {
18}18}
1919
20test "peer type resolution: ?T and T" {20test "peer type resolution: ?T and T" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2223
23 try expect(peerTypeTAndOptionalT(true, false).? == 0);24 try expect(peerTypeTAndOptionalT(true, false).? == 0);
...@@ -94,6 +95,7 @@ test "comptime_int @intToFloat" {...@@ -94,6 +95,7 @@ test "comptime_int @intToFloat" {
94}95}
9596
96test "@floatToInt" {97test "@floatToInt" {
98 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
97 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99101
...@@ -116,6 +118,7 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {...@@ -116,6 +118,7 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {
116}118}
117119
118test "implicitly cast indirect pointer to maybe-indirect pointer" {120test "implicitly cast indirect pointer to maybe-indirect pointer" {
121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;122 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
120123
121 const S = struct {124 const S = struct {
...@@ -174,6 +177,7 @@ test "@floatCast comptime_int and comptime_float" {...@@ -174,6 +177,7 @@ test "@floatCast comptime_int and comptime_float" {
174}177}
175178
176test "coerce undefined to optional" {179test "coerce undefined to optional" {
180 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
177 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;181 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
178182
179 try expect(MakeType(void).getNull() == null);183 try expect(MakeType(void).getNull() == null);
...@@ -193,6 +197,7 @@ fn MakeType(comptime T: type) type {...@@ -193,6 +197,7 @@ fn MakeType(comptime T: type) type {
193}197}
194198
195test "implicit cast from *[N]T to [*c]T" {199test "implicit cast from *[N]T to [*c]T" {
200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
196 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;201 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
197202
198 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };203 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
...@@ -205,6 +210,7 @@ test "implicit cast from *[N]T to [*c]T" {...@@ -205,6 +210,7 @@ test "implicit cast from *[N]T to [*c]T" {
205}210}
206211
207test "*usize to *void" {212test "*usize to *void" {
213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
208 var i = @as(usize, 0);214 var i = @as(usize, 0);
209 var v = @ptrCast(*void, &i);215 var v = @ptrCast(*void, &i);
210 v.* = {};216 v.* = {};
...@@ -230,6 +236,7 @@ test "@intCast to u0 and use the result" {...@@ -230,6 +236,7 @@ test "@intCast to u0 and use the result" {
230}236}
231237
232test "peer result null and comptime_int" {238test "peer result null and comptime_int" {
239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
233 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;240 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
234241
235 const S = struct {242 const S = struct {
...@@ -253,6 +260,7 @@ test "peer result null and comptime_int" {...@@ -253,6 +260,7 @@ test "peer result null and comptime_int" {
253}260}
254261
255test "*const ?[*]const T to [*c]const [*c]const T" {262test "*const ?[*]const T to [*c]const [*c]const T" {
263 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
256 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;264 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
257265
258 var array = [_]u8{ 'o', 'k' };266 var array = [_]u8{ 'o', 'k' };
...@@ -264,6 +272,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {...@@ -264,6 +272,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {
264}272}
265273
266test "array coersion to undefined at runtime" {274test "array coersion to undefined at runtime" {
275 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
267 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;276 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
268277
269 @setRuntimeSafety(true);278 @setRuntimeSafety(true);
...@@ -293,6 +302,7 @@ fn implicitIntLitToOptional() void {...@@ -293,6 +302,7 @@ fn implicitIntLitToOptional() void {
293}302}
294303
295test "return u8 coercing into ?u32 return type" {304test "return u8 coercing into ?u32 return type" {
305 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
296 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;306 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
297307
298 const S = struct {308 const S = struct {
...@@ -313,6 +323,7 @@ test "cast from ?[*]T to ??[*]T" {...@@ -313,6 +323,7 @@ test "cast from ?[*]T to ??[*]T" {
313}323}
314324
315test "peer type unsigned int to signed" {325test "peer type unsigned int to signed" {
326 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;327 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
317 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;328 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
318329
...@@ -325,6 +336,7 @@ test "peer type unsigned int to signed" {...@@ -325,6 +336,7 @@ test "peer type unsigned int to signed" {
325}336}
326337
327test "expected [*c]const u8, found [*:0]const u8" {338test "expected [*c]const u8, found [*:0]const u8" {
339 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
328 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;340 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
329 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;341 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
330342
...@@ -384,6 +396,7 @@ fn castToOptionalTypeError(z: i32) !void {...@@ -384,6 +396,7 @@ fn castToOptionalTypeError(z: i32) !void {
384}396}
385397
386test "implicitly cast from [0]T to anyerror![]T" {398test "implicitly cast from [0]T to anyerror![]T" {
399 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
387 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO400 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO401 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
389 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO402 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -455,6 +468,7 @@ fn testCastConstArrayRefToConstSlice() !void {...@@ -455,6 +468,7 @@ fn testCastConstArrayRefToConstSlice() !void {
455}468}
456469
457test "peer type resolution: error and [N]T" {470test "peer type resolution: error and [N]T" {
471 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO472 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
459 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO473 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
460474
...@@ -689,6 +703,7 @@ test "type coercion related to sentinel-termination" {...@@ -689,6 +703,7 @@ test "type coercion related to sentinel-termination" {
689}703}
690704
691test "peer type resolution implicit cast to return type" {705test "peer type resolution implicit cast to return type" {
706 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
692 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO707 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
693 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO708 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
694 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO709 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -710,6 +725,7 @@ test "peer type resolution implicit cast to return type" {...@@ -710,6 +725,7 @@ test "peer type resolution implicit cast to return type" {
710}725}
711726
712test "peer type resolution implicit cast to variable type" {727test "peer type resolution implicit cast to variable type" {
728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
713 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO729 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
714 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO730 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO731 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -806,6 +822,7 @@ test "comptime float casts" {...@@ -806,6 +822,7 @@ test "comptime float casts" {
806}822}
807823
808test "pointer reinterpret const float to int" {824test "pointer reinterpret const float to int" {
825 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
809 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO826 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
810 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO827 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
811 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO828 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -822,6 +839,7 @@ test "pointer reinterpret const float to int" {...@@ -822,6 +839,7 @@ test "pointer reinterpret const float to int" {
822}839}
823840
824test "implicit cast from [*]T to ?*anyopaque" {841test "implicit cast from [*]T to ?*anyopaque" {
842 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
825 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO843 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
826 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO844 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
827 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO845 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -840,6 +858,7 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {...@@ -840,6 +858,7 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
840}858}
841859
842test "compile time int to ptr of function" {860test "compile time int to ptr of function" {
861 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
843 if (builtin.zig_backend == .stage1) return error.SkipZigTest;862 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
844 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) return error.SkipZigTest; // TODO863 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) return error.SkipZigTest; // TODO
845 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO864 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
...@@ -857,6 +876,7 @@ fn foobar(func: PFN_void) !void {...@@ -857,6 +876,7 @@ fn foobar(func: PFN_void) !void {
857}876}
858877
859test "implicit ptr to *anyopaque" {878test "implicit ptr to *anyopaque" {
879 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
860 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO880 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
861 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO881 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
862 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO882 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -871,6 +891,7 @@ test "implicit ptr to *anyopaque" {...@@ -871,6 +891,7 @@ test "implicit ptr to *anyopaque" {
871}891}
872892
873test "return null from fn() anyerror!?&T" {893test "return null from fn() anyerror!?&T" {
894 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
874 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO895 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
875 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO896 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
876897
...@@ -887,6 +908,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {...@@ -887,6 +908,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {
887}908}
888909
889test "peer type resolution: [0]u8 and []const u8" {910test "peer type resolution: [0]u8 and []const u8" {
911 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
890 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO912 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
891 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO913 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
892 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO914 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -907,6 +929,7 @@ fn peerTypeEmptyArrayAndSlice(a: bool, slice: []const u8) []const u8 {...@@ -907,6 +929,7 @@ fn peerTypeEmptyArrayAndSlice(a: bool, slice: []const u8) []const u8 {
907}929}
908930
909test "implicitly cast from [N]T to ?[]const T" {931test "implicitly cast from [N]T to ?[]const T" {
932 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
910 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO933 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
911 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO934 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
912 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO935 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -920,6 +943,7 @@ fn castToOptionalSlice() ?[]const u8 {...@@ -920,6 +943,7 @@ fn castToOptionalSlice() ?[]const u8 {
920}943}
921944
922test "cast u128 to f128 and back" {945test "cast u128 to f128 and back" {
946 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
923 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO947 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
924 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO948 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
925 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO949 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -941,6 +965,7 @@ fn cast128Float(x: u128) f128 {...@@ -941,6 +965,7 @@ fn cast128Float(x: u128) f128 {
941}965}
942966
943test "implicit cast from *[N]T to ?[*]T" {967test "implicit cast from *[N]T to ?[*]T" {
968 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
944 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO969 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
945 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO970 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
946 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO971 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -956,6 +981,7 @@ test "implicit cast from *[N]T to ?[*]T" {...@@ -956,6 +981,7 @@ test "implicit cast from *[N]T to ?[*]T" {
956}981}
957982
958test "implicit cast from *T to ?*anyopaque" {983test "implicit cast from *T to ?*anyopaque" {
984 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
959 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO985 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
960 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO986 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
961 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO987 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -970,6 +996,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {...@@ -970,6 +996,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {
970}996}
971997
972test "implicit cast *[0]T to E![]const u8" {998test "implicit cast *[0]T to E![]const u8" {
999 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
973 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1000 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
974 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1001 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
975 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1002 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -987,6 +1014,7 @@ test "cast from array reference to fn: comptime fn ptr" {...@@ -987,6 +1014,7 @@ test "cast from array reference to fn: comptime fn ptr" {
987 try expect(@ptrToInt(f) == @ptrToInt(&global_array));1014 try expect(@ptrToInt(f) == @ptrToInt(&global_array));
988}1015}
989test "cast from array reference to fn: runtime fn ptr" {1016test "cast from array reference to fn: runtime fn ptr" {
1017 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
990 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1018 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
991 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1019 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
992 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1020 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -996,6 +1024,7 @@ test "cast from array reference to fn: runtime fn ptr" {...@@ -996,6 +1024,7 @@ test "cast from array reference to fn: runtime fn ptr" {
996}1024}
9971025
998test "*const [N]null u8 to ?[]const u8" {1026test "*const [N]null u8 to ?[]const u8" {
1027 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
999 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1028 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1000 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1029 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1001 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1030 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -1034,6 +1063,7 @@ test "cast between [*c]T and ?[*:0]T on fn parameter" {...@@ -1034,6 +1063,7 @@ test "cast between [*c]T and ?[*:0]T on fn parameter" {
10341063
1035var global_struct: struct { f0: usize } = undefined;1064var global_struct: struct { f0: usize } = undefined;
1036test "assignment to optional pointer result loc" {1065test "assignment to optional pointer result loc" {
1066 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1037 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1067 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1038 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1068 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1039 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1069 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -1043,6 +1073,7 @@ test "assignment to optional pointer result loc" {...@@ -1043,6 +1073,7 @@ test "assignment to optional pointer result loc" {
1043}1073}
10441074
1045test "cast between *[N]void and []void" {1075test "cast between *[N]void and []void" {
1076 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1046 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1077 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1047 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1078 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10481079
...@@ -1052,6 +1083,7 @@ test "cast between *[N]void and []void" {...@@ -1052,6 +1083,7 @@ test "cast between *[N]void and []void" {
1052}1083}
10531084
1054test "peer resolve arrays of different size to const slice" {1085test "peer resolve arrays of different size to const slice" {
1086 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1055 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1087 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1056 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1088 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10571089
...@@ -1065,6 +1097,7 @@ fn boolToStr(b: bool) []const u8 {...@@ -1065,6 +1097,7 @@ fn boolToStr(b: bool) []const u8 {
1065}1097}
10661098
1067test "cast f16 to wider types" {1099test "cast f16 to wider types" {
1100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1068 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1101 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1069 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1070 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1103 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -1083,6 +1116,7 @@ test "cast f16 to wider types" {...@@ -1083,6 +1116,7 @@ test "cast f16 to wider types" {
1083}1116}
10841117
1085test "cast f128 to narrower types" {1118test "cast f128 to narrower types" {
1119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1086 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1120 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1087 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1088 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1122 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -1101,6 +1135,7 @@ test "cast f128 to narrower types" {...@@ -1101,6 +1135,7 @@ test "cast f128 to narrower types" {
1101}1135}
11021136
1103test "peer type resolution: unreachable, null, slice" {1137test "peer type resolution: unreachable, null, slice" {
1138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1104 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1139 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1106 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1141 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
...@@ -1119,6 +1154,7 @@ test "peer type resolution: unreachable, null, slice" {...@@ -1119,6 +1154,7 @@ test "peer type resolution: unreachable, null, slice" {
1119}1154}
11201155
1121test "cast i8 fn call peers to i32 result" {1156test "cast i8 fn call peers to i32 result" {
1157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1158 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1123 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1159 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11241160
test/behavior/fn_delegation.zig+1
...@@ -32,6 +32,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {...@@ -32,6 +32,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {
32}32}
3333
34test "fn delegation" {34test "fn delegation" {
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3637
37 const foo = Foo{};38 const foo = Foo{};
test/behavior/ir_block_deps.zig+1
...@@ -18,6 +18,7 @@ fn getErrInt() anyerror!i32 {...@@ -18,6 +18,7 @@ fn getErrInt() anyerror!i32 {
18}18}
1919
20test "ir block deps" {20test "ir block deps" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2324
test/behavior/optional.zig+10
...@@ -5,6 +5,7 @@ const expect = testing.expect;...@@ -5,6 +5,7 @@ const expect = testing.expect;
5const expectEqual = testing.expectEqual;5const expectEqual = testing.expectEqual;
66
7test "passing an optional integer as a parameter" {7test "passing an optional integer as a parameter" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1011
...@@ -25,6 +26,7 @@ test "passing an optional integer as a parameter" {...@@ -25,6 +26,7 @@ test "passing an optional integer as a parameter" {
25pub const EmptyStruct = struct {};26pub const EmptyStruct = struct {};
2627
27test "optional pointer to size zero struct" {28test "optional pointer to size zero struct" {
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
29 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
3032
...@@ -34,6 +36,7 @@ test "optional pointer to size zero struct" {...@@ -34,6 +36,7 @@ test "optional pointer to size zero struct" {
34}36}
3537
36test "equality compare optional pointers" {38test "equality compare optional pointers" {
39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
38 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
3942
...@@ -58,6 +61,7 @@ fn testNullPtrsEql() !void {...@@ -58,6 +61,7 @@ fn testNullPtrsEql() !void {
58}61}
5962
60test "optional with void type" {63test "optional with void type" {
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
62 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6367
...@@ -69,6 +73,7 @@ test "optional with void type" {...@@ -69,6 +73,7 @@ test "optional with void type" {
69}73}
7074
71test "address of unwrap optional" {75test "address of unwrap optional" {
76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
7479
...@@ -89,6 +94,7 @@ test "address of unwrap optional" {...@@ -89,6 +94,7 @@ test "address of unwrap optional" {
89}94}
9095
91test "nested optional field in struct" {96test "nested optional field in struct" {
97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
92 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
93 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
94100
...@@ -105,6 +111,7 @@ test "nested optional field in struct" {...@@ -105,6 +111,7 @@ test "nested optional field in struct" {
105}111}
106112
107test "equality compare optional with non-optional" {113test "equality compare optional with non-optional" {
114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
108 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
109 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO116 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
110117
...@@ -142,6 +149,7 @@ fn test_cmp_optional_non_optional() !void {...@@ -142,6 +149,7 @@ fn test_cmp_optional_non_optional() !void {
142}149}
143150
144test "unwrap function call with optional pointer return value" {151test "unwrap function call with optional pointer return value" {
152 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
146 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
147155
...@@ -163,6 +171,7 @@ test "unwrap function call with optional pointer return value" {...@@ -163,6 +171,7 @@ test "unwrap function call with optional pointer return value" {
163}171}
164172
165test "nested orelse" {173test "nested orelse" {
174 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO176 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
168177
...@@ -189,6 +198,7 @@ test "nested orelse" {...@@ -189,6 +198,7 @@ test "nested orelse" {
189}198}
190199
191test "self-referential struct through a slice of optional" {200test "self-referential struct through a slice of optional" {
201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
194 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO204 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
test/behavior/reflection.zig+1
...@@ -28,6 +28,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {...@@ -28,6 +28,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
28}28}
2929
30test "reflection: @field" {30test "reflection: @field" {
31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
3334
test/behavior/slice.zig+14
...@@ -27,6 +27,7 @@ comptime {...@@ -27,6 +27,7 @@ comptime {
27}27}
2828
29test "slicing" {29test "slicing" {
30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
...@@ -68,6 +69,7 @@ test "comptime slice of undefined pointer of length 0" {...@@ -68,6 +69,7 @@ test "comptime slice of undefined pointer of length 0" {
68}69}
6970
70test "implicitly cast array of size 0 to slice" {71test "implicitly cast array of size 0 to slice" {
72 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
71 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7375
...@@ -80,6 +82,7 @@ fn assertLenIsZero(msg: []const u8) !void {...@@ -80,6 +82,7 @@ fn assertLenIsZero(msg: []const u8) !void {
80}82}
8183
82test "access len index of sentinel-terminated slice" {84test "access len index of sentinel-terminated slice" {
85 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO86 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
8487
85 const S = struct {88 const S = struct {
...@@ -129,6 +132,7 @@ test "slice of type" {...@@ -129,6 +132,7 @@ test "slice of type" {
129}132}
130133
131test "generic malloc free" {134test "generic malloc free" {
135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
132 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO136 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;137 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;138 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
...@@ -187,6 +191,7 @@ test "comptime pointer cast array and then slice" {...@@ -187,6 +191,7 @@ test "comptime pointer cast array and then slice" {
187}191}
188192
189test "slicing zero length array" {193test "slicing zero length array" {
194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
190 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO195 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
191 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;196 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;197 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
...@@ -202,6 +207,7 @@ test "slicing zero length array" {...@@ -202,6 +207,7 @@ test "slicing zero length array" {
202const x = @intToPtr([*]i32, 0x1000)[0..0x500];207const x = @intToPtr([*]i32, 0x1000)[0..0x500];
203const y = x[0x100..];208const y = x[0x100..];
204test "compile time slice of pointer to hard coded address" {209test "compile time slice of pointer to hard coded address" {
210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
205 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO211 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage1) return error.SkipZigTest;212 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;213 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
...@@ -215,6 +221,7 @@ test "compile time slice of pointer to hard coded address" {...@@ -215,6 +221,7 @@ test "compile time slice of pointer to hard coded address" {
215}221}
216222
217test "slice string literal has correct type" {223test "slice string literal has correct type" {
224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
218 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;225 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;226 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
220227
...@@ -230,6 +237,7 @@ test "slice string literal has correct type" {...@@ -230,6 +237,7 @@ test "slice string literal has correct type" {
230}237}
231238
232test "result location zero sized array inside struct field implicit cast to slice" {239test "result location zero sized array inside struct field implicit cast to slice" {
240 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
233 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO241 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
234242
235 const E = struct {243 const E = struct {
...@@ -240,6 +248,7 @@ test "result location zero sized array inside struct field implicit cast to slic...@@ -240,6 +248,7 @@ test "result location zero sized array inside struct field implicit cast to slic
240}248}
241249
242test "runtime safety lets us slice from len..len" {250test "runtime safety lets us slice from len..len" {
251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
243 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
244 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;253 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
245254
...@@ -252,6 +261,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {...@@ -252,6 +261,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {
252}261}
253262
254test "C pointer" {263test "C pointer" {
264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
255 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
256 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;266 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
257267
...@@ -262,6 +272,7 @@ test "C pointer" {...@@ -262,6 +272,7 @@ test "C pointer" {
262}272}
263273
264test "C pointer slice access" {274test "C pointer slice access" {
275 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
266 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
267278
...@@ -291,6 +302,7 @@ fn sliceSum(comptime q: []const u8) i32 {...@@ -291,6 +302,7 @@ fn sliceSum(comptime q: []const u8) i32 {
291}302}
292303
293test "slice type with custom alignment" {304test "slice type with custom alignment" {
305 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;306 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
295 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;307 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
296308
...@@ -305,6 +317,7 @@ test "slice type with custom alignment" {...@@ -305,6 +317,7 @@ test "slice type with custom alignment" {
305}317}
306318
307test "obtaining a null terminated slice" {319test "obtaining a null terminated slice" {
320 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;321 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
309 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;322 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
310 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO323 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
...@@ -350,6 +363,7 @@ test "empty array to slice" {...@@ -350,6 +363,7 @@ test "empty array to slice" {
350}363}
351364
352test "@ptrCast slice to pointer" {365test "@ptrCast slice to pointer" {
366 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;367 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
354 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;368 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
355369
test/behavior/struct.zig+28
...@@ -9,6 +9,7 @@ const maxInt = std.math.maxInt;...@@ -9,6 +9,7 @@ const maxInt = std.math.maxInt;
9top_level_field: i32,9top_level_field: i32,
1010
11test "top level fields" {11test "top level fields" {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1314
14 var instance = @This(){15 var instance = @This(){
...@@ -42,6 +43,7 @@ const StructWithFields = struct {...@@ -42,6 +43,7 @@ const StructWithFields = struct {
42};43};
4344
44test "non-packed struct has fields padded out to the required alignment" {45test "non-packed struct has fields padded out to the required alignment" {
46 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
4648
47 const foo = StructWithFields{ .a = 5, .b = 1, .c = 10, .d = 2 };49 const foo = StructWithFields{ .a = 5, .b = 1, .c = 10, .d = 2 };
...@@ -65,6 +67,7 @@ const SmallStruct = struct {...@@ -65,6 +67,7 @@ const SmallStruct = struct {
65};67};
6668
67test "lower unnamed constants" {69test "lower unnamed constants" {
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
68 var foo = SmallStruct{ .a = 1, .b = 255 };71 var foo = SmallStruct{ .a = 1, .b = 255 };
69 try expect(foo.first() == 1);72 try expect(foo.first() == 1);
70 try expect(foo.second() == 255);73 try expect(foo.second() == 255);
...@@ -83,6 +86,7 @@ const StructFoo = struct {...@@ -83,6 +86,7 @@ const StructFoo = struct {
83};86};
8487
85test "structs" {88test "structs" {
89 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
86 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;90 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8791
88 var foo: StructFoo = undefined;92 var foo: StructFoo = undefined;
...@@ -101,6 +105,7 @@ fn testMutation(foo: *StructFoo) void {...@@ -101,6 +105,7 @@ fn testMutation(foo: *StructFoo) void {
101}105}
102106
103test "struct byval assign" {107test "struct byval assign" {
108 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;109 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
105110
106 var foo1: StructFoo = undefined;111 var foo1: StructFoo = undefined;
...@@ -134,6 +139,7 @@ fn returnEmptyStructInstance() StructWithNoFields {...@@ -134,6 +139,7 @@ fn returnEmptyStructInstance() StructWithNoFields {
134}139}
135140
136test "fn call of struct field" {141test "fn call of struct field" {
142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
137 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
138144
139 const Foo = struct {145 const Foo = struct {
...@@ -165,12 +171,14 @@ const MemberFnTestFoo = struct {...@@ -165,12 +171,14 @@ const MemberFnTestFoo = struct {
165};171};
166172
167test "call member function directly" {173test "call member function directly" {
174 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
168 const instance = MemberFnTestFoo{ .x = 1234 };175 const instance = MemberFnTestFoo{ .x = 1234 };
169 const result = MemberFnTestFoo.member(instance);176 const result = MemberFnTestFoo.member(instance);
170 try expect(result == 1234);177 try expect(result == 1234);
171}178}
172179
173test "store member function in variable" {180test "store member function in variable" {
181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
174 const instance = MemberFnTestFoo{ .x = 1234 };182 const instance = MemberFnTestFoo{ .x = 1234 };
175 const memberFn = MemberFnTestFoo.member;183 const memberFn = MemberFnTestFoo.member;
176 const result = memberFn(instance);184 const result = memberFn(instance);
...@@ -178,6 +186,7 @@ test "store member function in variable" {...@@ -178,6 +186,7 @@ test "store member function in variable" {
178}186}
179187
180test "member functions" {188test "member functions" {
189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
181 const r = MemberFnRand{ .seed = 1234 };190 const r = MemberFnRand{ .seed = 1234 };
182 try expect(r.getSeed() == 1234);191 try expect(r.getSeed() == 1234);
183}192}
...@@ -189,6 +198,7 @@ const MemberFnRand = struct {...@@ -189,6 +198,7 @@ const MemberFnRand = struct {
189};198};
190199
191test "return struct byval from function" {200test "return struct byval from function" {
201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
193203
194 const bar = makeBar2(1234, 5678);204 const bar = makeBar2(1234, 5678);
...@@ -206,6 +216,7 @@ fn makeBar2(x: i32, y: i32) Bar {...@@ -206,6 +216,7 @@ fn makeBar2(x: i32, y: i32) Bar {
206}216}
207217
208test "call method with mutable reference to struct with no fields" {218test "call method with mutable reference to struct with no fields" {
219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
210221
211 const S = struct {222 const S = struct {
...@@ -238,6 +249,7 @@ test "usingnamespace within struct scope" {...@@ -238,6 +249,7 @@ test "usingnamespace within struct scope" {
238}249}
239250
240test "struct field init with catch" {251test "struct field init with catch" {
252 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
241 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;253 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
242254
243 const S = struct {255 const S = struct {
...@@ -296,6 +308,7 @@ const Val = struct {...@@ -296,6 +308,7 @@ const Val = struct {
296};308};
297309
298test "struct point to self" {310test "struct point to self" {
311 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
299 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO312 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
300 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO313 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -314,6 +327,7 @@ test "struct point to self" {...@@ -314,6 +327,7 @@ test "struct point to self" {
314}327}
315328
316test "void struct fields" {329test "void struct fields" {
330 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
317 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO331 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
318 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO332 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -334,6 +348,7 @@ const VoidStructFieldsFoo = struct {...@@ -334,6 +348,7 @@ const VoidStructFieldsFoo = struct {
334};348};
335349
336test "return empty struct from fn" {350test "return empty struct from fn" {
351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
337 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
338 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO353 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
339 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -347,6 +362,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {...@@ -347,6 +362,7 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 {
347}362}
348363
349test "pass slice of empty struct to fn" {364test "pass slice of empty struct to fn" {
365 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
350 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO366 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
351 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO367 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO368 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -359,6 +375,7 @@ fn testPassSliceOfEmptyStructToFn(slice: []const EmptyStruct2) usize {...@@ -359,6 +375,7 @@ fn testPassSliceOfEmptyStructToFn(slice: []const EmptyStruct2) usize {
359}375}
360376
361test "self-referencing struct via array member" {377test "self-referencing struct via array member" {
378 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
362 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO379 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
363 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO380 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO381 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -389,6 +406,7 @@ const EmptyStruct = struct {...@@ -389,6 +406,7 @@ const EmptyStruct = struct {
389};406};
390407
391test "align 1 field before self referential align 8 field as slice return type" {408test "align 1 field before self referential align 8 field as slice return type" {
409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
392 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO410 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
393 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO411 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO412 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -413,6 +431,7 @@ const APackedStruct = packed struct {...@@ -413,6 +431,7 @@ const APackedStruct = packed struct {
413};431};
414432
415test "packed struct" {433test "packed struct" {
434 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
416 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO435 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
417 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO436 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
418 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO437 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -438,6 +457,7 @@ const Foo96Bits = packed struct {...@@ -438,6 +457,7 @@ const Foo96Bits = packed struct {
438};457};
439458
440test "packed struct 24bits" {459test "packed struct 24bits" {
460 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
441 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO461 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO462 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
443 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -484,6 +504,7 @@ test "packed struct 24bits" {...@@ -484,6 +504,7 @@ test "packed struct 24bits" {
484}504}
485505
486test "runtime struct initialization of bitfield" {506test "runtime struct initialization of bitfield" {
507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
487 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO508 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO509 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO510 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -523,6 +544,7 @@ const Bitfields = packed struct {...@@ -523,6 +544,7 @@ const Bitfields = packed struct {
523};544};
524545
525test "native bit field understands endianness" {546test "native bit field understands endianness" {
547 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
526 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO548 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
527 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO549 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -546,6 +568,7 @@ test "native bit field understands endianness" {...@@ -546,6 +568,7 @@ test "native bit field understands endianness" {
546}568}
547569
548test "implicit cast packed struct field to const ptr" {570test "implicit cast packed struct field to const ptr" {
571 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
549 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO572 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
550 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO573 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
551 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO574 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -581,6 +604,7 @@ test "zero-bit field in packed struct" {...@@ -581,6 +604,7 @@ test "zero-bit field in packed struct" {
581}604}
582605
583test "packed struct with non-ABI-aligned field" {606test "packed struct with non-ABI-aligned field" {
607 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
584 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO608 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
585 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO609 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
586 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO610 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -610,6 +634,7 @@ const bit_field_1 = BitField1{...@@ -610,6 +634,7 @@ const bit_field_1 = BitField1{
610};634};
611635
612test "bit field access" {636test "bit field access" {
637 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
613 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO638 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
614 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO639 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
615 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO640 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -642,6 +667,7 @@ fn getC(data: *const BitField1) u2 {...@@ -642,6 +667,7 @@ fn getC(data: *const BitField1) u2 {
642}667}
643668
644test "default struct initialization fields" {669test "default struct initialization fields" {
670 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
645 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO671 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
646 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO672 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
647 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO673 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -907,6 +933,7 @@ test "packed struct field passed to generic function" {...@@ -907,6 +933,7 @@ test "packed struct field passed to generic function" {
907}933}
908934
909test "anonymous struct literal syntax" {935test "anonymous struct literal syntax" {
936 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
910 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO937 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
911 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO938 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
912 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO939 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -1100,6 +1127,7 @@ test "type coercion of pointer to anon struct literal to pointer to struct" {...@@ -1100,6 +1127,7 @@ test "type coercion of pointer to anon struct literal to pointer to struct" {
1100}1127}
11011128
1102test "packed struct with undefined initializers" {1129test "packed struct with undefined initializers" {
1130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1103 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1131 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1104 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1132 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/truncate.zig+9
...@@ -3,6 +3,7 @@ const builtin = @import("builtin");...@@ -3,6 +3,7 @@ const builtin = @import("builtin");
3const expect = std.testing.expect;3const expect = std.testing.expect;
44
5test "truncate u0 to larger integer allowed and has comptime known result" {5test "truncate u0 to larger integer allowed and has comptime known result" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
78
8 var x: u0 = 0;9 var x: u0 = 0;
...@@ -11,6 +12,7 @@ test "truncate u0 to larger integer allowed and has comptime known result" {...@@ -11,6 +12,7 @@ test "truncate u0 to larger integer allowed and has comptime known result" {
11}12}
1213
13test "truncate.u0.literal" {14test "truncate.u0.literal" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1517
16 var z = @truncate(u0, 0);18 var z = @truncate(u0, 0);
...@@ -18,6 +20,7 @@ test "truncate.u0.literal" {...@@ -18,6 +20,7 @@ test "truncate.u0.literal" {
18}20}
1921
20test "truncate.u0.const" {22test "truncate.u0.const" {
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2225
23 const c0: usize = 0;26 const c0: usize = 0;
...@@ -26,6 +29,7 @@ test "truncate.u0.const" {...@@ -26,6 +29,7 @@ test "truncate.u0.const" {
26}29}
2730
28test "truncate.u0.var" {31test "truncate.u0.var" {
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3034
31 var d: u8 = 2;35 var d: u8 = 2;
...@@ -34,6 +38,7 @@ test "truncate.u0.var" {...@@ -34,6 +38,7 @@ test "truncate.u0.var" {
34}38}
3539
36test "truncate i0 to larger integer allowed and has comptime known result" {40test "truncate i0 to larger integer allowed and has comptime known result" {
41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3843
39 var x: i0 = 0;44 var x: i0 = 0;
...@@ -42,6 +47,7 @@ test "truncate i0 to larger integer allowed and has comptime known result" {...@@ -42,6 +47,7 @@ test "truncate i0 to larger integer allowed and has comptime known result" {
42}47}
4348
44test "truncate.i0.literal" {49test "truncate.i0.literal" {
50 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
4652
47 var z = @truncate(i0, 0);53 var z = @truncate(i0, 0);
...@@ -49,6 +55,7 @@ test "truncate.i0.literal" {...@@ -49,6 +55,7 @@ test "truncate.i0.literal" {
49}55}
5056
51test "truncate.i0.const" {57test "truncate.i0.const" {
58 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5360
54 const c0: isize = 0;61 const c0: isize = 0;
...@@ -57,6 +64,7 @@ test "truncate.i0.const" {...@@ -57,6 +64,7 @@ test "truncate.i0.const" {
57}64}
5865
59test "truncate.i0.var" {66test "truncate.i0.var" {
67 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6169
62 var d: i8 = 2;70 var d: i8 = 2;
...@@ -65,6 +73,7 @@ test "truncate.i0.var" {...@@ -65,6 +73,7 @@ test "truncate.i0.var" {
65}73}
6674
67test "truncate on comptime integer" {75test "truncate on comptime integer" {
76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6978
70 var x = @truncate(u16, 9999);79 var x = @truncate(u16, 9999);
test/behavior/var_args.zig+3
...@@ -25,6 +25,7 @@ fn readFirstVarArg(args: anytype) void {...@@ -25,6 +25,7 @@ fn readFirstVarArg(args: anytype) void {
25}25}
2626
27test "send void arg to var args" {27test "send void arg to var args" {
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
28 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
29 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -84,6 +85,7 @@ fn foo2(args: anytype) bool {...@@ -84,6 +85,7 @@ fn foo2(args: anytype) bool {
84}85}
8586
86test "array of var args functions" {87test "array of var args functions" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO89 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO90 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
...@@ -93,6 +95,7 @@ test "array of var args functions" {...@@ -93,6 +95,7 @@ test "array of var args functions" {
93}95}
9496
95test "pass zero length array to var args param" {97test "pass zero length array to var args param" {
98 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
96 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO