| author | |
| committer | |
| log | aea3460cf5a7f0bf03f09181bd6352ea5818d00e |
| tree | 8cdef5054989654ef2253d14793bc594a74d5128 |
| parent | a70cbe779adb11faeb88ceffad0cfa729d2eec6e |
| parent | 485082064aa3dee6cffec8db9f8146f1cf2aefbc |
| signature |
stage2 AArch64: small improvements27 files changed, 28 insertions(+), 105 deletions(-)
src/arch/aarch64/CodeGen.zig+18-3| ... | ... | @@ -4043,9 +4043,24 @@ fn airStructFieldVal(self: *Self, inst: Air.Inst.Index) !void { |
| 4043 | 4043 | |
| 4044 | 4044 | fn airFieldParentPtr(self: *Self, inst: Air.Inst.Index) !void { |
| 4045 | 4045 | const ty_pl = self.air.instructions.items(.data)[inst].ty_pl; |
| 4046 | const extra = self.air.extraData(Air.StructField, ty_pl.payload).data; | |
| 4047 | _ = extra; | |
| 4048 | return self.fail("TODO implement codegen airFieldParentPtr", .{}); | |
| 4046 | const extra = self.air.extraData(Air.FieldParentPtr, ty_pl.payload).data; | |
| 4047 | const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: { | |
| 4048 | const field_ptr = try self.resolveInst(extra.field_ptr); | |
| 4049 | const struct_ty = self.air.getRefType(ty_pl.ty).childType(); | |
| 4050 | const struct_field_offset = @intCast(u32, struct_ty.structFieldOffset(extra.field_index, self.target.*)); | |
| 4051 | switch (field_ptr) { | |
| 4052 | .ptr_stack_offset => |off| { | |
| 4053 | break :result MCValue{ .ptr_stack_offset = off + struct_field_offset }; | |
| 4054 | }, | |
| 4055 | else => { | |
| 4056 | const lhs_bind: ReadArg.Bind = .{ .mcv = field_ptr }; | |
| 4057 | const rhs_bind: ReadArg.Bind = .{ .mcv = .{ .immediate = struct_field_offset } }; | |
| 4058 | ||
| 4059 | break :result try self.addSub(.sub, lhs_bind, rhs_bind, Type.usize, Type.usize, null); | |
| 4060 | }, | |
| 4061 | } | |
| 4062 | }; | |
| 4063 | return self.finishAir(inst, result, .{ extra.field_ptr, .none, .none }); | |
| 4049 | 4064 | } |
| 4050 | 4065 | |
| 4051 | 4066 | fn airArg(self: *Self, inst: Air.Inst.Index) !void { |
src/arch/aarch64/abi.zig+7-16| ... | ... | @@ -136,19 +136,10 @@ pub fn getFloatArrayType(ty: Type) ?Type { |
| 136 | 136 | } |
| 137 | 137 | } |
| 138 | 138 | |
| 139 | const callee_preserved_regs_impl = if (builtin.os.tag.isDarwin()) struct { | |
| 140 | pub const callee_preserved_regs = [_]Register{ | |
| 141 | .x20, .x21, .x22, .x23, | |
| 142 | .x24, .x25, .x26, .x27, | |
| 143 | .x28, | |
| 144 | }; | |
| 145 | } else struct { | |
| 146 | pub const callee_preserved_regs = [_]Register{ | |
| 147 | .x19, .x20, .x21, .x22, .x23, | |
| 148 | .x24, .x25, .x26, .x27, .x28, | |
| 149 | }; | |
| 139 | pub const callee_preserved_regs = [_]Register{ | |
| 140 | .x19, .x20, .x21, .x22, .x23, | |
| 141 | .x24, .x25, .x26, .x27, .x28, | |
| 150 | 142 | }; |
| 151 | pub const callee_preserved_regs = callee_preserved_regs_impl.callee_preserved_regs; | |
| 152 | 143 | |
| 153 | 144 | pub const c_abi_int_param_regs = [_]Register{ .x0, .x1, .x2, .x3, .x4, .x5, .x6, .x7 }; |
| 154 | 145 | pub const c_abi_int_return_regs = [_]Register{ .x0, .x1, .x2, .x3, .x4, .x5, .x6, .x7 }; |
| ... | ... | @@ -161,10 +152,10 @@ const RegisterBitSet = RegisterManager.RegisterBitSet; |
| 161 | 152 | pub const RegisterClass = struct { |
| 162 | 153 | pub const gp: RegisterBitSet = blk: { |
| 163 | 154 | var set = RegisterBitSet.initEmpty(); |
| 164 | set.setRangeValue(.{ | |
| 165 | .start = 0, | |
| 166 | .end = callee_preserved_regs.len, | |
| 167 | }, true); | |
| 155 | for (callee_preserved_regs) |reg| { | |
| 156 | const index = RegisterManager.indexOfRegIntoTracked(reg).?; | |
| 157 | set.set(index); | |
| 158 | } | |
| 168 | 159 | break :blk set; |
| 169 | 160 | }; |
| 170 | 161 | }; |
src/arch/aarch64/bits.zig+3-1| ... | ... | @@ -4,13 +4,15 @@ const DW = std.dwarf; |
| 4 | 4 | const assert = std.debug.assert; |
| 5 | 5 | const testing = std.testing; |
| 6 | 6 | |
| 7 | /// Disjoint sets of registers. Every register must belong to | |
| 8 | /// exactly one register class. | |
| 7 | 9 | pub const RegisterClass = enum { |
| 8 | 10 | general_purpose, |
| 9 | 11 | stack_pointer, |
| 10 | 12 | floating_point, |
| 11 | 13 | }; |
| 12 | 14 | |
| 13 | /// General purpose registers in the AArch64 instruction set | |
| 15 | /// Registers in the AArch64 instruction set | |
| 14 | 16 | pub const Register = enum(u8) { |
| 15 | 17 | // zig fmt: off |
| 16 | 18 | // 64-bit general-purpose registers |
test/behavior/alignof.zig-1| ... | ... | @@ -11,7 +11,6 @@ const Foo = struct { |
| 11 | 11 | }; |
| 12 | 12 | |
| 13 | 13 | test "@alignOf(T) before referencing T" { |
| 14 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 15 | 14 | comptime try expect(@alignOf(Foo) != maxInt(usize)); |
| 16 | 15 | if (native_arch == .x86_64) { |
| 17 | 16 | comptime try expect(@alignOf(Foo) == 4); |
test/behavior/basic.zig-16| ... | ... | @@ -113,21 +113,18 @@ fn first4KeysOfHomeRow() []const u8 { |
| 113 | 113 | } |
| 114 | 114 | |
| 115 | 115 | test "return string from function" { |
| 116 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 117 | 116 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 118 | 117 | |
| 119 | 118 | try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu")); |
| 120 | 119 | } |
| 121 | 120 | |
| 122 | 121 | test "hex escape" { |
| 123 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 124 | 122 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 125 | 123 | |
| 126 | 124 | try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello")); |
| 127 | 125 | } |
| 128 | 126 | |
| 129 | 127 | test "multiline string" { |
| 130 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 131 | 128 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 132 | 129 | |
| 133 | 130 | const s1 = |
| ... | ... | @@ -140,7 +137,6 @@ test "multiline string" { |
| 140 | 137 | } |
| 141 | 138 | |
| 142 | 139 | test "multiline string comments at start" { |
| 143 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 144 | 140 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 145 | 141 | |
| 146 | 142 | const s1 = |
| ... | ... | @@ -153,7 +149,6 @@ test "multiline string comments at start" { |
| 153 | 149 | } |
| 154 | 150 | |
| 155 | 151 | test "multiline string comments at end" { |
| 156 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 157 | 152 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 158 | 153 | |
| 159 | 154 | const s1 = |
| ... | ... | @@ -166,7 +161,6 @@ test "multiline string comments at end" { |
| 166 | 161 | } |
| 167 | 162 | |
| 168 | 163 | test "multiline string comments in middle" { |
| 169 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 170 | 164 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 171 | 165 | |
| 172 | 166 | const s1 = |
| ... | ... | @@ -179,7 +173,6 @@ test "multiline string comments in middle" { |
| 179 | 173 | } |
| 180 | 174 | |
| 181 | 175 | test "multiline string comments at multiple places" { |
| 182 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 183 | 176 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 184 | 177 | |
| 185 | 178 | const s1 = |
| ... | ... | @@ -198,7 +191,6 @@ test "string concatenation" { |
| 198 | 191 | } |
| 199 | 192 | |
| 200 | 193 | test "array mult operator" { |
| 201 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 202 | 194 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 203 | 195 | |
| 204 | 196 | try expect(mem.eql(u8, "ab" ** 5, "ababababab")); |
| ... | ... | @@ -208,7 +200,6 @@ const OpaqueA = opaque {}; |
| 208 | 200 | const OpaqueB = opaque {}; |
| 209 | 201 | |
| 210 | 202 | test "opaque types" { |
| 211 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 212 | 203 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 213 | 204 | |
| 214 | 205 | try expect(*OpaqueA != *OpaqueB); |
| ... | ... | @@ -226,7 +217,6 @@ test "compile time global reinterpret" { |
| 226 | 217 | } |
| 227 | 218 | |
| 228 | 219 | test "cast undefined" { |
| 229 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 230 | 220 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 231 | 221 | |
| 232 | 222 | const array: [100]u8 = undefined; |
| ... | ... | @@ -238,7 +228,6 @@ fn testCastUndefined(x: []const u8) void { |
| 238 | 228 | } |
| 239 | 229 | |
| 240 | 230 | test "implicit cast after unreachable" { |
| 241 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 242 | 231 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 243 | 232 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 244 | 233 | |
| ... | ... | @@ -297,7 +286,6 @@ fn fB() []const u8 { |
| 297 | 286 | } |
| 298 | 287 | |
| 299 | 288 | test "call function pointer in struct" { |
| 300 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 301 | 289 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 302 | 290 | |
| 303 | 291 | try expect(mem.eql(u8, f3(true), "a")); |
| ... | ... | @@ -459,7 +447,6 @@ fn testArray2DConstDoublePtr(ptr: *const f32) !void { |
| 459 | 447 | } |
| 460 | 448 | |
| 461 | 449 | test "double implicit cast in same expression" { |
| 462 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 463 | 450 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 464 | 451 | |
| 465 | 452 | var x = @as(i32, @as(u16, nine())); |
| ... | ... | @@ -492,7 +479,6 @@ fn testStructInFn() !void { |
| 492 | 479 | } |
| 493 | 480 | |
| 494 | 481 | test "fn call returning scalar optional in equality expression" { |
| 495 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 496 | 482 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 497 | 483 | try expect(getNull() == null); |
| 498 | 484 | } |
| ... | ... | @@ -502,7 +488,6 @@ fn getNull() ?*i32 { |
| 502 | 488 | } |
| 503 | 489 | |
| 504 | 490 | test "global variable assignment with optional unwrapping with var initialized to undefined" { |
| 505 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 506 | 491 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 507 | 492 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 508 | 493 | |
| ... | ... | @@ -628,7 +613,6 @@ var gdt = [_]GDTEntry{ |
| 628 | 613 | var global_ptr = &gdt[0]; |
| 629 | 614 | |
| 630 | 615 | test "global constant is loaded with a runtime-known index" { |
| 631 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 632 | 616 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 633 | 617 | |
| 634 | 618 | const S = struct { |
test/behavior/bitcast.zig-1| ... | ... | @@ -239,7 +239,6 @@ test "bitcast packed struct to integer and back" { |
| 239 | 239 | } |
| 240 | 240 | |
| 241 | 241 | test "implicit cast to error union by returning" { |
| 242 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 243 | 242 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 244 | 243 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 245 | 244 |
test/behavior/byval_arg_var.zig-1| ... | ... | @@ -5,7 +5,6 @@ var result: []const u8 = "wrong"; |
| 5 | 5 | |
| 6 | 6 | test "pass string literal byvalue to a generic var param" { |
| 7 | 7 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 8 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 9 | 8 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 10 | 9 | |
| 11 | 10 | start(); |
test/behavior/call.zig-1| ... | ... | @@ -107,7 +107,6 @@ test "result location of function call argument through runtime condition and st |
| 107 | 107 | } |
| 108 | 108 | |
| 109 | 109 | test "function call with 40 arguments" { |
| 110 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 111 | 110 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 112 | 111 | |
| 113 | 112 | const S = struct { |
test/behavior/error.zig-13| ... | ... | @@ -29,7 +29,6 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void { |
| 29 | 29 | } |
| 30 | 30 | |
| 31 | 31 | test "error binary operator" { |
| 32 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 33 | 32 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 34 | 33 | |
| 35 | 34 | const a = errBinaryOperatorG(true) catch 3; |
| ... | ... | @@ -68,7 +67,6 @@ test "error wrapping" { |
| 68 | 67 | } |
| 69 | 68 | |
| 70 | 69 | test "unwrap simple value from error" { |
| 71 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 72 | 70 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 73 | 71 | |
| 74 | 72 | const i = unwrapSimpleValueFromErrorDo() catch unreachable; |
| ... | ... | @@ -128,7 +126,6 @@ test "debug info for optional error set" { |
| 128 | 126 | } |
| 129 | 127 | |
| 130 | 128 | test "implicit cast to optional to error union to return result loc" { |
| 131 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 132 | 129 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 133 | 130 | |
| 134 | 131 | const S = struct { |
| ... | ... | @@ -151,7 +148,6 @@ test "implicit cast to optional to error union to return result loc" { |
| 151 | 148 | |
| 152 | 149 | test "fn returning empty error set can be passed as fn returning any error" { |
| 153 | 150 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 154 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 155 | 151 | |
| 156 | 152 | entry(); |
| 157 | 153 | comptime entry(); |
| ... | ... | @@ -159,7 +155,6 @@ test "fn returning empty error set can be passed as fn returning any error" { |
| 159 | 155 | |
| 160 | 156 | test "fn returning empty error set can be passed as fn returning any error - pointer" { |
| 161 | 157 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 162 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 163 | 158 | |
| 164 | 159 | entryPtr(); |
| 165 | 160 | comptime entryPtr(); |
| ... | ... | @@ -228,7 +223,6 @@ fn testErrorSetType() !void { |
| 228 | 223 | |
| 229 | 224 | test "explicit error set cast" { |
| 230 | 225 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 231 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 232 | 226 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 233 | 227 | |
| 234 | 228 | try testExplicitErrorSetCast(Set1.A); |
| ... | ... | @@ -248,7 +242,6 @@ fn testExplicitErrorSetCast(set1: Set1) !void { |
| 248 | 242 | |
| 249 | 243 | test "comptime test error for empty error set" { |
| 250 | 244 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 251 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 252 | 245 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 253 | 246 | |
| 254 | 247 | try testComptimeTestErrorEmptySet(1234); |
| ... | ... | @@ -266,7 +259,6 @@ fn testComptimeTestErrorEmptySet(x: EmptyErrorSet!i32) !void { |
| 266 | 259 | |
| 267 | 260 | test "comptime err to int of error set with only 1 possible value" { |
| 268 | 261 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 269 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 270 | 262 | |
| 271 | 263 | testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A)); |
| 272 | 264 | comptime testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A)); |
| ... | ... | @@ -309,7 +301,6 @@ test "error inference with an empty set" { |
| 309 | 301 | } |
| 310 | 302 | |
| 311 | 303 | test "error union peer type resolution" { |
| 312 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 313 | 304 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 314 | 305 | |
| 315 | 306 | try testErrorUnionPeerTypeResolution(1); |
| ... | ... | @@ -341,7 +332,6 @@ fn quux_1() !i32 { |
| 341 | 332 | } |
| 342 | 333 | |
| 343 | 334 | test "error: Zero sized error set returned with value payload crash" { |
| 344 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 345 | 335 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 346 | 336 | |
| 347 | 337 | _ = try foo3(0); |
| ... | ... | @@ -354,7 +344,6 @@ fn foo3(b: usize) Error!usize { |
| 354 | 344 | } |
| 355 | 345 | |
| 356 | 346 | test "error: Infer error set from literals" { |
| 357 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 358 | 347 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 359 | 348 | |
| 360 | 349 | _ = nullLiteral("n") catch |err| handleErrors(err); |
| ... | ... | @@ -501,7 +490,6 @@ test "nested catch" { |
| 501 | 490 | |
| 502 | 491 | test "function pointer with return type that is error union with payload which is pointer of parent struct" { |
| 503 | 492 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 504 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 505 | 493 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 506 | 494 | |
| 507 | 495 | const S = struct { |
| ... | ... | @@ -632,7 +620,6 @@ test "error set equality" { |
| 632 | 620 | } |
| 633 | 621 | |
| 634 | 622 | test "inferred error set equality" { |
| 635 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 636 | 623 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 637 | 624 | |
| 638 | 625 | const S = struct { |
test/behavior/field_parent_ptr.zig-2| ... | ... | @@ -2,7 +2,6 @@ const expect = @import("std").testing.expect; |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | |
| 4 | 4 | test "@fieldParentPtr non-first field" { |
| 5 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 6 | 5 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 7 | 6 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 8 | 7 | try testParentFieldPtr(&foo.c); |
| ... | ... | @@ -10,7 +9,6 @@ test "@fieldParentPtr non-first field" { |
| 10 | 9 | } |
| 11 | 10 | |
| 12 | 11 | test "@fieldParentPtr first field" { |
| 13 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 14 | 12 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 15 | 13 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 16 | 14 | try testParentFieldPtrFirst(&foo.a); |
test/behavior/fn.zig-5| ... | ... | @@ -145,7 +145,6 @@ fn fnWithUnreachable() noreturn { |
| 145 | 145 | |
| 146 | 146 | test "extern struct with stdcallcc fn pointer" { |
| 147 | 147 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 148 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 149 | 148 | |
| 150 | 149 | const S = extern struct { |
| 151 | 150 | ptr: *const fn () callconv(if (builtin.target.cpu.arch == .x86) .Stdcall else .C) i32, |
| ... | ... | @@ -196,7 +195,6 @@ fn addPointCoords(pt: Point) i32 { |
| 196 | 195 | } |
| 197 | 196 | |
| 198 | 197 | test "pass by non-copying value through var arg" { |
| 199 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 200 | 198 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 201 | 199 | |
| 202 | 200 | try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3); |
| ... | ... | @@ -292,7 +290,6 @@ fn voidFun(a: i32, b: void, c: i32, d: void) !void { |
| 292 | 290 | } |
| 293 | 291 | |
| 294 | 292 | test "call function with empty string" { |
| 295 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 296 | 293 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 297 | 294 | |
| 298 | 295 | acceptsString(""); |
| ... | ... | @@ -410,7 +407,6 @@ test "function with inferred error set but returning no error" { |
| 410 | 407 | } |
| 411 | 408 | |
| 412 | 409 | test "import passed byref to function in return type" { |
| 413 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 414 | 410 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 415 | 411 | |
| 416 | 412 | const S = struct { |
| ... | ... | @@ -445,7 +441,6 @@ test "implicit cast function to function ptr" { |
| 445 | 441 | |
| 446 | 442 | test "method call with optional and error union first param" { |
| 447 | 443 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 448 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 449 | 444 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 450 | 445 | |
| 451 | 446 | const S = struct { |
test/behavior/if.zig-1| ... | ... | @@ -81,7 +81,6 @@ test "const result loc, runtime if cond, else unreachable" { |
| 81 | 81 | test "if copies its payload" { |
| 82 | 82 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 83 | 83 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 84 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 85 | 84 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 86 | 85 | |
| 87 | 86 | const S = struct { |
test/behavior/math.zig-2| ... | ... | @@ -9,7 +9,6 @@ const mem = std.mem; |
| 9 | 9 | const math = std.math; |
| 10 | 10 | |
| 11 | 11 | test "assignment operators" { |
| 12 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 13 | 12 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 14 | 13 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 15 | 14 | |
| ... | ... | @@ -546,7 +545,6 @@ fn negateWrap(comptime T: type, x: T) T { |
| 546 | 545 | } |
| 547 | 546 | |
| 548 | 547 | test "unsigned 64-bit division" { |
| 549 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 550 | 548 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 551 | 549 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 552 | 550 |
test/behavior/merge_error_sets.zig-1| ... | ... | @@ -12,7 +12,6 @@ fn foo() C!void { |
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | test "merge error sets" { |
| 15 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 16 | 15 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 17 | 16 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 18 | 17 |
test/behavior/null.zig-4| ... | ... | @@ -73,7 +73,6 @@ fn foo(x: ?i32) ?bool { |
| 73 | 73 | test "test null runtime" { |
| 74 | 74 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 75 | 75 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 76 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 77 | 76 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 78 | 77 | |
| 79 | 78 | try testTestNullRuntime(null); |
| ... | ... | @@ -85,7 +84,6 @@ fn testTestNullRuntime(x: ?i32) !void { |
| 85 | 84 | |
| 86 | 85 | test "optional void" { |
| 87 | 86 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 88 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 89 | 87 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 90 | 88 | |
| 91 | 89 | try optionalVoidImpl(); |
| ... | ... | @@ -109,7 +107,6 @@ const Empty = struct {}; |
| 109 | 107 | |
| 110 | 108 | test "optional struct{}" { |
| 111 | 109 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 112 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 113 | 110 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 114 | 111 | |
| 115 | 112 | _ = try optionalEmptyStructImpl(); |
| ... | ... | @@ -135,7 +132,6 @@ test "null with default unwrap" { |
| 135 | 132 | } |
| 136 | 133 | |
| 137 | 134 | test "optional pointer to 0 bit type null value at runtime" { |
| 138 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 139 | 135 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 140 | 136 | |
| 141 | 137 | const EmptyStruct = struct {}; |
test/behavior/pointers.zig-2| ... | ... | @@ -66,7 +66,6 @@ test "initialize const optional C pointer to null" { |
| 66 | 66 | } |
| 67 | 67 | |
| 68 | 68 | test "assigning integer to C pointer" { |
| 69 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 70 | 69 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 71 | 70 | |
| 72 | 71 | var x: i32 = 0; |
| ... | ... | @@ -193,7 +192,6 @@ test "allowzero pointer and slice" { |
| 193 | 192 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 194 | 193 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 195 | 194 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 196 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 197 | 195 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 198 | 196 | |
| 199 | 197 | var ptr = @intToPtr([*]allowzero i32, 0); |
test/behavior/ptrcast.zig-5| ... | ... | @@ -4,8 +4,6 @@ const expect = std.testing.expect; |
| 4 | 4 | const native_endian = builtin.target.cpu.arch.endian(); |
| 5 | 5 | |
| 6 | 6 | test "reinterpret bytes as integer with nonzero offset" { |
| 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 8 | ||
| 9 | 7 | try testReinterpretBytesAsInteger(); |
| 10 | 8 | comptime try testReinterpretBytesAsInteger(); |
| 11 | 9 | } |
| ... | ... | @@ -38,7 +36,6 @@ fn testReinterpretWithOffsetAndNoWellDefinedLayout() !void { |
| 38 | 36 | } |
| 39 | 37 | |
| 40 | 38 | test "reinterpret bytes inside auto-layout struct as integer with nonzero offset" { |
| 41 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 42 | 39 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 43 | 40 | |
| 44 | 41 | try testReinterpretStructWrappedBytesAsInteger(); |
| ... | ... | @@ -173,7 +170,6 @@ test "lower reinterpreted comptime field ptr" { |
| 173 | 170 | } |
| 174 | 171 | |
| 175 | 172 | test "reinterpret struct field at comptime" { |
| 176 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 177 | 173 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 178 | 174 | |
| 179 | 175 | const numNative = comptime Bytes.init(0x12345678); |
| ... | ... | @@ -236,7 +232,6 @@ test "ptrcast of const integer has the correct object size" { |
| 236 | 232 | |
| 237 | 233 | test "implicit optional pointer to optional anyopaque pointer" { |
| 238 | 234 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 239 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 240 | 235 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 241 | 236 | |
| 242 | 237 | var buf: [4]u8 = "aoeu".*; |
test/behavior/sizeof_and_typeof.zig-1| ... | ... | @@ -75,7 +75,6 @@ const P = packed struct { |
| 75 | 75 | }; |
| 76 | 76 | |
| 77 | 77 | test "@offsetOf" { |
| 78 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 79 | 78 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 80 | 79 | |
| 81 | 80 | // Packed structs have fixed memory layout |
test/behavior/slice.zig-6| ... | ... | @@ -28,7 +28,6 @@ comptime { |
| 28 | 28 | } |
| 29 | 29 | |
| 30 | 30 | test "slicing" { |
| 31 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 32 | 31 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 33 | 32 | |
| 34 | 33 | var array: [20]i32 = undefined; |
| ... | ... | @@ -64,7 +63,6 @@ test "comptime slice of undefined pointer of length 0" { |
| 64 | 63 | } |
| 65 | 64 | |
| 66 | 65 | test "implicitly cast array of size 0 to slice" { |
| 67 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 68 | 66 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 69 | 67 | |
| 70 | 68 | var msg = [_]u8{}; |
| ... | ... | @@ -121,7 +119,6 @@ test "slice of type" { |
| 121 | 119 | } |
| 122 | 120 | |
| 123 | 121 | test "generic malloc free" { |
| 124 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 125 | 122 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 126 | 123 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 127 | 124 | |
| ... | ... | @@ -233,7 +230,6 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 { |
| 233 | 230 | } |
| 234 | 231 | |
| 235 | 232 | test "C pointer" { |
| 236 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 237 | 233 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 238 | 234 | |
| 239 | 235 | var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf"; |
| ... | ... | @@ -288,7 +284,6 @@ test "slice type with custom alignment" { |
| 288 | 284 | } |
| 289 | 285 | |
| 290 | 286 | test "obtaining a null terminated slice" { |
| 291 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 292 | 287 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 293 | 288 | |
| 294 | 289 | // here we have a normal array |
| ... | ... | @@ -590,7 +585,6 @@ test "array mult of slice gives ptr to array" { |
| 590 | 585 | } |
| 591 | 586 | |
| 592 | 587 | test "slice bounds in comptime concatenation" { |
| 593 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 594 | 588 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 595 | 589 | |
| 596 | 590 | const bs = comptime blk: { |
test/behavior/struct.zig-7| ... | ... | @@ -106,7 +106,6 @@ fn testMutation(foo: *StructFoo) void { |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | test "struct byval assign" { |
| 109 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 110 | 109 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 111 | 110 | |
| 112 | 111 | var foo1: StructFoo = undefined; |
| ... | ... | @@ -140,7 +139,6 @@ fn returnEmptyStructInstance() StructWithNoFields { |
| 140 | 139 | } |
| 141 | 140 | |
| 142 | 141 | test "fn call of struct field" { |
| 143 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 144 | 142 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 145 | 143 | |
| 146 | 144 | const Foo = struct { |
| ... | ... | @@ -323,7 +321,6 @@ const VoidStructFieldsFoo = struct { |
| 323 | 321 | }; |
| 324 | 322 | |
| 325 | 323 | test "return empty struct from fn" { |
| 326 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 327 | 324 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 328 | 325 | |
| 329 | 326 | _ = testReturnEmptyStructFromFn(); |
| ... | ... | @@ -334,7 +331,6 @@ fn testReturnEmptyStructFromFn() EmptyStruct2 { |
| 334 | 331 | } |
| 335 | 332 | |
| 336 | 333 | test "pass slice of empty struct to fn" { |
| 337 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 338 | 334 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 339 | 335 | |
| 340 | 336 | try expect(testPassSliceOfEmptyStructToFn(&[_]EmptyStruct2{EmptyStruct2{}}) == 1); |
| ... | ... | @@ -369,7 +365,6 @@ const EmptyStruct = struct { |
| 369 | 365 | }; |
| 370 | 366 | |
| 371 | 367 | test "align 1 field before self referential align 8 field as slice return type" { |
| 372 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 373 | 368 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 374 | 369 | |
| 375 | 370 | const result = alloc(Expr); |
| ... | ... | @@ -1094,7 +1089,6 @@ test "packed struct with undefined initializers" { |
| 1094 | 1089 | |
| 1095 | 1090 | test "for loop over pointers to struct, getting field from struct pointer" { |
| 1096 | 1091 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1097 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 1098 | 1092 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1099 | 1093 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1100 | 1094 | |
| ... | ... | @@ -1236,7 +1230,6 @@ test "initialize struct with empty literal" { |
| 1236 | 1230 | } |
| 1237 | 1231 | |
| 1238 | 1232 | test "loading a struct pointer perfoms a copy" { |
| 1239 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 1240 | 1233 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1241 | 1234 | |
| 1242 | 1235 | const S = struct { |
test/behavior/struct_contains_slice_of_itself.zig-1| ... | ... | @@ -12,7 +12,6 @@ const NodeAligned = struct { |
| 12 | 12 | }; |
| 13 | 13 | |
| 14 | 14 | test "struct contains slice of itself" { |
| 15 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 16 | 15 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 17 | 16 | |
| 18 | 17 | var other_nodes = [_]Node{ |
test/behavior/type_info.zig-3| ... | ... | @@ -284,7 +284,6 @@ fn testUnion() !void { |
| 284 | 284 | } |
| 285 | 285 | |
| 286 | 286 | test "type info: struct info" { |
| 287 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 288 | 287 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 289 | 288 | |
| 290 | 289 | try testStruct(); |
| ... | ... | @@ -511,7 +510,6 @@ test "type info for async frames" { |
| 511 | 510 | |
| 512 | 511 | test "Declarations are returned in declaration order" { |
| 513 | 512 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 514 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 515 | 513 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 516 | 514 | |
| 517 | 515 | const S = struct { |
| ... | ... | @@ -535,7 +533,6 @@ test "Struct.is_tuple for anon list literal" { |
| 535 | 533 | |
| 536 | 534 | test "Struct.is_tuple for anon struct literal" { |
| 537 | 535 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 538 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 539 | 536 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 540 | 537 | |
| 541 | 538 | const info = @typeInfo(@TypeOf(.{ .a = 0 })); |
test/behavior/undefined.zig-2| ... | ... | @@ -16,7 +16,6 @@ test "init static array to undefined" { |
| 16 | 16 | // This test causes `initStaticArray()` to be codegen'd, and the |
| 17 | 17 | // C backend does not yet support returning arrays, so it fails |
| 18 | 18 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 19 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 20 | 19 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 21 | 20 | |
| 22 | 21 | try expect(static_array[0] == 1); |
| ... | ... | @@ -79,7 +78,6 @@ test "assign undefined to struct with method" { |
| 79 | 78 | } |
| 80 | 79 | |
| 81 | 80 | test "type name of undefined" { |
| 82 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 83 | 81 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 84 | 82 | |
| 85 | 83 | const x = undefined; |
test/behavior/underscore.zig-1| ... | ... | @@ -7,7 +7,6 @@ test "ignore lval with underscore" { |
| 7 | 7 | } |
| 8 | 8 | |
| 9 | 9 | test "ignore lval with underscore (while loop)" { |
| 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 11 | 10 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 12 | 11 | |
| 13 | 12 | while (optionalReturnError()) |_| { |
test/behavior/union.zig-3| ... | ... | @@ -413,7 +413,6 @@ test "tagged union with no payloads" { |
| 413 | 413 | } |
| 414 | 414 | |
| 415 | 415 | test "union with only 1 field casted to its enum type" { |
| 416 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 417 | 416 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 418 | 417 | |
| 419 | 418 | const Literal = union(enum) { |
| ... | ... | @@ -563,7 +562,6 @@ const Baz = enum { A, B, C, D }; |
| 563 | 562 | |
| 564 | 563 | test "tagged union type" { |
| 565 | 564 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 566 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 567 | 565 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 568 | 566 | |
| 569 | 567 | const foo1 = TaggedFoo{ .One = 13 }; |
| ... | ... | @@ -697,7 +695,6 @@ const PartialInstWithPayload = union(enum) { |
| 697 | 695 | }; |
| 698 | 696 | |
| 699 | 697 | test "union with only 1 field casted to its enum type which has enum value specified" { |
| 700 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 701 | 698 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 702 | 699 | |
| 703 | 700 | const Literal = union(enum) { |
test/behavior/void.zig-1| ... | ... | @@ -19,7 +19,6 @@ test "compare void with void compile time known" { |
| 19 | 19 | } |
| 20 | 20 | |
| 21 | 21 | test "iterate over a void slice" { |
| 22 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 23 | 22 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 24 | 23 | |
| 25 | 24 | var j: usize = 0; |
test/behavior/while.zig-5| ... | ... | @@ -4,7 +4,6 @@ const expect = std.testing.expect; |
| 4 | 4 | const assert = std.debug.assert; |
| 5 | 5 | |
| 6 | 6 | test "while loop" { |
| 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 8 | 7 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 9 | 8 | |
| 10 | 9 | var i: i32 = 0; |
| ... | ... | @@ -24,7 +23,6 @@ fn whileLoop2() i32 { |
| 24 | 23 | } |
| 25 | 24 | |
| 26 | 25 | test "static eval while" { |
| 27 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 28 | 26 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 29 | 27 | |
| 30 | 28 | try expect(static_eval_while_number == 1); |
| ... | ... | @@ -108,7 +106,6 @@ fn testBreakOuter() void { |
| 108 | 106 | test "while copies its payload" { |
| 109 | 107 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 110 | 108 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 111 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 112 | 109 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 113 | 110 | |
| 114 | 111 | const S = struct { |
| ... | ... | @@ -148,7 +145,6 @@ fn runContinueAndBreakTest() !void { |
| 148 | 145 | test "while with optional as condition" { |
| 149 | 146 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 150 | 147 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 151 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 152 | 148 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 153 | 149 | |
| 154 | 150 | numbers_left = 10; |
| ... | ... | @@ -162,7 +158,6 @@ test "while with optional as condition" { |
| 162 | 158 | test "while with optional as condition with else" { |
| 163 | 159 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 164 | 160 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 165 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 166 | 161 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 167 | 162 | |
| 168 | 163 | numbers_left = 10; |