authorgravatar for joachim.schmidt557@outlook.comJoachim Schmidt <joachim.schmidt557@outlook.com> 2022-05-26 16:03:49+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-05-27 16:43:11-04:00
logddd5b57045d38b7d1f7d5a4120302797433233cd
tree2bf2579f55dba9300eb5e62f52fee0166b3e2503
parent4994ac18e4b540ceaac450db552749c7ac559396

stage2 AArch64: complete genTypedValue


30 files changed, 18 insertions(+), 81 deletions(-)

src/arch/aarch64/CodeGen.zig+18-18
...@@ -4572,6 +4572,7 @@ fn lowerUnnamedConst(self: *Self, tv: TypedValue) InnerError!MCValue {...@@ -4572,6 +4572,7 @@ fn lowerUnnamedConst(self: *Self, tv: TypedValue) InnerError!MCValue {
4572}4572}
45734573
4574fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {4574fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
4575 log.debug("genTypedValue: ty = {}, val = {}", .{ typed_value.ty.fmtDebug(), typed_value.val.fmtDebug() });
4575 if (typed_value.val.isUndef())4576 if (typed_value.val.isUndef())
4576 return MCValue{ .undef = {} };4577 return MCValue{ .undef = {} };
45774578
...@@ -4585,20 +4586,13 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -4585,20 +4586,13 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
45854586
4586 switch (typed_value.ty.zigTypeTag()) {4587 switch (typed_value.ty.zigTypeTag()) {
4587 .Pointer => switch (typed_value.ty.ptrSize()) {4588 .Pointer => switch (typed_value.ty.ptrSize()) {
4588 .Slice => {4589 .Slice => {},
4589 return self.lowerUnnamedConst(typed_value);
4590 },
4591 else => {4590 else => {
4592 switch (typed_value.val.tag()) {4591 switch (typed_value.val.tag()) {
4593 .int_u64 => {4592 .int_u64 => {
4594 return MCValue{ .immediate = typed_value.val.toUnsignedInt(target) };4593 return MCValue{ .immediate = typed_value.val.toUnsignedInt(target) };
4595 },4594 },
4596 .slice => {4595 else => {},
4597 return self.lowerUnnamedConst(typed_value);
4598 },
4599 else => {
4600 return self.fail("TODO codegen more kinds of const pointers: {}", .{typed_value.val.tag()});
4601 },
4602 }4596 }
4603 },4597 },
4604 },4598 },
...@@ -4614,15 +4608,11 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -4614,15 +4608,11 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
4614 };4608 };
46154609
4616 return MCValue{ .immediate = unsigned };4610 return MCValue{ .immediate = unsigned };
4617 } else {
4618 return self.lowerUnnamedConst(typed_value);
4619 }4611 }
4620 },4612 },
4621 .Bool => {4613 .Bool => {
4622 return MCValue{ .immediate = @boolToInt(typed_value.val.toBool()) };4614 return MCValue{ .immediate = @boolToInt(typed_value.val.toBool()) };
4623 },4615 },
4624 .ComptimeInt => unreachable, // semantic analysis prevents this
4625 .ComptimeFloat => unreachable, // semantic analysis prevents this
4626 .Optional => {4616 .Optional => {
4627 if (typed_value.ty.isPtrLikeOptional()) {4617 if (typed_value.ty.isPtrLikeOptional()) {
4628 if (typed_value.val.isNull())4618 if (typed_value.val.isNull())
...@@ -4636,7 +4626,6 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -4636,7 +4626,6 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
4636 } else if (typed_value.ty.abiSize(self.target.*) == 1) {4626 } else if (typed_value.ty.abiSize(self.target.*) == 1) {
4637 return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) };4627 return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) };
4638 }4628 }
4639 return self.fail("TODO non pointer optionals", .{});
4640 },4629 },
4641 .Enum => {4630 .Enum => {
4642 if (typed_value.val.castTag(.enum_field_index)) |field_index| {4631 if (typed_value.val.castTag(.enum_field_index)) |field_index| {
...@@ -4695,11 +4684,22 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -4695,11 +4684,22 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
46954684
4696 return self.lowerUnnamedConst(typed_value);4685 return self.lowerUnnamedConst(typed_value);
4697 },4686 },
4698 .Struct => {4687
4699 return self.lowerUnnamedConst(typed_value);4688 .ComptimeInt => unreachable, // semantic analysis prevents this
4700 },4689 .ComptimeFloat => unreachable, // semantic analysis prevents this
4701 else => return self.fail("TODO implement const of type '{}'", .{typed_value.ty.fmtDebug()}),4690 .Type => unreachable,
4691 .EnumLiteral => unreachable,
4692 .Void => unreachable,
4693 .NoReturn => unreachable,
4694 .Undefined => unreachable,
4695 .Null => unreachable,
4696 .BoundFn => unreachable,
4697 .Opaque => unreachable,
4698
4699 else => {},
4702 }4700 }
4701
4702 return self.lowerUnnamedConst(typed_value);
4703}4703}
47044704
4705const CallMCValues = struct {4705const CallMCValues = struct {
test/behavior/align.zig-1
...@@ -7,7 +7,6 @@ var foo: u8 align(4) = 100;...@@ -7,7 +7,6 @@ var foo: u8 align(4) = 100;
77
8test "global variable alignment" {8test "global variable alignment" {
9 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 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);
test/behavior/array.zig-4
...@@ -95,8 +95,6 @@ test "array literal with specified size" {...@@ -95,8 +95,6 @@ test "array literal with specified size" {
95}95}
9696
97test "array len field" {97test "array len field" {
98 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99
100 var arr = [4]u8{ 0, 0, 0, 0 };98 var arr = [4]u8{ 0, 0, 0, 0 };
101 var ptr = &arr;99 var ptr = &arr;
102 try expect(arr.len == 4);100 try expect(arr.len == 4);
...@@ -217,8 +215,6 @@ fn doSomeMangling(array: *[4]u8) void {...@@ -217,8 +215,6 @@ fn doSomeMangling(array: *[4]u8) void {
217}215}
218216
219test "implicit cast zero sized array ptr to slice" {217test "implicit cast zero sized array ptr to slice" {
220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
221
222 {218 {
223 var b = "".*;219 var b = "".*;
224 const c: []const u8 = &b;220 const c: []const u8 = &b;
test/behavior/basic.zig-3
...@@ -362,7 +362,6 @@ fn testMemcpyMemset() !void {...@@ -362,7 +362,6 @@ fn testMemcpyMemset() !void {
362}362}
363363
364test "variable is allowed to be a pointer to an opaque type" {364test "variable is allowed to be a pointer to an opaque type" {
365 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
366 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
367 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO366 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
368367
...@@ -611,7 +610,6 @@ test "self reference through fn ptr field" {...@@ -611,7 +610,6 @@ test "self reference through fn ptr field" {
611}610}
612611
613test "global variable initialized to global variable array element" {612test "global variable initialized to global variable array element" {
614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
615 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;613 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
616614
617 try expect(global_ptr == &gdt[0]);615 try expect(global_ptr == &gdt[0]);
...@@ -677,7 +675,6 @@ test "explicit cast optional pointers" {...@@ -677,7 +675,6 @@ test "explicit cast optional pointers" {
677}675}
678676
679test "pointer comparison" {677test "pointer comparison" {
680 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
681 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;678 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
682 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;679 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
683680
test/behavior/bitcast.zig-1
...@@ -7,7 +7,6 @@ const minInt = std.math.minInt;...@@ -7,7 +7,6 @@ const minInt = std.math.minInt;
7const native_endian = builtin.target.cpu.arch.endian();7const native_endian = builtin.target.cpu.arch.endian();
88
9test "@bitCast iX -> uX (32, 64)" {9test "@bitCast iX -> uX (32, 64)" {
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1211
13 const bit_values = [_]usize{ 32, 64 };12 const bit_values = [_]usize{ 32, 64 };
test/behavior/bitreverse.zig-1
...@@ -158,7 +158,6 @@ test "bitReverse vectors u0" {...@@ -158,7 +158,6 @@ test "bitReverse vectors u0" {
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;160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
162161
163 comptime try vector0();162 comptime try vector0();
164 try vector0();163 try vector0();
test/behavior/bugs/11165.zig-2
...@@ -2,7 +2,6 @@ const builtin = @import("builtin");...@@ -2,7 +2,6 @@ const builtin = @import("builtin");
22
3test "bytes" {3test "bytes" {
4 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO4 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
65
7 const S = struct {6 const S = struct {
8 a: u32,7 a: u32,
...@@ -25,7 +24,6 @@ test "bytes" {...@@ -25,7 +24,6 @@ test "bytes" {
2524
26test "aggregate" {25test "aggregate" {
27 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2927
30 const S = struct {28 const S = struct {
31 a: u32,29 a: u32,
test/behavior/bugs/11181.zig-2
...@@ -2,7 +2,6 @@ const builtin = @import("builtin");...@@ -2,7 +2,6 @@ const builtin = @import("builtin");
22
3test "const inferred array of slices" {3test "const inferred array of slices" {
4 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO4 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
65
7 const T = struct { v: bool };6 const T = struct { v: bool };
87
...@@ -16,7 +15,6 @@ test "const inferred array of slices" {...@@ -16,7 +15,6 @@ test "const inferred array of slices" {
1615
17test "var inferred array of slices" {16test "var inferred array of slices" {
18 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2018
21 const T = struct { v: bool };19 const T = struct { v: bool };
2220
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_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
98
10 const g: error{Test}!void = error.Test;9 const g: error{Test}!void = error.Test;
test/behavior/bugs/1421.zig-1
...@@ -9,7 +9,6 @@ const S = struct {...@@ -9,7 +9,6 @@ const S = struct {
9};9};
1010
11test "functions with return type required to be comptime are generic" {11test "functions with return type required to be comptime are generic" {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;13 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
15 const ti = S.method();14 const ti = S.method();
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_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 const x = S{16 const x = S{
test/behavior/bugs/4560.zig-2
...@@ -2,8 +2,6 @@ const std = @import("std");...@@ -2,8 +2,6 @@ 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;
6
7 var s: S = .{5 var s: S = .{
8 .a = 1,6 .a = 1,
9 .b = .{7 .b = .{
test/behavior/bugs/7187.zig-1
...@@ -3,7 +3,6 @@ const builtin = @import("builtin");...@@ -3,7 +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_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
87
9 var x: usize = 1;8 var x: usize = 1;
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_c) return error.SkipZigTest;118 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
122121
123 comptime try vector0();122 comptime try vector0();
124 try vector0();123 try vector0();
test/behavior/cast.zig-2
...@@ -843,7 +843,6 @@ test "peer cast *[0]T to []const T" {...@@ -843,7 +843,6 @@ test "peer cast *[0]T to []const T" {
843}843}
844844
845test "peer cast *[N]T to [*]T" {845test "peer cast *[N]T to [*]T" {
846 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
847 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO846 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
848847
849 var array = [4:99]i32{ 1, 2, 3, 4 };848 var array = [4:99]i32{ 1, 2, 3, 4 };
...@@ -1116,7 +1115,6 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {...@@ -1116,7 +1115,6 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
1116test "compile time int to ptr of function" {1115test "compile time int to ptr of function" {
1117 if (builtin.zig_backend == .stage1) return error.SkipZigTest;1116 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
11181117
1119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1120 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1118 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1121 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11221120
test/behavior/comptime_memory.zig-4
...@@ -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_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
109
11 comptime {10 comptime {
...@@ -18,7 +17,6 @@ test "type pun signed and unsigned as single pointer" {...@@ -18,7 +17,6 @@ test "type pun signed and unsigned as single pointer" {
1817
19test "type pun signed and unsigned as many pointer" {18test "type pun signed and unsigned as many pointer" {
20 if (builtin.zig_backend == .stage1) return error.SkipZigTest;19 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2220
23 comptime {21 comptime {
24 var x: u32 = 0;22 var x: u32 = 0;
...@@ -30,7 +28,6 @@ test "type pun signed and unsigned as many pointer" {...@@ -30,7 +28,6 @@ test "type pun signed and unsigned as many pointer" {
3028
31test "type pun signed and unsigned as array pointer" {29test "type pun signed and unsigned as array pointer" {
32 if (builtin.zig_backend == .stage1) return error.SkipZigTest;30 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3431
35 comptime {32 comptime {
36 var x: u32 = 0;33 var x: u32 = 0;
...@@ -74,7 +71,6 @@ test "type pun signed and unsigned as array pointer" {...@@ -74,7 +71,6 @@ test "type pun signed and unsigned as array pointer" {
7471
75test "type pun value and struct" {72test "type pun value and struct" {
76 if (builtin.zig_backend == .stage1) return error.SkipZigTest;73 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7874
79 comptime {75 comptime {
80 const StructOfU32 = extern struct { x: u32 };76 const StructOfU32 = extern struct { x: u32 };
test/behavior/error.zig-1
...@@ -119,7 +119,6 @@ test "widen cast integer payload of error union function call" {...@@ -119,7 +119,6 @@ test "widen cast integer payload of error union function call" {
119119
120test "debug info for optional error set" {120test "debug info for optional error set" {
121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
123122
124 const SomeError = error{ Hello, Hello2 };123 const SomeError = error{ Hello, Hello2 };
125 var a_local_variable: ?SomeError = null;124 var a_local_variable: ?SomeError = null;
test/behavior/eval.zig-7
...@@ -406,8 +406,6 @@ var st_init_str_foo = StInitStrFoo{...@@ -406,8 +406,6 @@ var st_init_str_foo = StInitStrFoo{
406};406};
407407
408test "inline for with same type but different values" {408test "inline for with same type but different values" {
409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
410
411 var res: usize = 0;409 var res: usize = 0;
412 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {410 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {
413 var a: T = undefined;411 var a: T = undefined;
...@@ -487,7 +485,6 @@ test "comptime bitwise operators" {...@@ -487,7 +485,6 @@ test "comptime bitwise operators" {
487485
488test "comptime shlWithOverflow" {486test "comptime shlWithOverflow" {
489 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
490 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
491488
492 const ct_shifted: u64 = comptime amt: {489 const ct_shifted: u64 = comptime amt: {
493 var amt = @as(u64, 0);490 var amt = @as(u64, 0);
...@@ -559,8 +556,6 @@ pub fn vec3(x: f32, y: f32, z: f32) Vec3 {...@@ -559,8 +556,6 @@ pub fn vec3(x: f32, y: f32, z: f32) Vec3 {
559}556}
560557
561test "inlined loop has array literal with elided runtime scope on first iteration but not second iteration" {558test "inlined loop has array literal with elided runtime scope on first iteration but not second iteration" {
562 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
563
564 var runtime = [1]i32{3};559 var runtime = [1]i32{3};
565 comptime var i: usize = 0;560 comptime var i: usize = 0;
566 inline while (i < 2) : (i += 1) {561 inline while (i < 2) : (i += 1) {
...@@ -611,7 +606,6 @@ const hi1 = "hi";...@@ -611,7 +606,6 @@ const hi1 = "hi";
611const hi2 = hi1;606const hi2 = hi1;
612test "const global shares pointer with other same one" {607test "const global shares pointer with other same one" {
613 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO608 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
615609
616 try assertEqualPtrs(&hi1[0], &hi2[0]);610 try assertEqualPtrs(&hi1[0], &hi2[0]);
617 comptime try expect(&hi1[0] == &hi2[0]);611 comptime try expect(&hi1[0] == &hi2[0]);
...@@ -982,7 +976,6 @@ test "closure capture type of runtime-known parameter" {...@@ -982,7 +976,6 @@ test "closure capture type of runtime-known parameter" {
982976
983test "comptime break passing through runtime condition converted to runtime break" {977test "comptime break passing through runtime condition converted to runtime break" {
984 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO978 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
985 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
986 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
987980
988 const S = struct {981 const S = struct {
test/behavior/fn.zig-9
...@@ -184,8 +184,6 @@ test "function with complex callconv and return type expressions" {...@@ -184,8 +184,6 @@ test "function with complex callconv and return type expressions" {
184}184}
185185
186test "pass by non-copying value" {186test "pass by non-copying value" {
187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
188
189 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);187 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);
190}188}
191189
...@@ -211,8 +209,6 @@ fn addPointCoordsVar(pt: anytype) !i32 {...@@ -211,8 +209,6 @@ fn addPointCoordsVar(pt: anytype) !i32 {
211}209}
212210
213test "pass by non-copying value as method" {211test "pass by non-copying value as method" {
214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
215
216 var pt = Point2{ .x = 1, .y = 2 };212 var pt = Point2{ .x = 1, .y = 2 };
217 try expect(pt.addPointCoords() == 3);213 try expect(pt.addPointCoords() == 3);
218}214}
...@@ -227,8 +223,6 @@ const Point2 = struct {...@@ -227,8 +223,6 @@ const Point2 = struct {
227};223};
228224
229test "pass by non-copying value as method, which is generic" {225test "pass by non-copying value as method, which is generic" {
230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
231
232 var pt = Point3{ .x = 1, .y = 2 };226 var pt = Point3{ .x = 1, .y = 2 };
233 try expect(pt.addPointCoords(i32) == 3);227 try expect(pt.addPointCoords(i32) == 3);
234}228}
...@@ -244,8 +238,6 @@ const Point3 = struct {...@@ -244,8 +238,6 @@ const Point3 = struct {
244};238};
245239
246test "pass by non-copying value as method, at comptime" {240test "pass by non-copying value as method, at comptime" {
247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
248
249 comptime {241 comptime {
250 var pt = Point2{ .x = 1, .y = 2 };242 var pt = Point2{ .x = 1, .y = 2 };
251 try expect(pt.addPointCoords() == 3);243 try expect(pt.addPointCoords() == 3);
...@@ -409,7 +401,6 @@ test "ability to give comptime types and non comptime types to same parameter" {...@@ -409,7 +401,6 @@ test "ability to give comptime types and non comptime types to same parameter" {
409401
410test "function with inferred error set but returning no error" {402test "function with inferred error set but returning no error" {
411 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO403 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
413404
414 const S = struct {405 const S = struct {
415 fn foo() !void {}406 fn foo() !void {}
test/behavior/fn_delegation.zig-1
...@@ -32,7 +32,6 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {...@@ -32,7 +32,6 @@ 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;
36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3736
38 const foo = Foo{};37 const foo = Foo{};
test/behavior/generics.zig-1
...@@ -206,7 +206,6 @@ fn foo2(arg: anytype) bool {...@@ -206,7 +206,6 @@ fn foo2(arg: anytype) bool {
206206
207test "generic struct" {207test "generic struct" {
208 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;208 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
209 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
210 var a1 = GenNode(i32){209 var a1 = GenNode(i32){
211 .value = 13,210 .value = 13,
212 .next = null,211 .next = null,
test/behavior/optional.zig-2
...@@ -33,8 +33,6 @@ test "optional pointer to size zero struct" {...@@ -33,8 +33,6 @@ test "optional pointer to size zero struct" {
33}33}
3434
35test "equality compare optional pointers" {35test "equality compare optional pointers" {
36 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
37
38 try testNullPtrsEql();36 try testNullPtrsEql();
39 comptime try testNullPtrsEql();37 comptime try testNullPtrsEql();
40}38}
test/behavior/pointers.zig-2
...@@ -85,7 +85,6 @@ test "assigning integer to C pointer" {...@@ -85,7 +85,6 @@ test "assigning integer to C pointer" {
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;87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8988
90 const S = struct {89 const S = struct {
91 fn doTheTest() !void {90 fn doTheTest() !void {
...@@ -477,7 +476,6 @@ test "element pointer arithmetic to slice" {...@@ -477,7 +476,6 @@ test "element pointer arithmetic to slice" {
477}476}
478477
479test "array slicing to slice" {478test "array slicing to slice" {
480 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO479 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
482480
483 const S = struct {481 const S = struct {
test/behavior/sizeof_and_typeof.zig-1
...@@ -19,7 +19,6 @@ test "@sizeOf on compile-time types" {...@@ -19,7 +19,6 @@ test "@sizeOf on compile-time types" {
1919
20test "@TypeOf() with multiple arguments" {20test "@TypeOf() with multiple arguments" {
21 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
25 {24 {
test/behavior/slice.zig-2
...@@ -207,7 +207,6 @@ test "slice string literal has correct type" {...@@ -207,7 +207,6 @@ test "slice string literal has correct type" {
207}207}
208208
209test "result location zero sized array inside struct field implicit cast to slice" {209test "result location zero sized array inside struct field implicit cast to slice" {
210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
211 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO210 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
212211
213 const E = struct {212 const E = struct {
...@@ -509,7 +508,6 @@ test "slice pointer-to-array null terminated" {...@@ -509,7 +508,6 @@ test "slice pointer-to-array null terminated" {
509test "slice pointer-to-array zero length" {508test "slice pointer-to-array zero length" {
510 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO509 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
511 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO510 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
513 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO511 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
514512
515 comptime {513 comptime {
test/behavior/struct.zig-4
...@@ -168,14 +168,12 @@ const MemberFnTestFoo = struct {...@@ -168,14 +168,12 @@ const MemberFnTestFoo = struct {
168};168};
169169
170test "call member function directly" {170test "call member function directly" {
171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
172 const instance = MemberFnTestFoo{ .x = 1234 };171 const instance = MemberFnTestFoo{ .x = 1234 };
173 const result = MemberFnTestFoo.member(instance);172 const result = MemberFnTestFoo.member(instance);
174 try expect(result == 1234);173 try expect(result == 1234);
175}174}
176175
177test "store member function in variable" {176test "store member function in variable" {
178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
179 const instance = MemberFnTestFoo{ .x = 1234 };177 const instance = MemberFnTestFoo{ .x = 1234 };
180 const memberFn = MemberFnTestFoo.member;178 const memberFn = MemberFnTestFoo.member;
181 const result = memberFn(instance);179 const result = memberFn(instance);
...@@ -1000,8 +998,6 @@ test "tuple element initialized with fn call" {...@@ -1000,8 +998,6 @@ test "tuple element initialized with fn call" {
1000}998}
1001999
1002test "struct with union field" {1000test "struct with union field" {
1003 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1004
1005 const Value = struct {1001 const Value = struct {
1006 ref: u32 = 2,1002 ref: u32 = 2,
1007 kind: union(enum) {1003 kind: union(enum) {
test/behavior/type.zig-2
...@@ -473,7 +473,6 @@ test "Type.Union" {...@@ -473,7 +473,6 @@ test "Type.Union" {
473test "Type.Union from Type.Enum" {473test "Type.Union from Type.Enum" {
474 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO474 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
475 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO475 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
476 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
477476
478 const Tag = @Type(.{477 const Tag = @Type(.{
479 .Enum = .{478 .Enum = .{
...@@ -503,7 +502,6 @@ test "Type.Union from Type.Enum" {...@@ -503,7 +502,6 @@ test "Type.Union from Type.Enum" {
503test "Type.Union from regular enum" {502test "Type.Union from regular enum" {
504 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO503 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
505 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO504 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
507505
508 const E = enum { working_as_expected };506 const E = enum { working_as_expected };
509 const T = @Type(.{507 const T = @Type(.{
test/behavior/type_info.zig-1
...@@ -381,7 +381,6 @@ extern fn foo(a: usize, b: bool, ...) callconv(.C) usize;...@@ -381,7 +381,6 @@ extern fn foo(a: usize, b: bool, ...) callconv(.C) usize;
381extern fn fooAligned(a: usize, b: bool, ...) align(4) callconv(.C) usize;381extern fn fooAligned(a: usize, b: bool, ...) align(4) callconv(.C) usize;
382382
383test "type info: generic function types" {383test "type info: generic function types" {
384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;384 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
386385
387 if (builtin.zig_backend != .stage1) {386 if (builtin.zig_backend != .stage1) {
test/behavior/union.zig-1
...@@ -1111,7 +1111,6 @@ test "union enum type gets a separate scope" {...@@ -1111,7 +1111,6 @@ test "union enum type gets a separate scope" {
1111test "global variable struct contains union initialized to non-most-aligned field" {1111test "global variable struct contains union initialized to non-most-aligned field" {
1112 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1112 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11151114
1116 const T = struct {1115 const T = struct {
1117 const U = union(enum) {1116 const U = union(enum) {
test/behavior/void.zig-2
...@@ -42,8 +42,6 @@ test "void optional" {...@@ -42,8 +42,6 @@ test "void optional" {
42}42}
4343
44test "void array as a local variable initializer" {44test "void array as a local variable initializer" {
45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
46
47 var x = [_]void{{}} ** 1004;45 var x = [_]void{{}} ** 1004;
48 _ = x[0];46 _ = x[0];
49}47}