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 {
45724572}
45734573
45744574fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
4575 log.debug("genTypedValue: ty = {}, val = {}", .{ typed_value.ty.fmtDebug(), typed_value.val.fmtDebug() });
45754576 if (typed_value.val.isUndef())
45764577 return MCValue{ .undef = {} };
45774578
......@@ -4585,20 +4586,13 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
45854586
45864587 switch (typed_value.ty.zigTypeTag()) {
45874588 .Pointer => switch (typed_value.ty.ptrSize()) {
4588 .Slice => {
4589 return self.lowerUnnamedConst(typed_value);
4590 },
4589 .Slice => {},
45914590 else => {
45924591 switch (typed_value.val.tag()) {
45934592 .int_u64 => {
45944593 return MCValue{ .immediate = typed_value.val.toUnsignedInt(target) };
45954594 },
4596 .slice => {
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 },
4595 else => {},
46024596 }
46034597 },
46044598 },
......@@ -4614,15 +4608,11 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
46144608 };
46154609
46164610 return MCValue{ .immediate = unsigned };
4617 } else {
4618 return self.lowerUnnamedConst(typed_value);
46194611 }
46204612 },
46214613 .Bool => {
46224614 return MCValue{ .immediate = @boolToInt(typed_value.val.toBool()) };
46234615 },
4624 .ComptimeInt => unreachable, // semantic analysis prevents this
4625 .ComptimeFloat => unreachable, // semantic analysis prevents this
46264616 .Optional => {
46274617 if (typed_value.ty.isPtrLikeOptional()) {
46284618 if (typed_value.val.isNull())
......@@ -4636,7 +4626,6 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
46364626 } else if (typed_value.ty.abiSize(self.target.*) == 1) {
46374627 return MCValue{ .immediate = @boolToInt(typed_value.val.isNull()) };
46384628 }
4639 return self.fail("TODO non pointer optionals", .{});
46404629 },
46414630 .Enum => {
46424631 if (typed_value.val.castTag(.enum_field_index)) |field_index| {
......@@ -4695,11 +4684,22 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
46954684
46964685 return self.lowerUnnamedConst(typed_value);
46974686 },
4698 .Struct => {
4699 return self.lowerUnnamedConst(typed_value);
4700 },
4701 else => return self.fail("TODO implement const of type '{}'", .{typed_value.ty.fmtDebug()}),
4687
4688 .ComptimeInt => unreachable, // semantic analysis prevents this
4689 .ComptimeFloat => unreachable, // semantic analysis prevents this
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 => {},
47024700 }
4701
4702 return self.lowerUnnamedConst(typed_value);
47034703}
47044704
47054705const CallMCValues = struct {
test/behavior/align.zig-1
......@@ -7,7 +7,6 @@ var foo: u8 align(4) = 100;
77
88test "global variable alignment" {
99 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1211
1312 comptime try expect(@typeInfo(@TypeOf(&foo)).Pointer.alignment == 4);
test/behavior/array.zig-4
......@@ -95,8 +95,6 @@ test "array literal with specified size" {
9595}
9696
9797test "array len field" {
98 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99
10098 var arr = [4]u8{ 0, 0, 0, 0 };
10199 var ptr = &arr;
102100 try expect(arr.len == 4);
......@@ -217,8 +215,6 @@ fn doSomeMangling(array: *[4]u8) void {
217215}
218216
219217test "implicit cast zero sized array ptr to slice" {
220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
221
222218 {
223219 var b = "".*;
224220 const c: []const u8 = &b;
test/behavior/basic.zig-3
......@@ -362,7 +362,6 @@ fn testMemcpyMemset() !void {
362362}
363363
364364test "variable is allowed to be a pointer to an opaque type" {
365 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
366365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
367366 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
368367
......@@ -611,7 +610,6 @@ test "self reference through fn ptr field" {
611610}
612611
613612test "global variable initialized to global variable array element" {
614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
615613 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
616614
617615 try expect(global_ptr == &gdt[0]);
......@@ -677,7 +675,6 @@ test "explicit cast optional pointers" {
677675}
678676
679677test "pointer comparison" {
680 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
681678 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
682679 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;
77const native_endian = builtin.target.cpu.arch.endian();
88
99test "@bitCast iX -> uX (32, 64)" {
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1211
1312 const bit_values = [_]usize{ 32, 64 };
test/behavior/bitreverse.zig-1
......@@ -158,7 +158,6 @@ test "bitReverse vectors u0" {
158158 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
159159 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
160160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
162161
163162 comptime try vector0();
164163 try vector0();
test/behavior/bugs/11165.zig-2
......@@ -2,7 +2,6 @@ const builtin = @import("builtin");
22
33test "bytes" {
44 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
65
76 const S = struct {
87 a: u32,
......@@ -25,7 +24,6 @@ test "bytes" {
2524
2625test "aggregate" {
2726 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2927
3028 const S = struct {
3129 a: u32,
test/behavior/bugs/11181.zig-2
......@@ -2,7 +2,6 @@ const builtin = @import("builtin");
22
33test "const inferred array of slices" {
44 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
65
76 const T = struct { v: bool };
87
......@@ -16,7 +15,6 @@ test "const inferred array of slices" {
1615
1716test "var inferred array of slices" {
1817 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2018
2119 const T = struct { v: bool };
2220
test/behavior/bugs/11213.zig-1
......@@ -4,7 +4,6 @@ const testing = std.testing;
44
55test {
66 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
98
109 const g: error{Test}!void = error.Test;
test/behavior/bugs/1421.zig-1
......@@ -9,7 +9,6 @@ const S = struct {
99};
1010
1111test "functions with return type required to be comptime are generic" {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1312 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1413 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
1514 const ti = S.method();
test/behavior/bugs/394.zig-1
......@@ -11,7 +11,6 @@ const expect = @import("std").testing.expect;
1111const builtin = @import("builtin");
1212
1313test "fixed" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1615 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1716 const x = S{
test/behavior/bugs/4560.zig-2
......@@ -2,8 +2,6 @@ const std = @import("std");
22const builtin = @import("builtin");
33
44test "fixed" {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6
75 var s: S = .{
86 .a = 1,
97 .b = .{
test/behavior/bugs/7187.zig-1
......@@ -3,7 +3,6 @@ const builtin = @import("builtin");
33const expect = std.testing.expect;
44
55test "miscompilation with bool return type" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
87
98 var x: usize = 1;
test/behavior/byteswap.zig-1
......@@ -118,7 +118,6 @@ test "@byteSwap vectors u0" {
118118 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
119119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
120120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
122121
123122 comptime try vector0();
124123 try vector0();
test/behavior/cast.zig-2
......@@ -843,7 +843,6 @@ test "peer cast *[0]T to []const T" {
843843}
844844
845845test "peer cast *[N]T to [*]T" {
846 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
847846 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
848847
849848 var array = [4:99]i32{ 1, 2, 3, 4 };
......@@ -1116,7 +1115,6 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
11161115test "compile time int to ptr of function" {
11171116 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
11181117
1119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11201118 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
11211119 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);
55
66test "type pun signed and unsigned as single pointer" {
77 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
109
1110 comptime {
......@@ -18,7 +17,6 @@ test "type pun signed and unsigned as single pointer" {
1817
1918test "type pun signed and unsigned as many pointer" {
2019 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2220
2321 comptime {
2422 var x: u32 = 0;
......@@ -30,7 +28,6 @@ test "type pun signed and unsigned as many pointer" {
3028
3129test "type pun signed and unsigned as array pointer" {
3230 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3431
3532 comptime {
3633 var x: u32 = 0;
......@@ -74,7 +71,6 @@ test "type pun signed and unsigned as array pointer" {
7471
7572test "type pun value and struct" {
7673 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7874
7975 comptime {
8076 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" {
119119
120120test "debug info for optional error set" {
121121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
123122
124123 const SomeError = error{ Hello, Hello2 };
125124 var a_local_variable: ?SomeError = null;
test/behavior/eval.zig-7
......@@ -406,8 +406,6 @@ var st_init_str_foo = StInitStrFoo{
406406};
407407
408408test "inline for with same type but different values" {
409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
410
411409 var res: usize = 0;
412410 inline for ([_]type{ [2]u8, [1]u8, [2]u8 }) |T| {
413411 var a: T = undefined;
......@@ -487,7 +485,6 @@ test "comptime bitwise operators" {
487485
488486test "comptime shlWithOverflow" {
489487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
490 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
491488
492489 const ct_shifted: u64 = comptime amt: {
493490 var amt = @as(u64, 0);
......@@ -559,8 +556,6 @@ pub fn vec3(x: f32, y: f32, z: f32) Vec3 {
559556}
560557
561558test "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
564559 var runtime = [1]i32{3};
565560 comptime var i: usize = 0;
566561 inline while (i < 2) : (i += 1) {
......@@ -611,7 +606,6 @@ const hi1 = "hi";
611606const hi2 = hi1;
612607test "const global shares pointer with other same one" {
613608 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
615609
616610 try assertEqualPtrs(&hi1[0], &hi2[0]);
617611 comptime try expect(&hi1[0] == &hi2[0]);
......@@ -982,7 +976,6 @@ test "closure capture type of runtime-known parameter" {
982976
983977test "comptime break passing through runtime condition converted to runtime break" {
984978 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
985 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
986979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
987980
988981 const S = struct {
test/behavior/fn.zig-9
......@@ -184,8 +184,6 @@ test "function with complex callconv and return type expressions" {
184184}
185185
186186test "pass by non-copying value" {
187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
188
189187 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);
190188}
191189
......@@ -211,8 +209,6 @@ fn addPointCoordsVar(pt: anytype) !i32 {
211209}
212210
213211test "pass by non-copying value as method" {
214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
215
216212 var pt = Point2{ .x = 1, .y = 2 };
217213 try expect(pt.addPointCoords() == 3);
218214}
......@@ -227,8 +223,6 @@ const Point2 = struct {
227223};
228224
229225test "pass by non-copying value as method, which is generic" {
230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
231
232226 var pt = Point3{ .x = 1, .y = 2 };
233227 try expect(pt.addPointCoords(i32) == 3);
234228}
......@@ -244,8 +238,6 @@ const Point3 = struct {
244238};
245239
246240test "pass by non-copying value as method, at comptime" {
247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
248
249241 comptime {
250242 var pt = Point2{ .x = 1, .y = 2 };
251243 try expect(pt.addPointCoords() == 3);
......@@ -409,7 +401,6 @@ test "ability to give comptime types and non comptime types to same parameter" {
409401
410402test "function with inferred error set but returning no error" {
411403 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
413404
414405 const S = struct {
415406 fn foo() !void {}
test/behavior/fn_delegation.zig-1
......@@ -32,7 +32,6 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {
3232}
3333
3434test "fn delegation" {
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3635 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3736
3837 const foo = Foo{};
test/behavior/generics.zig-1
......@@ -206,7 +206,6 @@ fn foo2(arg: anytype) bool {
206206
207207test "generic struct" {
208208 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
209 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
210209 var a1 = GenNode(i32){
211210 .value = 13,
212211 .next = null,
test/behavior/optional.zig-2
......@@ -33,8 +33,6 @@ test "optional pointer to size zero struct" {
3333}
3434
3535test "equality compare optional pointers" {
36 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
37
3836 try testNullPtrsEql();
3937 comptime try testNullPtrsEql();
4038}
test/behavior/pointers.zig-2
......@@ -85,7 +85,6 @@ test "assigning integer to C pointer" {
8585test "C pointer comparison and arithmetic" {
8686 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8787 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8988
9089 const S = struct {
9190 fn doTheTest() !void {
......@@ -477,7 +476,6 @@ test "element pointer arithmetic to slice" {
477476}
478477
479478test "array slicing to slice" {
480 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
481479 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
482480
483481 const S = struct {
test/behavior/sizeof_and_typeof.zig-1
......@@ -19,7 +19,6 @@ test "@sizeOf on compile-time types" {
1919
2020test "@TypeOf() with multiple arguments" {
2121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2322 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
2423 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
2524 {
test/behavior/slice.zig-2
......@@ -207,7 +207,6 @@ test "slice string literal has correct type" {
207207}
208208
209209test "result location zero sized array inside struct field implicit cast to slice" {
210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
211210 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
212211
213212 const E = struct {
......@@ -509,7 +508,6 @@ test "slice pointer-to-array null terminated" {
509508test "slice pointer-to-array zero length" {
510509 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
511510 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
513511 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
514512
515513 comptime {
test/behavior/struct.zig-4
......@@ -168,14 +168,12 @@ const MemberFnTestFoo = struct {
168168};
169169
170170test "call member function directly" {
171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
172171 const instance = MemberFnTestFoo{ .x = 1234 };
173172 const result = MemberFnTestFoo.member(instance);
174173 try expect(result == 1234);
175174}
176175
177176test "store member function in variable" {
178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
179177 const instance = MemberFnTestFoo{ .x = 1234 };
180178 const memberFn = MemberFnTestFoo.member;
181179 const result = memberFn(instance);
......@@ -1000,8 +998,6 @@ test "tuple element initialized with fn call" {
1000998}
1001999
10021000test "struct with union field" {
1003 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1004
10051001 const Value = struct {
10061002 ref: u32 = 2,
10071003 kind: union(enum) {
test/behavior/type.zig-2
......@@ -473,7 +473,6 @@ test "Type.Union" {
473473test "Type.Union from Type.Enum" {
474474 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
475475 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
476 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
477476
478477 const Tag = @Type(.{
479478 .Enum = .{
......@@ -503,7 +502,6 @@ test "Type.Union from Type.Enum" {
503502test "Type.Union from regular enum" {
504503 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
505504 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
507505
508506 const E = enum { working_as_expected };
509507 const T = @Type(.{
test/behavior/type_info.zig-1
......@@ -381,7 +381,6 @@ extern fn foo(a: usize, b: bool, ...) callconv(.C) usize;
381381extern fn fooAligned(a: usize, b: bool, ...) align(4) callconv(.C) usize;
382382
383383test "type info: generic function types" {
384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
385384 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
386385
387386 if (builtin.zig_backend != .stage1) {
test/behavior/union.zig-1
......@@ -1111,7 +1111,6 @@ test "union enum type gets a separate scope" {
11111111test "global variable struct contains union initialized to non-most-aligned field" {
11121112 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11131113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11151114
11161115 const T = struct {
11171116 const U = union(enum) {
test/behavior/void.zig-2
......@@ -42,8 +42,6 @@ test "void optional" {
4242}
4343
4444test "void array as a local variable initializer" {
45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
46
4745 var x = [_]void{{}} ** 1004;
4846 _ = x[0];
4947}