authorgravatar for joachim.schmidt557@outlook.comJoachim Schmidt <joachim.schmidt557@outlook.com> 2022-06-25 14:59:22+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-06-25 21:16:51+02:00
log960c14206094484cee056b8806b9b8f75a84891d
tree0315d9420a504b2337b94c564ae029b20ddeec31
parent76b28ed45238fff843e04e94657e2790ee95954b

stage2 ARM: implement basic intCast and error union wrapping


31 files changed, 53 insertions(+), 113 deletions(-)

src/arch/arm/CodeGen.zig+53-13
...@@ -1002,18 +1002,35 @@ fn airIntCast(self: *Self, inst: Air.Inst.Index) !void {...@@ -1002,18 +1002,35 @@ fn airIntCast(self: *Self, inst: Air.Inst.Index) !void {
1002 if (self.liveness.isUnused(inst))1002 if (self.liveness.isUnused(inst))
1003 return self.finishAir(inst, .dead, .{ ty_op.operand, .none, .none });1003 return self.finishAir(inst, .dead, .{ ty_op.operand, .none, .none });
10041004
1005 const operand_ty = self.air.typeOf(ty_op.operand);
1006 const operand = try self.resolveInst(ty_op.operand);1005 const operand = try self.resolveInst(ty_op.operand);
1006 const operand_ty = self.air.typeOf(ty_op.operand);
1007 const dest_ty = self.air.typeOfIndex(inst);
1008
1009 const operand_abi_size = operand_ty.abiSize(self.target.*);
1010 const dest_abi_size = dest_ty.abiSize(self.target.*);
1007 const info_a = operand_ty.intInfo(self.target.*);1011 const info_a = operand_ty.intInfo(self.target.*);
1008 const info_b = self.air.typeOfIndex(inst).intInfo(self.target.*);1012 const info_b = dest_ty.intInfo(self.target.*);
1009 if (info_a.signedness != info_b.signedness)1013
1010 return self.fail("TODO gen intcast sign safety in semantic analysis", .{});1014 const dst_mcv: MCValue = blk: {
1015 if (info_a.bits == info_b.bits) {
1016 break :blk operand;
1017 }
1018 if (operand_abi_size > 4 or dest_abi_size > 4) {
1019 return self.fail("TODO implement intCast for abi sizes larger than 4", .{});
1020 }
1021
1022 const operand_lock: ?RegisterLock = switch (operand) {
1023 .register => |reg| self.register_manager.lockRegAssumeUnused(reg),
1024 else => null,
1025 };
1026 defer if (operand_lock) |lock| self.register_manager.unlockReg(lock);
10111027
1012 if (info_a.bits == info_b.bits)1028 const reg = try self.register_manager.allocReg(inst, gp);
1013 return self.finishAir(inst, operand, .{ ty_op.operand, .none, .none });1029 try self.genSetReg(dest_ty, reg, operand);
1030 break :blk MCValue{ .register = reg };
1031 };
10141032
1015 return self.fail("TODO implement intCast for {}", .{self.target.cpu.arch});1033 return self.finishAir(inst, dst_mcv, .{ ty_op.operand, .none, .none });
1016 // return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1017}1034}
10181035
1019fn truncRegister(1036fn truncRegister(
...@@ -1880,7 +1897,22 @@ fn airSetErrReturnTrace(self: *Self, inst: Air.Inst.Index) !void {...@@ -1880,7 +1897,22 @@ fn airSetErrReturnTrace(self: *Self, inst: Air.Inst.Index) !void {
1880/// T to E!T1897/// T to E!T
1881fn airWrapErrUnionPayload(self: *Self, inst: Air.Inst.Index) !void {1898fn airWrapErrUnionPayload(self: *Self, inst: Air.Inst.Index) !void {
1882 const ty_op = self.air.instructions.items(.data)[inst].ty_op;1899 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
1883 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement wrap errunion payload for {}", .{self.target.cpu.arch});1900 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {
1901 const error_union_ty = self.air.getRefType(ty_op.ty);
1902 const payload_ty = error_union_ty.errorUnionPayload();
1903 const operand = try self.resolveInst(ty_op.operand);
1904 if (!payload_ty.hasRuntimeBitsIgnoreComptime()) break :result operand;
1905
1906 const abi_size = @intCast(u32, error_union_ty.abiSize(self.target.*));
1907 const abi_align = error_union_ty.abiAlignment(self.target.*);
1908 const stack_offset = @intCast(u32, try self.allocMem(inst, abi_size, abi_align));
1909 const payload_off = errUnionPayloadOffset(payload_ty, self.target.*);
1910 const err_off = errUnionErrorOffset(payload_ty, self.target.*);
1911 try self.genSetStack(payload_ty, stack_offset - @intCast(u32, payload_off), operand);
1912 try self.genSetStack(Type.anyerror, stack_offset - @intCast(u32, err_off), .{ .immediate = 0 });
1913
1914 break :result MCValue{ .stack_offset = stack_offset };
1915 };
1884 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });1916 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1885}1917}
18861918
...@@ -1890,10 +1922,18 @@ fn airWrapErrUnionErr(self: *Self, inst: Air.Inst.Index) !void {...@@ -1890,10 +1922,18 @@ fn airWrapErrUnionErr(self: *Self, inst: Air.Inst.Index) !void {
1890 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {1922 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {
1891 const error_union_ty = self.air.getRefType(ty_op.ty);1923 const error_union_ty = self.air.getRefType(ty_op.ty);
1892 const payload_ty = error_union_ty.errorUnionPayload();1924 const payload_ty = error_union_ty.errorUnionPayload();
1893 const mcv = try self.resolveInst(ty_op.operand);1925 const operand = try self.resolveInst(ty_op.operand);
1894 if (!payload_ty.hasRuntimeBits()) break :result mcv;1926 if (!payload_ty.hasRuntimeBitsIgnoreComptime()) break :result operand;
1927
1928 const abi_size = @intCast(u32, error_union_ty.abiSize(self.target.*));
1929 const abi_align = error_union_ty.abiAlignment(self.target.*);
1930 const stack_offset = @intCast(u32, try self.allocMem(inst, abi_size, abi_align));
1931 const payload_off = errUnionPayloadOffset(payload_ty, self.target.*);
1932 const err_off = errUnionErrorOffset(payload_ty, self.target.*);
1933 try self.genSetStack(Type.anyerror, stack_offset - @intCast(u32, err_off), operand);
1934 try self.genSetStack(payload_ty, stack_offset - @intCast(u32, payload_off), .undef);
18951935
1896 return self.fail("TODO implement wrap errunion error for non-empty payloads", .{});1936 break :result MCValue{ .stack_offset = stack_offset };
1897 };1937 };
1898 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });1938 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1899}1939}
...@@ -4273,7 +4313,7 @@ fn br(self: *Self, block: Air.Inst.Index, operand: Air.Inst.Ref) !void {...@@ -4273,7 +4313,7 @@ fn br(self: *Self, block: Air.Inst.Index, operand: Air.Inst.Ref) !void {
4273 block_data.mcv = switch (operand_mcv) {4313 block_data.mcv = switch (operand_mcv) {
4274 .none, .dead, .unreach => unreachable,4314 .none, .dead, .unreach => unreachable,
4275 .register, .stack_offset, .memory => operand_mcv,4315 .register, .stack_offset, .memory => operand_mcv,
4276 .immediate, .stack_argument_offset => blk: {4316 .immediate, .stack_argument_offset, .cpsr_flags => blk: {
4277 const new_mcv = try self.allocRegOrMem(block, true);4317 const new_mcv = try self.allocRegOrMem(block, true);
4278 try self.setRegOrMem(self.air.typeOfIndex(block), new_mcv, operand_mcv);4318 try self.setRegOrMem(self.air.typeOfIndex(block), new_mcv, operand_mcv);
4279 break :blk new_mcv;4319 break :blk new_mcv;
test/behavior/align.zig-2
...@@ -8,7 +8,6 @@ var foo: u8 align(4) = 100;...@@ -8,7 +8,6 @@ var foo: u8 align(4) = 100;
88
9test "global variable alignment" {9test "global variable alignment" {
10 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1211
13 comptime try expect(@typeInfo(@TypeOf(&foo)).Pointer.alignment == 4);12 comptime try expect(@typeInfo(@TypeOf(&foo)).Pointer.alignment == 4);
14 comptime try expect(@TypeOf(&foo) == *align(4) u8);13 comptime try expect(@TypeOf(&foo) == *align(4) u8);
...@@ -223,7 +222,6 @@ fn testBytesAlign(b: u8) !void {...@@ -223,7 +222,6 @@ fn testBytesAlign(b: u8) !void {
223test "@alignCast slices" {222test "@alignCast slices" {
224 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;223 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
227225
228 var array align(4) = [_]u32{ 1, 1 };226 var array align(4) = [_]u32{ 1, 1 };
229 const slice = array[0..];227 const slice = array[0..];
test/behavior/array.zig-6
...@@ -59,7 +59,6 @@ test "array init with mult" {...@@ -59,7 +59,6 @@ test "array init with mult" {
5959
60test "array literal with explicit type" {60test "array literal with explicit type" {
61 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6362
64 const hex_mult: [4]u16 = .{ 4096, 256, 16, 1 };63 const hex_mult: [4]u16 = .{ 4096, 256, 16, 1 };
6564
...@@ -112,7 +111,6 @@ test "array with sentinels" {...@@ -112,7 +111,6 @@ test "array with sentinels" {
112 }111 }
113112
114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
116114
117 const S = struct {115 const S = struct {
118 fn doTheTest(is_ct: bool) !void {116 fn doTheTest(is_ct: bool) !void {
...@@ -162,7 +160,6 @@ test "nested arrays of strings" {...@@ -162,7 +160,6 @@ test "nested arrays of strings" {
162160
163test "nested arrays of integers" {161test "nested arrays of integers" {
164 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO163 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
167164
168 const array_of_numbers = [_][2]u8{165 const array_of_numbers = [_][2]u8{
...@@ -190,7 +187,6 @@ fn plusOne(x: u32) u32 {...@@ -190,7 +187,6 @@ fn plusOne(x: u32) u32 {
190187
191test "single-item pointer to array indexing and slicing" {188test "single-item pointer to array indexing and slicing" {
192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
194190
195 try testSingleItemPtrArrayIndexSlice();191 try testSingleItemPtrArrayIndexSlice();
196 comptime try testSingleItemPtrArrayIndexSlice();192 comptime try testSingleItemPtrArrayIndexSlice();
...@@ -313,7 +309,6 @@ test "comptime evaluating function that takes array by value" {...@@ -313,7 +309,6 @@ test "comptime evaluating function that takes array by value" {
313309
314test "runtime initialize array elem and then implicit cast to slice" {310test "runtime initialize array elem and then implicit cast to slice" {
315 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;311 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
317312
318 var two: i32 = 2;313 var two: i32 = 2;
319 const x: []const i32 = &[_]i32{two};314 const x: []const i32 = &[_]i32{two};
...@@ -322,7 +317,6 @@ test "runtime initialize array elem and then implicit cast to slice" {...@@ -322,7 +317,6 @@ test "runtime initialize array elem and then implicit cast to slice" {
322317
323test "array literal as argument to function" {318test "array literal as argument to function" {
324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
325 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
326320
327 const S = struct {321 const S = struct {
328 fn entry(two: i32) !void {322 fn entry(two: i32) !void {
test/behavior/basic.zig-9
...@@ -204,7 +204,6 @@ test "opaque types" {...@@ -204,7 +204,6 @@ test "opaque types" {
204 }204 }
205205
206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
208207
209 try expect(*OpaqueA != *OpaqueB);208 try expect(*OpaqueA != *OpaqueB);
210209
...@@ -365,7 +364,6 @@ fn testMemcpyMemset() !void {...@@ -365,7 +364,6 @@ fn testMemcpyMemset() !void {
365}364}
366365
367test "variable is allowed to be a pointer to an opaque type" {366test "variable is allowed to be a pointer to an opaque type" {
368 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
369 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO367 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
370368
371 var x: i32 = 1234;369 var x: i32 = 1234;
...@@ -457,7 +455,6 @@ fn testArray2DConstDoublePtr(ptr: *const f32) !void {...@@ -457,7 +455,6 @@ fn testArray2DConstDoublePtr(ptr: *const f32) !void {
457455
458test "double implicit cast in same expression" {456test "double implicit cast in same expression" {
459 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;457 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
461458
462 var x = @as(i32, @as(u16, nine()));459 var x = @as(i32, @as(u16, nine()));
463 try expect(x == 9);460 try expect(x == 9);
...@@ -616,8 +613,6 @@ test "self reference through fn ptr field" {...@@ -616,8 +613,6 @@ test "self reference through fn ptr field" {
616}613}
617614
618test "global variable initialized to global variable array element" {615test "global variable initialized to global variable array element" {
619 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
620
621 try expect(global_ptr == &gdt[0]);616 try expect(global_ptr == &gdt[0]);
622}617}
623const GDTEntry = struct {618const GDTEntry = struct {
...@@ -681,7 +676,6 @@ test "explicit cast optional pointers" {...@@ -681,7 +676,6 @@ test "explicit cast optional pointers" {
681}676}
682677
683test "pointer comparison" {678test "pointer comparison" {
684 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
685 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;679 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
686680
687 const a = @as([]const u8, "a");681 const a = @as([]const u8, "a");
...@@ -787,7 +781,6 @@ test "pointer to thread local array" {...@@ -787,7 +781,6 @@ test "pointer to thread local array" {
787threadlocal var buffer: [11]u8 = undefined;781threadlocal var buffer: [11]u8 = undefined;
788782
789test "auto created variables have correct alignment" {783test "auto created variables have correct alignment" {
790 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
791 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO784 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
792785
793 const S = struct {786 const S = struct {
...@@ -889,7 +882,6 @@ test "labeled block implicitly ends in a break" {...@@ -889,7 +882,6 @@ test "labeled block implicitly ends in a break" {
889test "catch in block has correct result location" {882test "catch in block has correct result location" {
890 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;883 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
891 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
892 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
893885
894 const S = struct {886 const S = struct {
895 fn open() error{A}!@This() {887 fn open() error{A}!@This() {
...@@ -920,7 +912,6 @@ test "labeled block with runtime branch forwards its result location type to bre...@@ -920,7 +912,6 @@ test "labeled block with runtime branch forwards its result location type to bre
920912
921test "try in labeled block doesn't cast to wrong type" {913test "try in labeled block doesn't cast to wrong type" {
922 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;914 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
923 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
924915
925 const S = struct {916 const S = struct {
926 a: u32,917 a: u32,
test/behavior/bitreverse.zig-1
...@@ -157,7 +157,6 @@ test "bitReverse vectors u0" {...@@ -157,7 +157,6 @@ test "bitReverse vectors u0" {
157 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;157 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
158 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;158 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
159 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;159 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161160
162 comptime try vector0();161 comptime try vector0();
163 try vector0();162 try vector0();
test/behavior/bugs/1076.zig-1
...@@ -5,7 +5,6 @@ const expect = std.testing.expect;...@@ -5,7 +5,6 @@ const expect = std.testing.expect;
55
6test "comptime code should not modify constant data" {6test "comptime code should not modify constant data" {
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
109
11 try testCastPtrOfArrayToSliceAndPtr();10 try testCastPtrOfArrayToSliceAndPtr();
test/behavior/bugs/11165.zig-4
...@@ -1,8 +1,6 @@...@@ -1,8 +1,6 @@
1const builtin = @import("builtin");1const builtin = @import("builtin");
22
3test "bytes" {3test "bytes" {
4 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5
6 const S = struct {4 const S = struct {
7 a: u32,5 a: u32,
8 c: [5]u8,6 c: [5]u8,
...@@ -23,8 +21,6 @@ test "bytes" {...@@ -23,8 +21,6 @@ test "bytes" {
23}21}
2422
25test "aggregate" {23test "aggregate" {
26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
27
28 const S = struct {24 const S = struct {
29 a: u32,25 a: u32,
30 c: [5]u8,26 c: [5]u8,
test/behavior/bugs/11213.zig-1
...@@ -4,7 +4,6 @@ const testing = std.testing;...@@ -4,7 +4,6 @@ const testing = std.testing;
44
5test {5test {
6 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
87
9 const g: error{Test}!void = error.Test;8 const g: error{Test}!void = error.Test;
109
test/behavior/bugs/3779.zig-5
...@@ -8,7 +8,6 @@ const ptr_tag_name: [*:0]const u8 = tag_name;...@@ -8,7 +8,6 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
8test "@tagName() returns a string literal" {8test "@tagName() returns a string literal" {
9 if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong9 if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1211
13 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));12 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
14 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));13 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
...@@ -22,7 +21,6 @@ const ptr_error_name: [*:0]const u8 = error_name;...@@ -22,7 +21,6 @@ const ptr_error_name: [*:0]const u8 = error_name;
22test "@errorName() returns a string literal" {21test "@errorName() returns a string literal" {
23 if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong22 if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong
24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2624
27 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));25 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
28 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));26 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
...@@ -36,7 +34,6 @@ const ptr_type_name: [*:0]const u8 = type_name;...@@ -36,7 +34,6 @@ const ptr_type_name: [*:0]const u8 = type_name;
36test "@typeName() returns a string literal" {34test "@typeName() returns a string literal" {
37 if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong35 if (builtin.zig_backend == .stage1) return error.SkipZigTest; // stage1 gets the type wrong
38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO36 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4037
41 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));38 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
42 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));39 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));
...@@ -49,7 +46,6 @@ const expected_contents = "hello zig\n";...@@ -49,7 +46,6 @@ const expected_contents = "hello zig\n";
4946
50test "@embedFile() returns a string literal" {47test "@embedFile() returns a string literal" {
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5349
54 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));50 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
55 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));51 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
...@@ -63,7 +59,6 @@ fn testFnForSrc() std.builtin.SourceLocation {...@@ -63,7 +59,6 @@ fn testFnForSrc() std.builtin.SourceLocation {
6359
64test "@src() returns a struct containing 0-terminated string slices" {60test "@src() returns a struct containing 0-terminated string slices" {
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO61 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6762
68 const src = testFnForSrc();63 const src = testFnForSrc();
69 try std.testing.expect([:0]const u8 == @TypeOf(src.file));64 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
test/behavior/bugs/394.zig-1
...@@ -11,7 +11,6 @@ const expect = @import("std").testing.expect;...@@ -11,7 +11,6 @@ const expect = @import("std").testing.expect;
11const builtin = @import("builtin");11const builtin = @import("builtin");
1212
13test "fixed" {13test "fixed" {
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
16 const x = S{15 const x = S{
17 .x = 3,16 .x = 3,
test/behavior/bugs/7187.zig-2
...@@ -3,8 +3,6 @@ const builtin = @import("builtin");...@@ -3,8 +3,6 @@ const builtin = @import("builtin");
3const expect = std.testing.expect;3const expect = std.testing.expect;
44
5test "miscompilation with bool return type" {5test "miscompilation with bool return type" {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7
8 var x: usize = 1;6 var x: usize = 1;
9 var y: bool = getFalse();7 var y: bool = getFalse();
10 _ = y;8 _ = y;
test/behavior/byteswap.zig-1
...@@ -118,7 +118,6 @@ test "@byteSwap vectors u0" {...@@ -118,7 +118,6 @@ test "@byteSwap vectors u0" {
118 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;118 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
120 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
122121
123 comptime try vector0();122 comptime try vector0();
124 try vector0();123 try vector0();
test/behavior/byval_arg_var.zig-1
...@@ -6,7 +6,6 @@ var result: []const u8 = "wrong";...@@ -6,7 +6,6 @@ var result: []const u8 = "wrong";
6test "pass string literal byvalue to a generic var param" {6test "pass string literal byvalue to a generic var param" {
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
109
11 start();10 start();
12 blowUpStack(10);11 blowUpStack(10);
test/behavior/cast.zig-11
...@@ -251,7 +251,6 @@ fn MakeType(comptime T: type) type {...@@ -251,7 +251,6 @@ fn MakeType(comptime T: type) type {
251251
252test "implicit cast from *[N]T to [*c]T" {252test "implicit cast from *[N]T to [*c]T" {
253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
255254
256 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };255 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
257 var y: [*c]u16 = &x;256 var y: [*c]u16 = &x;
...@@ -372,7 +371,6 @@ test "cast from ?[*]T to ??[*]T" {...@@ -372,7 +371,6 @@ test "cast from ?[*]T to ??[*]T" {
372371
373test "peer type unsigned int to signed" {372test "peer type unsigned int to signed" {
374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
376374
377 var w: u31 = 5;375 var w: u31 = 5;
378 var x: u8 = 7;376 var x: u8 = 7;
...@@ -451,7 +449,6 @@ fn castToOptionalTypeError(z: i32) !void {...@@ -451,7 +449,6 @@ fn castToOptionalTypeError(z: i32) !void {
451test "implicitly cast from [0]T to anyerror![]T" {449test "implicitly cast from [0]T to anyerror![]T" {
452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;450 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
453 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO451 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455452
456 try testCastZeroArrayToErrSliceMut();453 try testCastZeroArrayToErrSliceMut();
457 comptime try testCastZeroArrayToErrSliceMut();454 comptime try testCastZeroArrayToErrSliceMut();
...@@ -817,7 +814,6 @@ test "peer type resolution: error union after non-error" {...@@ -817,7 +814,6 @@ test "peer type resolution: error union after non-error" {
817test "peer cast *[0]T to E![]const T" {814test "peer cast *[0]T to E![]const T" {
818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;815 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
819 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO816 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
821 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO817 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
822818
823 var buffer: [5]u8 = "abcde".*;819 var buffer: [5]u8 = "abcde".*;
...@@ -832,7 +828,6 @@ test "peer cast *[0]T to E![]const T" {...@@ -832,7 +828,6 @@ test "peer cast *[0]T to E![]const T" {
832test "peer cast *[0]T to []const T" {828test "peer cast *[0]T to []const T" {
833 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;829 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
834 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO830 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
835 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
836 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO831 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
837832
838 var buffer: [5]u8 = "abcde".*;833 var buffer: [5]u8 = "abcde".*;
...@@ -893,7 +888,6 @@ test "peer cast [:x]T to []T" {...@@ -893,7 +888,6 @@ test "peer cast [:x]T to []T" {
893test "peer cast [N:x]T to [N]T" {888test "peer cast [N:x]T to [N]T" {
894 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;889 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
895 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO890 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
896 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
897891
898 const S = struct {892 const S = struct {
899 fn doTheTest() !void {893 fn doTheTest() !void {
...@@ -909,7 +903,6 @@ test "peer cast [N:x]T to [N]T" {...@@ -909,7 +903,6 @@ test "peer cast [N:x]T to [N]T" {
909test "peer cast *[N:x]T to *[N]T" {903test "peer cast *[N:x]T to *[N]T" {
910 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO904 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
911 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO905 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
912 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
913906
914 const S = struct {907 const S = struct {
915 fn doTheTest() !void {908 fn doTheTest() !void {
...@@ -1146,7 +1139,6 @@ test "implicit ptr to *anyopaque" {...@@ -1146,7 +1139,6 @@ test "implicit ptr to *anyopaque" {
11461139
1147test "return null from fn() anyerror!?&T" {1140test "return null from fn() anyerror!?&T" {
1148 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1149 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11501142
1151 const a = returnNullFromOptionalTypeErrorRef();1143 const a = returnNullFromOptionalTypeErrorRef();
1152 const b = returnNullLitFromOptionalTypeErrorRef();1144 const b = returnNullLitFromOptionalTypeErrorRef();
...@@ -1248,7 +1240,6 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {...@@ -1248,7 +1240,6 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {
1248test "implicit cast *[0]T to E![]const u8" {1240test "implicit cast *[0]T to E![]const u8" {
1249 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1250 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1242 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1251 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12521243
1253 var x = @as(anyerror![]const u8, &[0]u8{});1244 var x = @as(anyerror![]const u8, &[0]u8{});
1254 try expect((x catch unreachable).len == 0);1245 try expect((x catch unreachable).len == 0);
...@@ -1387,7 +1378,6 @@ test "peer type resolution: unreachable, null, slice" {...@@ -1387,7 +1378,6 @@ test "peer type resolution: unreachable, null, slice" {
13871378
1388test "cast i8 fn call peers to i32 result" {1379test "cast i8 fn call peers to i32 result" {
1389 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1390 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13911381
1392 const S = struct {1382 const S = struct {
1393 fn doTheTest() !void {1383 fn doTheTest() !void {
...@@ -1417,7 +1407,6 @@ test "cast compatible optional types" {...@@ -1417,7 +1407,6 @@ test "cast compatible optional types" {
14171407
1418test "coerce undefined single-item pointer of array to error union of slice" {1408test "coerce undefined single-item pointer of array to error union of slice" {
1419 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14211410
1422 const a = @as([*]u8, undefined)[0..0];1411 const a = @as([*]u8, undefined)[0..0];
1423 var b: error{a}![]const u8 = a;1412 var b: error{a}![]const u8 = a;
test/behavior/comptime_memory.zig-1
...@@ -5,7 +5,6 @@ const ptr_size = @sizeOf(usize);...@@ -5,7 +5,6 @@ const ptr_size = @sizeOf(usize);
55
6test "type pun signed and unsigned as single pointer" {6test "type pun signed and unsigned as single pointer" {
7 if (builtin.zig_backend == .stage1) return error.SkipZigTest;7 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
98
10 comptime {9 comptime {
11 var x: u32 = 0;10 var x: u32 = 0;
test/behavior/enum.zig-1
...@@ -24,7 +24,6 @@ fn testIntToEnumEval(x: i32) !void {...@@ -24,7 +24,6 @@ fn testIntToEnumEval(x: i32) !void {
24const IntToEnumNumber = enum { Zero, One, Two, Three, Four };24const IntToEnumNumber = enum { Zero, One, Two, Three, Four };
2525
26test "int to enum" {26test "int to enum" {
27 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;27 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2928
30 try testIntToEnumEval(3);29 try testIntToEnumEval(3);
test/behavior/error.zig-13
...@@ -29,7 +29,6 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {...@@ -29,7 +29,6 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {
29}29}
3030
31test "error binary operator" {31test "error binary operator" {
32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3433
35 const a = errBinaryOperatorG(true) catch 3;34 const a = errBinaryOperatorG(true) catch 3;
...@@ -61,14 +60,12 @@ pub fn baz() anyerror!i32 {...@@ -61,14 +60,12 @@ pub fn baz() anyerror!i32 {
61}60}
6261
63test "error wrapping" {62test "error wrapping" {
64 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;63 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6664
67 try expect((baz() catch unreachable) == 15);65 try expect((baz() catch unreachable) == 15);
68}66}
6967
70test "unwrap simple value from error" {68test "unwrap simple value from error" {
71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7370
74 const i = unwrapSimpleValueFromErrorDo() catch unreachable;71 const i = unwrapSimpleValueFromErrorDo() catch unreachable;
...@@ -79,7 +76,6 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {...@@ -79,7 +76,6 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {
79}76}
8077
81test "error return in assignment" {78test "error return in assignment" {
82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;79 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8480
85 doErrReturnInAssignment() catch unreachable;81 doErrReturnInAssignment() catch unreachable;
...@@ -126,7 +122,6 @@ test "debug info for optional error set" {...@@ -126,7 +122,6 @@ test "debug info for optional error set" {
126}122}
127123
128test "implicit cast to optional to error union to return result loc" {124test "implicit cast to optional to error union to return result loc" {
129 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
131126
132 const S = struct {127 const S = struct {
...@@ -149,7 +144,6 @@ test "implicit cast to optional to error union to return result loc" {...@@ -149,7 +144,6 @@ test "implicit cast to optional to error union to return result loc" {
149144
150test "fn returning empty error set can be passed as fn returning any error" {145test "fn returning empty error set can be passed as fn returning any error" {
151 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO146 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
152 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
154148
155 entry();149 entry();
...@@ -159,7 +153,6 @@ test "fn returning empty error set can be passed as fn returning any error" {...@@ -159,7 +153,6 @@ test "fn returning empty error set can be passed as fn returning any error" {
159test "fn returning empty error set can be passed as fn returning any error - pointer" {153test "fn returning empty error set can be passed as fn returning any error - pointer" {
160 if (builtin.zig_backend == .stage1) return error.SkipZigTest;154 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
164157
165 entryPtr();158 entryPtr();
...@@ -249,7 +242,6 @@ fn testExplicitErrorSetCast(set1: Set1) !void {...@@ -249,7 +242,6 @@ fn testExplicitErrorSetCast(set1: Set1) !void {
249242
250test "comptime test error for empty error set" {243test "comptime test error for empty error set" {
251 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO244 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO245 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
254246
255 try testComptimeTestErrorEmptySet(1234);247 try testComptimeTestErrorEmptySet(1234);
...@@ -268,7 +260,6 @@ fn testComptimeTestErrorEmptySet(x: EmptyErrorSet!i32) !void {...@@ -268,7 +260,6 @@ fn testComptimeTestErrorEmptySet(x: EmptyErrorSet!i32) !void {
268test "comptime err to int of error set with only 1 possible value" {260test "comptime err to int of error set with only 1 possible value" {
269 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO261 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
270 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO262 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
271 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
272 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
273264
274 testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A));265 testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A));
...@@ -323,7 +314,6 @@ fn quux_1() !i32 {...@@ -323,7 +314,6 @@ fn quux_1() !i32 {
323}314}
324315
325test "error: Zero sized error set returned with value payload crash" {316test "error: Zero sized error set returned with value payload crash" {
326 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
327 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;317 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
328318
329 _ = try foo3(0);319 _ = try foo3(0);
...@@ -422,7 +412,6 @@ test "nested error union function call in optional unwrap" {...@@ -422,7 +412,6 @@ test "nested error union function call in optional unwrap" {
422412
423test "return function call to error set from error union function" {413test "return function call to error set from error union function" {
424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO414 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
426 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO415 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
427416
428 const S = struct {417 const S = struct {
...@@ -455,7 +444,6 @@ test "optional error set is the same size as error set" {...@@ -455,7 +444,6 @@ test "optional error set is the same size as error set" {
455444
456test "nested catch" {445test "nested catch" {
457 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO446 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
458 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
459 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO447 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
460448
461 const S = struct {449 const S = struct {
...@@ -487,7 +475,6 @@ test "function pointer with return type that is error union with payload which i...@@ -487,7 +475,6 @@ test "function pointer with return type that is error union with payload which i
487475
488 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO476 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO477 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
490 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
491 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO478 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
492479
493 const S = struct {480 const S = struct {
test/behavior/eval.zig-8
...@@ -90,7 +90,6 @@ fn letsTryToCompareBools(a: bool, b: bool) bool {...@@ -90,7 +90,6 @@ fn letsTryToCompareBools(a: bool, b: bool) bool {
90 return max(bool, a, b);90 return max(bool, a, b);
91}91}
92test "inlined block and runtime block phi" {92test "inlined block and runtime block phi" {
93 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9594
96 try expect(letsTryToCompareBools(true, true));95 try expect(letsTryToCompareBools(true, true));
...@@ -390,7 +389,6 @@ test "return 0 from function that has u0 return type" {...@@ -390,7 +389,6 @@ test "return 0 from function that has u0 return type" {
390}389}
391390
392test "statically initialized struct" {391test "statically initialized struct" {
393 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO392 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
395393
396 st_init_str_foo.x += 1;394 st_init_str_foo.x += 1;
...@@ -502,7 +500,6 @@ test "comptime shlWithOverflow" {...@@ -502,7 +500,6 @@ test "comptime shlWithOverflow" {
502}500}
503501
504test "const ptr to variable data changes at runtime" {502test "const ptr to variable data changes at runtime" {
505 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO503 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
507504
508 try expect(foo_ref.name[0] == 'a');505 try expect(foo_ref.name[0] == 'a');
...@@ -605,8 +602,6 @@ fn testCompTimeUIntComparisons(x: u32) void {...@@ -605,8 +602,6 @@ fn testCompTimeUIntComparisons(x: u32) void {
605const hi1 = "hi";602const hi1 = "hi";
606const hi2 = hi1;603const hi2 = hi1;
607test "const global shares pointer with other same one" {604test "const global shares pointer with other same one" {
608 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
609
610 try assertEqualPtrs(&hi1[0], &hi2[0]);605 try assertEqualPtrs(&hi1[0], &hi2[0]);
611 comptime try expect(&hi1[0] == &hi2[0]);606 comptime try expect(&hi1[0] == &hi2[0]);
612}607}
...@@ -976,7 +971,6 @@ test "closure capture type of runtime-known parameter" {...@@ -976,7 +971,6 @@ test "closure capture type of runtime-known parameter" {
976971
977test "comptime break passing through runtime condition converted to runtime break" {972test "comptime break passing through runtime condition converted to runtime break" {
978 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO973 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
980974
981 const S = struct {975 const S = struct {
982 fn doTheTest() !void {976 fn doTheTest() !void {
...@@ -1061,7 +1055,6 @@ test "comptime break operand passing through runtime condition converted to runt...@@ -1061,7 +1055,6 @@ test "comptime break operand passing through runtime condition converted to runt
1061test "comptime break operand passing through runtime switch converted to runtime break" {1055test "comptime break operand passing through runtime switch converted to runtime break" {
1062 if (builtin.zig_backend == .stage1) return error.SkipZigTest;1056 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
1063 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1057 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1064 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10651058
1066 const S = struct {1059 const S = struct {
1067 fn doTheTest(runtime: u8) !void {1060 fn doTheTest(runtime: u8) !void {
...@@ -1227,7 +1220,6 @@ test "storing an array of type in a field" {...@@ -1227,7 +1220,6 @@ test "storing an array of type in a field" {
1227test "pass pointer to field of comptime-only type as a runtime parameter" {1220test "pass pointer to field of comptime-only type as a runtime parameter" {
1228 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1221 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12311223
1232 const S = struct {1224 const S = struct {
1233 const Mixed = struct {1225 const Mixed = struct {
test/behavior/fn.zig-1
...@@ -197,7 +197,6 @@ fn addPointCoords(pt: Point) i32 {...@@ -197,7 +197,6 @@ fn addPointCoords(pt: Point) i32 {
197}197}
198198
199test "pass by non-copying value through var arg" {199test "pass by non-copying value through var arg" {
200 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
202201
203 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);202 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);
test/behavior/if.zig-1
...@@ -44,7 +44,6 @@ var global_with_val: anyerror!u32 = 0;...@@ -44,7 +44,6 @@ var global_with_val: anyerror!u32 = 0;
44var global_with_err: anyerror!u32 = error.SomeError;44var global_with_err: anyerror!u32 = error.SomeError;
4545
46test "unwrap mutable global var" {46test "unwrap mutable global var" {
47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4948
50 if (global_with_val) |v| {49 if (global_with_val) |v| {
test/behavior/math.zig-3
...@@ -652,7 +652,6 @@ test "@addWithOverflow" {...@@ -652,7 +652,6 @@ test "@addWithOverflow" {
652652
653test "small int addition" {653test "small int addition" {
654 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO654 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
655 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
656655
657 var x: u2 = 0;656 var x: u2 = 0;
658 try expect(x == 0);657 try expect(x == 0);
...@@ -1136,8 +1135,6 @@ fn testShrExact(x: u8) !void {...@@ -1136,8 +1135,6 @@ fn testShrExact(x: u8) !void {
1136}1135}
11371136
1138test "shift left/right on u0 operand" {1137test "shift left/right on u0 operand" {
1139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1140
1141 const S = struct {1138 const S = struct {
1142 fn doTheTest() !void {1139 fn doTheTest() !void {
1143 var x: u0 = 0;1140 var x: u0 = 0;
test/behavior/pointers.zig-5
...@@ -84,7 +84,6 @@ test "assigning integer to C pointer" {...@@ -84,7 +84,6 @@ test "assigning integer to C pointer" {
8484
85test "C pointer comparison and arithmetic" {85test "C pointer comparison and arithmetic" {
86 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;86 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8887
89 const S = struct {88 const S = struct {
90 fn doTheTest() !void {89 fn doTheTest() !void {
...@@ -430,7 +429,6 @@ test "indexing array with sentinel returns correct type" {...@@ -430,7 +429,6 @@ test "indexing array with sentinel returns correct type" {
430429
431test "element pointer to slice" {430test "element pointer to slice" {
432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO431 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
434432
435 const S = struct {433 const S = struct {
436 fn doTheTest() !void {434 fn doTheTest() !void {
...@@ -452,7 +450,6 @@ test "element pointer to slice" {...@@ -452,7 +450,6 @@ test "element pointer to slice" {
452450
453test "element pointer arithmetic to slice" {451test "element pointer arithmetic to slice" {
454 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
456453
457 const S = struct {454 const S = struct {
458 fn doTheTest() !void {455 fn doTheTest() !void {
...@@ -476,8 +473,6 @@ test "element pointer arithmetic to slice" {...@@ -476,8 +473,6 @@ test "element pointer arithmetic to slice" {
476}473}
477474
478test "array slicing to slice" {475test "array slicing to slice" {
479 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
480
481 const S = struct {476 const S = struct {
482 fn doTheTest() !void {477 fn doTheTest() !void {
483 var str: [5]i32 = [_]i32{ 1, 2, 3, 4, 5 };478 var str: [5]i32 = [_]i32{ 1, 2, 3, 4, 5 };
test/behavior/reflection.zig-1
...@@ -27,7 +27,6 @@ fn dummy(a: bool, b: i32, c: f32) i32 {...@@ -27,7 +27,6 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
2727
28test "reflection: @field" {28test "reflection: @field" {
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
3231
33 var f = Foo{32 var f = Foo{
test/behavior/slice.zig-5
...@@ -118,7 +118,6 @@ test "slice of type" {...@@ -118,7 +118,6 @@ test "slice of type" {
118118
119test "generic malloc free" {119test "generic malloc free" {
120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;121 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
123122
124 const a = memAlloc(u8, 10) catch unreachable;123 const a = memAlloc(u8, 10) catch unreachable;
...@@ -482,7 +481,6 @@ test "slice pointer-to-array null terminated" {...@@ -482,7 +481,6 @@ test "slice pointer-to-array null terminated" {
482 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO481 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO482 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
484 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO483 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
485 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
486484
487 comptime {485 comptime {
488 var array = [5:0]u8{ 1, 2, 3, 4, 5 };486 var array = [5:0]u8{ 1, 2, 3, 4, 5 };
...@@ -508,7 +506,6 @@ test "slice pointer-to-array null terminated" {...@@ -508,7 +506,6 @@ test "slice pointer-to-array null terminated" {
508test "slice pointer-to-array zero length" {506test "slice pointer-to-array zero length" {
509 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO507 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
510 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO508 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
511 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
512509
513 comptime {510 comptime {
514 {511 {
...@@ -643,7 +640,6 @@ test "slicing array with sentinel as end index" {...@@ -643,7 +640,6 @@ test "slicing array with sentinel as end index" {
643 if (builtin.zig_backend == .stage1) return error.SkipZigTest;640 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
644 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;641 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
645 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;642 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
646 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
647643
648 const S = struct {644 const S = struct {
649 fn do() !void {645 fn do() !void {
...@@ -664,7 +660,6 @@ test "slicing slice with sentinel as end index" {...@@ -664,7 +660,6 @@ test "slicing slice with sentinel as end index" {
664 if (builtin.zig_backend == .stage1) return error.SkipZigTest;660 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
665 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;661 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
666 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;662 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
667 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
668663
669 const S = struct {664 const S = struct {
670 fn do() !void {665 fn do() !void {
test/behavior/struct_contains_slice_of_itself.zig-2
...@@ -13,7 +13,6 @@ const NodeAligned = struct {...@@ -13,7 +13,6 @@ const NodeAligned = struct {
1313
14test "struct contains slice of itself" {14test "struct contains slice of itself" {
15 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1817
19 var other_nodes = [_]Node{18 var other_nodes = [_]Node{
...@@ -54,7 +53,6 @@ test "struct contains slice of itself" {...@@ -54,7 +53,6 @@ test "struct contains slice of itself" {
5453
55test "struct contains aligned slice of itself" {54test "struct contains aligned slice of itself" {
56 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5957
60 var other_nodes = [_]NodeAligned{58 var other_nodes = [_]NodeAligned{
test/behavior/tuple.zig-1
...@@ -124,7 +124,6 @@ test "tuple initializer for var" {...@@ -124,7 +124,6 @@ test "tuple initializer for var" {
124test "array-like initializer for tuple types" {124test "array-like initializer for tuple types" {
125 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO125 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
128127
129 const T = @Type(.{128 const T = @Type(.{
130 .Struct = .{129 .Struct = .{
test/behavior/type_info.zig-2
...@@ -527,7 +527,6 @@ test "type info for async frames" {...@@ -527,7 +527,6 @@ test "type info for async frames" {
527527
528test "Declarations are returned in declaration order" {528test "Declarations are returned in declaration order" {
529 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;529 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
530 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
531 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;530 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
532531
533 const S = struct {532 const S = struct {
...@@ -552,7 +551,6 @@ test "Struct.is_tuple for anon list literal" {...@@ -552,7 +551,6 @@ test "Struct.is_tuple for anon list literal" {
552test "Struct.is_tuple for anon struct literal" {551test "Struct.is_tuple for anon struct literal" {
553 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO552 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
554 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO553 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
555 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
556554
557 const info = @typeInfo(@TypeOf(.{ .a = 0 }));555 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
558 try expect(!info.Struct.is_tuple);556 try expect(!info.Struct.is_tuple);
test/behavior/union.zig-7
...@@ -36,7 +36,6 @@ test "init union with runtime value - floats" {...@@ -36,7 +36,6 @@ test "init union with runtime value - floats" {
36}36}
3737
38test "basic unions" {38test "basic unions" {
39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4140
42 var foo = Foo{ .int = 1 };41 var foo = Foo{ .int = 1 };
...@@ -91,7 +90,6 @@ const FooExtern = extern union {...@@ -91,7 +90,6 @@ const FooExtern = extern union {
91};90};
9291
93test "basic extern unions" {92test "basic extern unions" {
94 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
95 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;93 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9694
97 var foo = FooExtern{ .int = 1 };95 var foo = FooExtern{ .int = 1 };
...@@ -398,7 +396,6 @@ test "tagged union with no payloads" {...@@ -398,7 +396,6 @@ test "tagged union with no payloads" {
398}396}
399397
400test "union with only 1 field casted to its enum type" {398test "union with only 1 field casted to its enum type" {
401 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
402 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;399 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
403400
404 const Literal = union(enum) {401 const Literal = union(enum) {
...@@ -487,7 +484,6 @@ test "union initializer generates padding only if needed" {...@@ -487,7 +484,6 @@ test "union initializer generates padding only if needed" {
487}484}
488485
489test "runtime tag name with single field" {486test "runtime tag name with single field" {
490 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
491 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
492488
493 const U = union(enum) {489 const U = union(enum) {
...@@ -540,7 +536,6 @@ const Baz = enum { A, B, C, D };...@@ -540,7 +536,6 @@ const Baz = enum { A, B, C, D };
540536
541test "tagged union type" {537test "tagged union type" {
542 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;538 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
543 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
544 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
545540
546 const foo1 = TaggedFoo{ .One = 13 };541 const foo1 = TaggedFoo{ .One = 13 };
...@@ -670,7 +665,6 @@ const PartialInstWithPayload = union(enum) {...@@ -670,7 +665,6 @@ const PartialInstWithPayload = union(enum) {
670};665};
671666
672test "union with only 1 field casted to its enum type which has enum value specified" {667test "union with only 1 field casted to its enum type which has enum value specified" {
673 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
674 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;668 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
675669
676 const Literal = union(enum) {670 const Literal = union(enum) {
...@@ -1110,7 +1104,6 @@ test "union enum type gets a separate scope" {...@@ -1110,7 +1104,6 @@ test "union enum type gets a separate scope" {
11101104
1111test "global variable struct contains union initialized to non-most-aligned field" {1105test "global variable struct contains union initialized to non-most-aligned field" {
1112 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1106 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11141107
1115 const T = struct {1108 const T = struct {
1116 const U = union(enum) {1109 const U = union(enum) {
test/behavior/var_args.zig-1
...@@ -39,7 +39,6 @@ fn addSomeStuff(args: anytype) i32 {...@@ -39,7 +39,6 @@ fn addSomeStuff(args: anytype) i32 {
39}39}
4040
41test "runtime parameter before var args" {41test "runtime parameter before var args" {
42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4443
45 try expect((try extraFn(10, .{})) == 0);44 try expect((try extraFn(10, .{})) == 0);
test/behavior/while.zig-2
...@@ -256,7 +256,6 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {...@@ -256,7 +256,6 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {
256}256}
257257
258test "while on error union with else result follow else prong" {258test "while on error union with else result follow else prong" {
259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
260 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
261260
262 const result = while (returnError()) |value| {261 const result = while (returnError()) |value| {
...@@ -266,7 +265,6 @@ test "while on error union with else result follow else prong" {...@@ -266,7 +265,6 @@ test "while on error union with else result follow else prong" {
266}265}
267266
268test "while on error union with else result follow break prong" {267test "while on error union with else result follow break prong" {
269 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
270 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
271269
272 const result = while (returnSuccess(10)) |value| {270 const result = while (returnSuccess(10)) |value| {
test/behavior/widening.zig-1
...@@ -30,7 +30,6 @@ test "integer widening u0 to u8" {...@@ -30,7 +30,6 @@ test "integer widening u0 to u8" {
30test "implicit unsigned integer to signed integer" {30test "implicit unsigned integer to signed integer" {
31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
34 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
3534
36 var a: u8 = 250;35 var a: u8 = 250;