authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-12-10 15:10:21-05:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2022-12-10 15:10:21-05:00
logcffbb32d31495c83addae7ed3882dc000fb327aa
tree0f3c54e01f5384a064b0efbfc68d65ba982bb77e
parentf1f17dc1c744defa89f65b2dc642ca0c1b7c1e44
parentf9e9ba784f508e1b571a2fb64b55ad58c6ec74c8
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #13872 from koachan/sparc64-codegen

stage2: sparc64: Some Air lowerings + skip unbuildable tests

135 files changed, 1248 insertions(+), 41 deletions(-)

src/arch/sparc64/CodeGen.zig+383-41
...@@ -144,6 +144,7 @@ const MCValue = union(enum) {...@@ -144,6 +144,7 @@ const MCValue = union(enum) {
144 memory: u64,144 memory: u64,
145 /// The value is one of the stack variables.145 /// The value is one of the stack variables.
146 /// If the type is a pointer, it means the pointer address is in the stack at this offset.146 /// If the type is a pointer, it means the pointer address is in the stack at this offset.
147 /// Note that this stores the plain value (i.e without the effects of the stack bias).
147 stack_offset: u32,148 stack_offset: u32,
148 /// The value is a pointer to one of the stack variables (payload is stack offset).149 /// The value is a pointer to one of the stack variables (payload is stack offset).
149 ptr_stack_offset: u32,150 ptr_stack_offset: u32,
...@@ -274,6 +275,8 @@ pub fn generate(...@@ -274,6 +275,8 @@ pub fn generate(
274 assert(fn_owner_decl.has_tv);275 assert(fn_owner_decl.has_tv);
275 const fn_type = fn_owner_decl.ty;276 const fn_type = fn_owner_decl.ty;
276277
278 log.debug("fn {s}", .{fn_owner_decl.name});
279
277 var branch_stack = std.ArrayList(Branch).init(bin_file.allocator);280 var branch_stack = std.ArrayList(Branch).init(bin_file.allocator);
278 defer {281 defer {
279 assert(branch_stack.items.len == 1);282 assert(branch_stack.items.len == 1);
...@@ -518,8 +521,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -518,8 +521,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
518 .sub_sat => try self.airSubSat(inst),521 .sub_sat => try self.airSubSat(inst),
519 .mul_sat => try self.airMulSat(inst),522 .mul_sat => try self.airMulSat(inst),
520 .shl_sat => try self.airShlSat(inst),523 .shl_sat => try self.airShlSat(inst),
521 .min => @panic("TODO try self.airMin(inst)"),524 .min, .max => try self.airMinMax(inst),
522 .max => @panic("TODO try self.airMax(inst)"),
523 .rem => try self.airRem(inst),525 .rem => try self.airRem(inst),
524 .mod => try self.airMod(inst),526 .mod => try self.airMod(inst),
525 .slice => try self.airSlice(inst),527 .slice => try self.airSlice(inst),
...@@ -573,7 +575,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -573,7 +575,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
573 .fptrunc => @panic("TODO try self.airFptrunc(inst)"),575 .fptrunc => @panic("TODO try self.airFptrunc(inst)"),
574 .fpext => @panic("TODO try self.airFpext(inst)"),576 .fpext => @panic("TODO try self.airFpext(inst)"),
575 .intcast => try self.airIntCast(inst),577 .intcast => try self.airIntCast(inst),
576 .trunc => @panic("TODO try self.airTrunc(inst)"),578 .trunc => try self.airTrunc(inst),
577 .bool_to_int => try self.airBoolToInt(inst),579 .bool_to_int => try self.airBoolToInt(inst),
578 .is_non_null => try self.airIsNonNull(inst),580 .is_non_null => try self.airIsNonNull(inst),
579 .is_non_null_ptr => @panic("TODO try self.airIsNonNullPtr(inst)"),581 .is_non_null_ptr => @panic("TODO try self.airIsNonNullPtr(inst)"),
...@@ -595,27 +597,28 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -595,27 +597,28 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
595 .array_to_slice => try self.airArrayToSlice(inst),597 .array_to_slice => try self.airArrayToSlice(inst),
596 .int_to_float => try self.airIntToFloat(inst),598 .int_to_float => try self.airIntToFloat(inst),
597 .float_to_int => try self.airFloatToInt(inst),599 .float_to_int => try self.airFloatToInt(inst),
598 .cmpxchg_strong => @panic("TODO try self.airCmpxchg(inst)"),600 .cmpxchg_strong,
599 .cmpxchg_weak => @panic("TODO try self.airCmpxchg(inst)"),601 .cmpxchg_weak,
600 .atomic_rmw => @panic("TODO try self.airAtomicRmw(inst)"),602 => try self.airCmpxchg(inst),
601 .atomic_load => @panic("TODO try self.airAtomicLoad(inst)"),603 .atomic_rmw => try self.airAtomicRmw(inst),
604 .atomic_load => try self.airAtomicLoad(inst),
602 .memcpy => @panic("TODO try self.airMemcpy(inst)"),605 .memcpy => @panic("TODO try self.airMemcpy(inst)"),
603 .memset => try self.airMemset(inst),606 .memset => try self.airMemset(inst),
604 .set_union_tag => @panic("TODO try self.airSetUnionTag(inst)"),607 .set_union_tag => try self.airSetUnionTag(inst),
605 .get_union_tag => @panic("TODO try self.airGetUnionTag(inst)"),608 .get_union_tag => try self.airGetUnionTag(inst),
606 .clz => try self.airClz(inst),609 .clz => try self.airClz(inst),
607 .ctz => try self.airCtz(inst),610 .ctz => try self.airCtz(inst),
608 .popcount => try self.airPopcount(inst),611 .popcount => try self.airPopcount(inst),
609 .byte_swap => @panic("TODO try self.airByteSwap(inst)"),612 .byte_swap => @panic("TODO try self.airByteSwap(inst)"),
610 .bit_reverse => @panic("TODO try self.airBitReverse(inst)"),613 .bit_reverse => try self.airBitReverse(inst),
611 .tag_name => try self.airTagName(inst),614 .tag_name => try self.airTagName(inst),
612 .error_name => @panic("TODO try self.airErrorName(inst)"),615 .error_name => try self.airErrorName(inst),
613 .splat => @panic("TODO try self.airSplat(inst)"),616 .splat => try self.airSplat(inst),
614 .select => @panic("TODO try self.airSelect(inst)"),617 .select => @panic("TODO try self.airSelect(inst)"),
615 .shuffle => @panic("TODO try self.airShuffle(inst)"),618 .shuffle => @panic("TODO try self.airShuffle(inst)"),
616 .reduce => @panic("TODO try self.airReduce(inst)"),619 .reduce => @panic("TODO try self.airReduce(inst)"),
617 .aggregate_init => try self.airAggregateInit(inst),620 .aggregate_init => try self.airAggregateInit(inst),
618 .union_init => @panic("TODO try self.airUnionInit(inst)"),621 .union_init => try self.airUnionInit(inst),
619 .prefetch => try self.airPrefetch(inst),622 .prefetch => try self.airPrefetch(inst),
620 .mul_add => @panic("TODO try self.airMulAdd(inst)"),623 .mul_add => @panic("TODO try self.airMulAdd(inst)"),
621 .addrspace_cast => @panic("TODO try self.airAddrSpaceCast(int)"),624 .addrspace_cast => @panic("TODO try self.airAddrSpaceCast(int)"),
...@@ -682,7 +685,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -682,7 +685,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
682 .save_err_return_trace_index=> @panic("TODO try self.airSaveErrReturnTraceIndex(inst)"),685 .save_err_return_trace_index=> @panic("TODO try self.airSaveErrReturnTraceIndex(inst)"),
683686
684 .wrap_optional => try self.airWrapOptional(inst),687 .wrap_optional => try self.airWrapOptional(inst),
685 .wrap_errunion_payload => @panic("TODO try self.airWrapErrUnionPayload(inst)"),688 .wrap_errunion_payload => try self.airWrapErrUnionPayload(inst),
686 .wrap_errunion_err => try self.airWrapErrUnionErr(inst),689 .wrap_errunion_err => try self.airWrapErrUnionErr(inst),
687690
688 .add_optimized,691 .add_optimized,
...@@ -991,12 +994,21 @@ fn airArg(self: *Self, inst: Air.Inst.Index) !void {...@@ -991,12 +994,21 @@ fn airArg(self: *Self, inst: Air.Inst.Index) !void {
991 self.arg_index += 1;994 self.arg_index += 1;
992995
993 const ty = self.air.typeOfIndex(inst);996 const ty = self.air.typeOfIndex(inst);
994 _ = ty;
995997
996 const result = self.args[arg_index];998 const arg = self.args[arg_index];
997 // TODO support stack-only arguments999 const mcv = blk: {
998 // TODO Copy registers to the stack1000 switch (arg) {
999 const mcv = result;1001 .stack_offset => |off| {
1002 const mod = self.bin_file.options.module.?;
1003 const abi_size = math.cast(u32, ty.abiSize(self.target.*)) orelse {
1004 return self.fail("type '{}' too big to fit into stack frame", .{ty.fmt(mod)});
1005 };
1006 const offset = off + abi_size;
1007 break :blk MCValue{ .stack_offset = offset };
1008 },
1009 else => break :blk arg,
1010 }
1011 };
10001012
1001 try self.genArgDbgInfo(inst, mcv, @intCast(u32, arg_index));1013 try self.genArgDbgInfo(inst, mcv, @intCast(u32, arg_index));
10021014
...@@ -1013,6 +1025,22 @@ fn airArg(self: *Self, inst: Air.Inst.Index) !void {...@@ -1013,6 +1025,22 @@ fn airArg(self: *Self, inst: Air.Inst.Index) !void {
1013 return self.finishAir(inst, mcv, .{ .none, .none, .none });1025 return self.finishAir(inst, mcv, .{ .none, .none, .none });
1014}1026}
10151027
1028fn airAtomicLoad(self: *Self, inst: Air.Inst.Index) !void {
1029 _ = self.air.instructions.items(.data)[inst].atomic_load;
1030
1031 return self.fail("TODO implement airAtomicLoad for {}", .{
1032 self.target.cpu.arch,
1033 });
1034}
1035
1036fn airAtomicRmw(self: *Self, inst: Air.Inst.Index) !void {
1037 _ = self.air.instructions.items(.data)[inst].pl_op;
1038
1039 return self.fail("TODO implement airAtomicRmw for {}", .{
1040 self.target.cpu.arch,
1041 });
1042}
1043
1016fn airBinOp(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {1044fn airBinOp(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
1017 const bin_op = self.air.instructions.items(.data)[inst].bin_op;1045 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
1018 const lhs = try self.resolveInst(bin_op.lhs);1046 const lhs = try self.resolveInst(bin_op.lhs);
...@@ -1061,6 +1089,12 @@ fn airBitCast(self: *Self, inst: Air.Inst.Index) !void {...@@ -1061,6 +1089,12 @@ fn airBitCast(self: *Self, inst: Air.Inst.Index) !void {
1061 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });1089 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1062}1090}
10631091
1092fn airBitReverse(self: *Self, inst: Air.Inst.Index) !void {
1093 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
1094 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement airBitReverse for {}", .{self.target.cpu.arch});
1095 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1096}
1097
1064fn airBlock(self: *Self, inst: Air.Inst.Index) !void {1098fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
1065 try self.blocks.putNoClobber(self.gpa, inst, .{1099 try self.blocks.putNoClobber(self.gpa, inst, .{
1066 // A block is a setup to be able to jump to the end.1100 // A block is a setup to be able to jump to the end.
...@@ -1322,6 +1356,16 @@ fn airCmpLtErrorsLen(self: *Self, inst: Air.Inst.Index) !void {...@@ -1322,6 +1356,16 @@ fn airCmpLtErrorsLen(self: *Self, inst: Air.Inst.Index) !void {
1322 return self.finishAir(inst, result, .{ un_op, .none, .none });1356 return self.finishAir(inst, result, .{ un_op, .none, .none });
1323}1357}
13241358
1359fn airCmpxchg(self: *Self, inst: Air.Inst.Index) !void {
1360 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
1361 const extra = self.air.extraData(Air.Block, ty_pl.payload);
1362 _ = extra;
1363
1364 return self.fail("TODO implement airCmpxchg for {}", .{
1365 self.target.cpu.arch,
1366 });
1367}
1368
1325fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {1369fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
1326 const pl_op = self.air.instructions.items(.data)[inst].pl_op;1370 const pl_op = self.air.instructions.items(.data)[inst].pl_op;
1327 const condition = try self.resolveInst(pl_op.operand);1371 const condition = try self.resolveInst(pl_op.operand);
...@@ -1406,6 +1450,7 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {...@@ -1406,6 +1450,7 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
1406 const else_value = else_values[else_idx];1450 const else_value = else_values[else_idx];
1407 const canon_mcv = if (saved_then_branch.inst_table.fetchSwapRemove(else_key)) |then_entry| blk: {1451 const canon_mcv = if (saved_then_branch.inst_table.fetchSwapRemove(else_key)) |then_entry| blk: {
1408 // The instruction's MCValue is overridden in both branches.1452 // The instruction's MCValue is overridden in both branches.
1453 log.debug("condBr put branch table (key = %{d}, value = {})", .{ else_key, then_entry.value });
1409 parent_branch.inst_table.putAssumeCapacity(else_key, then_entry.value);1454 parent_branch.inst_table.putAssumeCapacity(else_key, then_entry.value);
1410 if (else_value == .dead) {1455 if (else_value == .dead) {
1411 assert(then_entry.value == .dead);1456 assert(then_entry.value == .dead);
...@@ -1519,6 +1564,16 @@ fn airDiv(self: *Self, inst: Air.Inst.Index) !void {...@@ -1519,6 +1564,16 @@ fn airDiv(self: *Self, inst: Air.Inst.Index) !void {
1519 return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none });1564 return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none });
1520}1565}
15211566
1567fn airErrorName(self: *Self, inst: Air.Inst.Index) !void {
1568 const un_op = self.air.instructions.items(.data)[inst].un_op;
1569 const operand = try self.resolveInst(un_op);
1570 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else {
1571 _ = operand;
1572 return self.fail("TODO implement airErrorName for {}", .{self.target.cpu.arch});
1573 };
1574 return self.finishAir(inst, result, .{ un_op, .none, .none });
1575}
1576
1522fn airErrUnionPayloadPtrSet(self: *Self, inst: Air.Inst.Index) !void {1577fn airErrUnionPayloadPtrSet(self: *Self, inst: Air.Inst.Index) !void {
1523 const ty_op = self.air.instructions.items(.data)[inst].ty_op;1578 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
1524 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement .errunion_payload_ptr_set for {}", .{self.target.cpu.arch});1579 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement .errunion_payload_ptr_set for {}", .{self.target.cpu.arch});
...@@ -1556,6 +1611,12 @@ fn airFloatToInt(self: *Self, inst: Air.Inst.Index) !void {...@@ -1556,6 +1611,12 @@ fn airFloatToInt(self: *Self, inst: Air.Inst.Index) !void {
1556 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });1611 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1557}1612}
15581613
1614fn airGetUnionTag(self: *Self, inst: Air.Inst.Index) !void {
1615 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
1616 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement airGetUnionTag for {}", .{self.target.cpu.arch});
1617 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
1618}
1619
1559fn airIntCast(self: *Self, inst: Air.Inst.Index) !void {1620fn airIntCast(self: *Self, inst: Air.Inst.Index) !void {
1560 const ty_op = self.air.instructions.items(.data)[inst].ty_op;1621 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
1561 if (self.liveness.isUnused(inst))1622 if (self.liveness.isUnused(inst))
...@@ -1675,6 +1736,22 @@ fn airMemset(self: *Self, inst: Air.Inst.Index) !void {...@@ -1675,6 +1736,22 @@ fn airMemset(self: *Self, inst: Air.Inst.Index) !void {
1675 return self.fail("TODO implement airMemset for {}", .{self.target.cpu.arch});1736 return self.fail("TODO implement airMemset for {}", .{self.target.cpu.arch});
1676}1737}
16771738
1739fn airMinMax(self: *Self, inst: Air.Inst.Index) !void {
1740 const tag = self.air.instructions.items(.tag)[inst];
1741 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
1742 const lhs = try self.resolveInst(bin_op.lhs);
1743 const rhs = try self.resolveInst(bin_op.rhs);
1744 const lhs_ty = self.air.typeOf(bin_op.lhs);
1745 const rhs_ty = self.air.typeOf(bin_op.rhs);
1746
1747 const result: MCValue = if (self.liveness.isUnused(inst))
1748 .dead
1749 else
1750 try self.minMax(tag, lhs, rhs, lhs_ty, rhs_ty);
1751
1752 return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none });
1753}
1754
1678fn airMod(self: *Self, inst: Air.Inst.Index) !void {1755fn airMod(self: *Self, inst: Air.Inst.Index) !void {
1679 const bin_op = self.air.instructions.items(.data)[inst].bin_op;1756 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
1680 const lhs = try self.resolveInst(bin_op.lhs);1757 const lhs = try self.resolveInst(bin_op.lhs);
...@@ -2071,6 +2148,12 @@ fn airRetPtr(self: *Self, inst: Air.Inst.Index) !void {...@@ -2071,6 +2148,12 @@ fn airRetPtr(self: *Self, inst: Air.Inst.Index) !void {
2071 return self.finishAir(inst, .{ .ptr_stack_offset = stack_offset }, .{ .none, .none, .none });2148 return self.finishAir(inst, .{ .ptr_stack_offset = stack_offset }, .{ .none, .none, .none });
2072}2149}
20732150
2151fn airSetUnionTag(self: *Self, inst: Air.Inst.Index) !void {
2152 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
2153 _ = bin_op;
2154 return self.fail("TODO implement airSetUnionTag for {}", .{self.target.cpu.arch});
2155}
2156
2074fn airShlSat(self: *Self, inst: Air.Inst.Index) !void {2157fn airShlSat(self: *Self, inst: Air.Inst.Index) !void {
2075 const bin_op = self.air.instructions.items(.data)[inst].bin_op;2158 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
2076 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement shl_sat for {}", .{self.target.cpu.arch});2159 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement shl_sat for {}", .{self.target.cpu.arch});
...@@ -2270,6 +2353,12 @@ fn airSlicePtr(self: *Self, inst: Air.Inst.Index) !void {...@@ -2270,6 +2353,12 @@ fn airSlicePtr(self: *Self, inst: Air.Inst.Index) !void {
2270 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });2353 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
2271}2354}
22722355
2356fn airSplat(self: *Self, inst: Air.Inst.Index) !void {
2357 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2358 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement airSplat for {}", .{self.target.cpu.arch});
2359 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
2360}
2361
2273fn airStore(self: *Self, inst: Air.Inst.Index) !void {2362fn airStore(self: *Self, inst: Air.Inst.Index) !void {
2274 const bin_op = self.air.instructions.items(.data)[inst].bin_op;2363 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
2275 const ptr = try self.resolveInst(bin_op.lhs);2364 const ptr = try self.resolveInst(bin_op.lhs);
...@@ -2378,6 +2467,19 @@ fn airTagName(self: *Self, inst: Air.Inst.Index) !void {...@@ -2378,6 +2467,19 @@ fn airTagName(self: *Self, inst: Air.Inst.Index) !void {
2378 return self.finishAir(inst, result, .{ un_op, .none, .none });2467 return self.finishAir(inst, result, .{ un_op, .none, .none });
2379}2468}
23802469
2470fn airTrunc(self: *Self, inst: Air.Inst.Index) !void {
2471 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2472 const operand = try self.resolveInst(ty_op.operand);
2473 const operand_ty = self.air.typeOf(ty_op.operand);
2474 const dest_ty = self.air.typeOfIndex(inst);
2475
2476 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else blk: {
2477 break :blk try self.trunc(inst, operand, operand_ty, dest_ty);
2478 };
2479
2480 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
2481}
2482
2381fn airTry(self: *Self, inst: Air.Inst.Index) !void {2483fn airTry(self: *Self, inst: Air.Inst.Index) !void {
2382 const pl_op = self.air.instructions.items(.data)[inst].pl_op;2484 const pl_op = self.air.instructions.items(.data)[inst].pl_op;
2383 const extra = self.air.extraData(Air.Try, pl_op.payload);2485 const extra = self.air.extraData(Air.Try, pl_op.payload);
...@@ -2405,6 +2507,13 @@ fn airUnaryMath(self: *Self, inst: Air.Inst.Index) !void {...@@ -2405,6 +2507,13 @@ fn airUnaryMath(self: *Self, inst: Air.Inst.Index) !void {
2405 return self.finishAir(inst, result, .{ un_op, .none, .none });2507 return self.finishAir(inst, result, .{ un_op, .none, .none });
2406}2508}
24072509
2510fn airUnionInit(self: *Self, inst: Air.Inst.Index) !void {
2511 const ty_pl = self.air.instructions.items(.data)[inst].ty_pl;
2512 const extra = self.air.extraData(Air.UnionInit, ty_pl.payload).data;
2513 _ = extra;
2514 return self.fail("TODO implement airUnionInit for {}", .{self.target.cpu.arch});
2515}
2516
2408fn airUnwrapErrErr(self: *Self, inst: Air.Inst.Index) !void {2517fn airUnwrapErrErr(self: *Self, inst: Air.Inst.Index) !void {
2409 const ty_op = self.air.instructions.items(.data)[inst].ty_op;2518 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2410 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {2519 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {
...@@ -2444,6 +2553,13 @@ fn airWrapErrUnionErr(self: *Self, inst: Air.Inst.Index) !void {...@@ -2444,6 +2553,13 @@ fn airWrapErrUnionErr(self: *Self, inst: Air.Inst.Index) !void {
2444 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });2553 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
2445}2554}
24462555
2556/// T to E!T
2557fn airWrapErrUnionPayload(self: *Self, inst: Air.Inst.Index) !void {
2558 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2559 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement wrap errunion payload for {}", .{self.target.cpu.arch});
2560 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
2561}
2562
2447fn airWrapOptional(self: *Self, inst: Air.Inst.Index) !void {2563fn airWrapOptional(self: *Self, inst: Air.Inst.Index) !void {
2448 const ty_op = self.air.instructions.items(.data)[inst].ty_op;2564 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
2449 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {2565 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {
...@@ -2843,7 +2959,18 @@ fn binOpImmediate(...@@ -2843,7 +2959,18 @@ fn binOpImmediate(
28432959
2844 const reg = try self.register_manager.allocReg(track_inst, gp);2960 const reg = try self.register_manager.allocReg(track_inst, gp);
28452961
2846 if (track_inst) |inst| branch.inst_table.putAssumeCapacity(inst, .{ .register = reg });2962 if (track_inst) |inst| {
2963 const mcv = .{ .register = reg };
2964 log.debug("binOpRegister move lhs %{d} to register: {} -> {}", .{ inst, lhs, mcv });
2965 branch.inst_table.putAssumeCapacity(inst, mcv);
2966
2967 // If we're moving a condition flag MCV to register,
2968 // mark it as free.
2969 if (lhs == .condition_flags) {
2970 assert(self.condition_flags_inst.? == inst);
2971 self.condition_flags_inst = null;
2972 }
2973 }
28472974
2848 break :blk reg;2975 break :blk reg;
2849 };2976 };
...@@ -2970,7 +3097,18 @@ fn binOpRegister(...@@ -2970,7 +3097,18 @@ fn binOpRegister(
2970 } else null;3097 } else null;
29713098
2972 const reg = try self.register_manager.allocReg(track_inst, gp);3099 const reg = try self.register_manager.allocReg(track_inst, gp);
2973 if (track_inst) |inst| branch.inst_table.putAssumeCapacity(inst, .{ .register = reg });3100 if (track_inst) |inst| {
3101 const mcv = .{ .register = reg };
3102 log.debug("binOpRegister move lhs %{d} to register: {} -> {}", .{ inst, lhs, mcv });
3103 branch.inst_table.putAssumeCapacity(inst, mcv);
3104
3105 // If we're moving a condition flag MCV to register,
3106 // mark it as free.
3107 if (lhs == .condition_flags) {
3108 assert(self.condition_flags_inst.? == inst);
3109 self.condition_flags_inst = null;
3110 }
3111 }
29743112
2975 break :blk reg;3113 break :blk reg;
2976 };3114 };
...@@ -2983,7 +3121,18 @@ fn binOpRegister(...@@ -2983,7 +3121,18 @@ fn binOpRegister(
2983 } else null;3121 } else null;
29843122
2985 const reg = try self.register_manager.allocReg(track_inst, gp);3123 const reg = try self.register_manager.allocReg(track_inst, gp);
2986 if (track_inst) |inst| branch.inst_table.putAssumeCapacity(inst, .{ .register = reg });3124 if (track_inst) |inst| {
3125 const mcv = .{ .register = reg };
3126 log.debug("binOpRegister move rhs %{d} to register: {} -> {}", .{ inst, rhs, mcv });
3127 branch.inst_table.putAssumeCapacity(inst, mcv);
3128
3129 // If we're moving a condition flag MCV to register,
3130 // mark it as free.
3131 if (rhs == .condition_flags) {
3132 assert(self.condition_flags_inst.? == inst);
3133 self.condition_flags_inst = null;
3134 }
3135 }
29873136
2988 break :blk reg;3137 break :blk reg;
2989 };3138 };
...@@ -3734,27 +3883,48 @@ fn genStore(self: *Self, value_reg: Register, addr_reg: Register, comptime off_t...@@ -3734,27 +3883,48 @@ fn genStore(self: *Self, value_reg: Register, addr_reg: Register, comptime off_t
3734}3883}
37353884
3736fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {3885fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
3737 if (typed_value.val.isUndef())3886 var tv = typed_value;
3887 log.debug("genTypedValue: ty = {}, val = {}", .{ tv.ty.fmtDebug(), tv.val.fmtDebug() });
3888
3889 if (tv.val.castTag(.runtime_value)) |rt| {
3890 tv.val = rt.data;
3891 }
3892
3893 if (tv.val.isUndef())
3738 return MCValue{ .undef = {} };3894 return MCValue{ .undef = {} };
37393895
3740 if (typed_value.val.castTag(.decl_ref)) |payload| {3896 if (tv.val.castTag(.decl_ref)) |payload| {
3741 return self.lowerDeclRef(typed_value, payload.data);3897 return self.lowerDeclRef(tv, payload.data);
3742 }3898 }
3743 if (typed_value.val.castTag(.decl_ref_mut)) |payload| {3899 if (tv.val.castTag(.decl_ref_mut)) |payload| {
3744 return self.lowerDeclRef(typed_value, payload.data.decl_index);3900 return self.lowerDeclRef(tv, payload.data.decl_index);
3745 }3901 }
3746 const target = self.target.*;3902 const target = self.target.*;
37473903
3748 switch (typed_value.ty.zigTypeTag()) {3904 switch (tv.ty.zigTypeTag()) {
3905 .Pointer => switch (tv.ty.ptrSize()) {
3906 .Slice => {},
3907 else => {
3908 switch (tv.val.tag()) {
3909 .int_u64 => {
3910 return MCValue{ .immediate = tv.val.toUnsignedInt(target) };
3911 },
3912 else => {},
3913 }
3914 },
3915 },
3916 .Bool => {
3917 return MCValue{ .immediate = @boolToInt(tv.val.toBool()) };
3918 },
3749 .Int => {3919 .Int => {
3750 const info = typed_value.ty.intInfo(self.target.*);3920 const info = tv.ty.intInfo(self.target.*);
3751 if (info.bits <= 64) {3921 if (info.bits <= 64) {
3752 const unsigned = switch (info.signedness) {3922 const unsigned = switch (info.signedness) {
3753 .signed => blk: {3923 .signed => blk: {
3754 const signed = typed_value.val.toSignedInt(target);3924 const signed = tv.val.toSignedInt(target);
3755 break :blk @bitCast(u64, signed);3925 break :blk @bitCast(u64, signed);
3756 },3926 },
3757 .unsigned => typed_value.val.toUnsignedInt(target),3927 .unsigned => tv.val.toUnsignedInt(target),
3758 };3928 };
37593929
3760 return MCValue{ .immediate = unsigned };3930 return MCValue{ .immediate = unsigned };
...@@ -3762,38 +3932,84 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {...@@ -3762,38 +3932,84 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
3762 return self.fail("TODO implement int genTypedValue of > 64 bits", .{});3932 return self.fail("TODO implement int genTypedValue of > 64 bits", .{});
3763 }3933 }
3764 },3934 },
3935 .Optional => {
3936 if (tv.ty.isPtrLikeOptional()) {
3937 if (tv.val.isNull())
3938 return MCValue{ .immediate = 0 };
3939
3940 var buf: Type.Payload.ElemType = undefined;
3941 return self.genTypedValue(.{
3942 .ty = tv.ty.optionalChild(&buf),
3943 .val = tv.val,
3944 });
3945 } else if (tv.ty.abiSize(self.target.*) == 1) {
3946 return MCValue{ .immediate = @boolToInt(tv.val.isNull()) };
3947 }
3948 },
3949 .Enum => {
3950 if (tv.val.castTag(.enum_field_index)) |field_index| {
3951 switch (tv.ty.tag()) {
3952 .enum_simple => {
3953 return MCValue{ .immediate = field_index.data };
3954 },
3955 .enum_full, .enum_nonexhaustive => {
3956 const enum_full = tv.ty.cast(Type.Payload.EnumFull).?.data;
3957 if (enum_full.values.count() != 0) {
3958 const tag_val = enum_full.values.keys()[field_index.data];
3959 return self.genTypedValue(.{ .ty = enum_full.tag_ty, .val = tag_val });
3960 } else {
3961 return MCValue{ .immediate = field_index.data };
3962 }
3963 },
3964 else => unreachable,
3965 }
3966 } else {
3967 var int_tag_buffer: Type.Payload.Bits = undefined;
3968 const int_tag_ty = tv.ty.intTagType(&int_tag_buffer);
3969 return self.genTypedValue(.{ .ty = int_tag_ty, .val = tv.val });
3970 }
3971 },
3765 .ErrorSet => {3972 .ErrorSet => {
3766 const err_name = typed_value.val.castTag(.@"error").?.data.name;3973 const err_name = tv.val.castTag(.@"error").?.data.name;
3767 const module = self.bin_file.options.module.?;3974 const module = self.bin_file.options.module.?;
3768 const global_error_set = module.global_error_set;3975 const global_error_set = module.global_error_set;
3769 const error_index = global_error_set.get(err_name).?;3976 const error_index = global_error_set.get(err_name).?;
3770 return MCValue{ .immediate = error_index };3977 return MCValue{ .immediate = error_index };
3771 },3978 },
3772 .ErrorUnion => {3979 .ErrorUnion => {
3773 const error_type = typed_value.ty.errorUnionSet();3980 const error_type = tv.ty.errorUnionSet();
3774 const payload_type = typed_value.ty.errorUnionPayload();3981 const payload_type = tv.ty.errorUnionPayload();
37753982
3776 if (typed_value.val.castTag(.eu_payload)) |pl| {3983 if (tv.val.castTag(.eu_payload)) |pl| {
3777 if (!payload_type.hasRuntimeBits()) {3984 if (!payload_type.hasRuntimeBits()) {
3778 // We use the error type directly as the type.3985 // We use the error type directly as the type.
3779 return MCValue{ .immediate = 0 };3986 return MCValue{ .immediate = 0 };
3780 }3987 }
37813988
3782 _ = pl;3989 _ = pl;
3783 return self.fail("TODO implement error union const of type '{}' (non-error)", .{typed_value.ty.fmtDebug()});3990 return self.fail("TODO implement error union const of type '{}' (non-error)", .{tv.ty.fmtDebug()});
3784 } else {3991 } else {
3785 if (!payload_type.hasRuntimeBits()) {3992 if (!payload_type.hasRuntimeBits()) {
3786 // We use the error type directly as the type.3993 // We use the error type directly as the type.
3787 return self.genTypedValue(.{ .ty = error_type, .val = typed_value.val });3994 return self.genTypedValue(.{ .ty = error_type, .val = tv.val });
3788 }3995 }
37893996
3790 return self.fail("TODO implement error union const of type '{}' (error)", .{typed_value.ty.fmtDebug()});3997 return self.fail("TODO implement error union const of type '{}' (error)", .{tv.ty.fmtDebug()});
3791 }3998 }
3792 },3999 },
3793 .ComptimeInt => unreachable, // semantic analysis prevents this4000 .ComptimeInt => unreachable, // semantic analysis prevents this
3794 .ComptimeFloat => unreachable, // semantic analysis prevents this4001 .ComptimeFloat => unreachable, // semantic analysis prevents this
3795 else => return self.fail("TODO implement const of type '{}'", .{typed_value.ty.fmtDebug()}),4002 .Type => unreachable,
4003 .EnumLiteral => unreachable,
4004 .Void => unreachable,
4005 .NoReturn => unreachable,
4006 .Undefined => unreachable,
4007 .Null => unreachable,
4008 .Opaque => unreachable,
4009 else => {},
3796 }4010 }
4011
4012 return self.fail("TODO implement const of type '{}'", .{tv.ty.fmtDebug()});
3797}4013}
37984014
3799fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) MCValue {4015fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) MCValue {
...@@ -3802,6 +4018,7 @@ fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) MCValue {...@@ -3802,6 +4018,7 @@ fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) MCValue {
3802 while (true) {4018 while (true) {
3803 i -= 1;4019 i -= 1;
3804 if (self.branch_stack.items[i].inst_table.get(inst)) |mcv| {4020 if (self.branch_stack.items[i].inst_table.get(inst)) |mcv| {
4021 log.debug("getResolvedInstValue %{} => {}", .{ inst, mcv });
3805 assert(mcv != .dead);4022 assert(mcv != .dead);
3806 return mcv;4023 return mcv;
3807 }4024 }
...@@ -3993,6 +4210,83 @@ fn lowerDeclRef(self: *Self, tv: TypedValue, decl_index: Module.Decl.Index) Inne...@@ -3993,6 +4210,83 @@ fn lowerDeclRef(self: *Self, tv: TypedValue, decl_index: Module.Decl.Index) Inne
3993 }4210 }
3994}4211}
39954212
4213fn minMax(
4214 self: *Self,
4215 tag: Air.Inst.Tag,
4216 lhs: MCValue,
4217 rhs: MCValue,
4218 lhs_ty: Type,
4219 rhs_ty: Type,
4220) InnerError!MCValue {
4221 const mod = self.bin_file.options.module.?;
4222 assert(lhs_ty.eql(rhs_ty, mod));
4223 switch (lhs_ty.zigTypeTag()) {
4224 .Float => return self.fail("TODO min/max on floats", .{}),
4225 .Vector => return self.fail("TODO min/max on vectors", .{}),
4226 .Int => {
4227 const int_info = lhs_ty.intInfo(self.target.*);
4228 if (int_info.bits <= 64) {
4229 // TODO skip register setting when one of the operands
4230 // is a small (fits in i13) immediate.
4231 const rhs_is_register = rhs == .register;
4232 const rhs_reg = if (rhs_is_register)
4233 rhs.register
4234 else
4235 try self.register_manager.allocReg(null, gp);
4236 const rhs_lock = self.register_manager.lockReg(rhs_reg);
4237 defer if (rhs_lock) |reg| self.register_manager.unlockReg(reg);
4238 if (!rhs_is_register) try self.genSetReg(rhs_ty, rhs_reg, rhs);
4239
4240 const result_reg = try self.register_manager.allocReg(null, gp);
4241 const result_lock = self.register_manager.lockReg(result_reg);
4242 defer if (result_lock) |reg| self.register_manager.unlockReg(reg);
4243 try self.genSetReg(lhs_ty, result_reg, lhs);
4244
4245 const cond_choose_rhs: Instruction.ICondition = switch (tag) {
4246 .max => switch (int_info.signedness) {
4247 .signed => Instruction.ICondition.gt,
4248 .unsigned => Instruction.ICondition.gu,
4249 },
4250 .min => switch (int_info.signedness) {
4251 .signed => Instruction.ICondition.lt,
4252 .unsigned => Instruction.ICondition.cs,
4253 },
4254 else => unreachable,
4255 };
4256
4257 _ = try self.addInst(.{
4258 .tag = .cmp,
4259 .data = .{
4260 .arithmetic_2op = .{
4261 .is_imm = false,
4262 .rs1 = result_reg,
4263 .rs2_or_imm = .{ .rs2 = rhs_reg },
4264 },
4265 },
4266 });
4267
4268 _ = try self.addInst(.{
4269 .tag = .movcc,
4270 .data = .{
4271 .conditional_move_int = .{
4272 .is_imm = false,
4273 .ccr = .xcc,
4274 .cond = .{ .icond = cond_choose_rhs },
4275 .rd = result_reg,
4276 .rs2_or_imm = .{ .rs2 = rhs_reg },
4277 },
4278 },
4279 });
4280
4281 return MCValue{ .register = result_reg };
4282 } else {
4283 return self.fail("TODO min/max on integers > u64/i64", .{});
4284 }
4285 },
4286 else => unreachable,
4287 }
4288}
4289
3996fn parseRegName(name: []const u8) ?Register {4290fn parseRegName(name: []const u8) ?Register {
3997 if (@hasDecl(Register, "parseRegName")) {4291 if (@hasDecl(Register, "parseRegName")) {
3998 return Register.parseRegName(name);4292 return Register.parseRegName(name);
...@@ -4017,6 +4311,7 @@ fn processDeath(self: *Self, inst: Air.Inst.Index) void {...@@ -4017,6 +4311,7 @@ fn processDeath(self: *Self, inst: Air.Inst.Index) void {
4017 const prev_value = self.getResolvedInstValue(inst);4311 const prev_value = self.getResolvedInstValue(inst);
4018 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];4312 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
4019 branch.inst_table.putAssumeCapacity(inst, .dead);4313 branch.inst_table.putAssumeCapacity(inst, .dead);
4314 log.debug("%{} death: {} -> .dead", .{ inst, prev_value });
4020 switch (prev_value) {4315 switch (prev_value) {
4021 .register => |reg| {4316 .register => |reg| {
4022 self.register_manager.freeReg(reg);4317 self.register_manager.freeReg(reg);
...@@ -4126,7 +4421,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {...@@ -4126,7 +4421,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {
4126 const ref_int = @enumToInt(inst);4421 const ref_int = @enumToInt(inst);
4127 if (ref_int < Air.Inst.Ref.typed_value_map.len) {4422 if (ref_int < Air.Inst.Ref.typed_value_map.len) {
4128 const tv = Air.Inst.Ref.typed_value_map[ref_int];4423 const tv = Air.Inst.Ref.typed_value_map[ref_int];
4129 if (!tv.ty.hasRuntimeBits() and !tv.ty.isError()) {4424 if (!tv.ty.hasRuntimeBitsIgnoreComptime() and !tv.ty.isError()) {
4130 return MCValue{ .none = {} };4425 return MCValue{ .none = {} };
4131 }4426 }
4132 return self.genTypedValue(tv);4427 return self.genTypedValue(tv);
...@@ -4134,7 +4429,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {...@@ -4134,7 +4429,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {
41344429
4135 // If the type has no codegen bits, no need to store it.4430 // If the type has no codegen bits, no need to store it.
4136 const inst_ty = self.air.typeOf(inst);4431 const inst_ty = self.air.typeOf(inst);
4137 if (!inst_ty.hasRuntimeBits() and !inst_ty.isError())4432 if (!inst_ty.hasRuntimeBitsIgnoreComptime() and !inst_ty.isError())
4138 return MCValue{ .none = {} };4433 return MCValue{ .none = {} };
41394434
4140 const inst_index = @intCast(Air.Inst.Index, ref_int - Air.Inst.Ref.typed_value_map.len);4435 const inst_index = @intCast(Air.Inst.Index, ref_int - Air.Inst.Ref.typed_value_map.len);
...@@ -4334,6 +4629,53 @@ fn structFieldPtr(self: *Self, inst: Air.Inst.Index, operand: Air.Inst.Ref, inde...@@ -4334,6 +4629,53 @@ fn structFieldPtr(self: *Self, inst: Air.Inst.Index, operand: Air.Inst.Ref, inde
4334 };4629 };
4335}4630}
43364631
4632fn trunc(
4633 self: *Self,
4634 maybe_inst: ?Air.Inst.Index,
4635 operand: MCValue,
4636 operand_ty: Type,
4637 dest_ty: Type,
4638) !MCValue {
4639 const info_a = operand_ty.intInfo(self.target.*);
4640 const info_b = dest_ty.intInfo(self.target.*);
4641
4642 if (info_b.bits <= 64) {
4643 const operand_reg = switch (operand) {
4644 .register => |r| r,
4645 else => operand_reg: {
4646 if (info_a.bits <= 64) {
4647 const reg = try self.copyToTmpRegister(operand_ty, operand);
4648 break :operand_reg reg;
4649 } else {
4650 return self.fail("TODO load least significant word into register", .{});
4651 }
4652 },
4653 };
4654 const lock = self.register_manager.lockReg(operand_reg);
4655 defer if (lock) |reg| self.register_manager.unlockReg(reg);
4656
4657 const dest_reg = if (maybe_inst) |inst| blk: {
4658 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
4659
4660 if (operand == .register and self.reuseOperand(inst, ty_op.operand, 0, operand)) {
4661 break :blk operand_reg;
4662 } else {
4663 const reg = try self.register_manager.allocReg(inst, gp);
4664 break :blk reg;
4665 }
4666 } else blk: {
4667 const reg = try self.register_manager.allocReg(null, gp);
4668 break :blk reg;
4669 };
4670
4671 try self.truncRegister(operand_reg, dest_reg, info_b.signedness, info_b.bits);
4672
4673 return MCValue{ .register = dest_reg };
4674 } else {
4675 return self.fail("TODO: truncate to ints > 64 bits", .{});
4676 }
4677}
4678
4337fn truncRegister(4679fn truncRegister(
4338 self: *Self,4680 self: *Self,
4339 operand_reg: Register,4681 operand_reg: Register,
test/behavior/align.zig+21
...@@ -18,6 +18,7 @@ test "global variable alignment" {...@@ -18,6 +18,7 @@ test "global variable alignment" {
18test "slicing array of length 1 can not assume runtime index is always zero" {18test "slicing array of length 1 can not assume runtime index is always zero" {
19 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2122
22 var runtime_index: usize = 1;23 var runtime_index: usize = 1;
23 const slice = @as(*align(4) [1]u8, &foo)[runtime_index..];24 const slice = @as(*align(4) [1]u8, &foo)[runtime_index..];
...@@ -62,6 +63,7 @@ test "alignment of struct with pointer has same alignment as usize" {...@@ -62,6 +63,7 @@ test "alignment of struct with pointer has same alignment as usize" {
62test "alignment and size of structs with 128-bit fields" {63test "alignment and size of structs with 128-bit fields" {
63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6567
66 const A = struct {68 const A = struct {
67 x: u128,69 x: u128,
...@@ -217,6 +219,7 @@ fn fnWithAlignedStack() i32 {...@@ -217,6 +219,7 @@ fn fnWithAlignedStack() i32 {
217219
218test "implicitly decreasing slice alignment" {220test "implicitly decreasing slice alignment" {
219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
220223
221 const a: u32 align(4) = 3;224 const a: u32 align(4) = 3;
222 const b: u32 align(8) = 4;225 const b: u32 align(8) = 4;
...@@ -228,6 +231,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {...@@ -228,6 +231,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {
228231
229test "specifying alignment allows pointer cast" {232test "specifying alignment allows pointer cast" {
230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
231235
232 try testBytesAlign(0x33);236 try testBytesAlign(0x33);
233}237}
...@@ -240,6 +244,7 @@ fn testBytesAlign(b: u8) !void {...@@ -240,6 +244,7 @@ fn testBytesAlign(b: u8) !void {
240test "@alignCast slices" {244test "@alignCast slices" {
241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;245 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243248
244 var array align(4) = [_]u32{ 1, 1 };249 var array align(4) = [_]u32{ 1, 1 };
245 const slice = array[0..];250 const slice = array[0..];
...@@ -257,6 +262,7 @@ test "return error union with 128-bit integer" {...@@ -257,6 +262,7 @@ test "return error union with 128-bit integer" {
257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
258 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;263 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
260266
261 try expect(3 == try give());267 try expect(3 == try give());
262}268}
...@@ -268,6 +274,7 @@ test "page aligned array on stack" {...@@ -268,6 +274,7 @@ test "page aligned array on stack" {
268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;274 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
269 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;275 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
270 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
271 // https://github.com/ziglang/zig/issues/13679278 // https://github.com/ziglang/zig/issues/13679
272 if (builtin.zig_backend == .stage2_llvm and279 if (builtin.zig_backend == .stage2_llvm and
273 builtin.cpu.arch == .aarch64 and280 builtin.cpu.arch == .aarch64 and
...@@ -296,6 +303,7 @@ fn noop4() align(4) void {}...@@ -296,6 +303,7 @@ fn noop4() align(4) void {}
296test "function alignment" {303test "function alignment" {
297 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
298 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
299307
300 // function alignment is a compile error on wasm32/wasm64308 // function alignment is a compile error on wasm32/wasm64
301 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;309 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
...@@ -310,6 +318,7 @@ test "function alignment" {...@@ -310,6 +318,7 @@ test "function alignment" {
310test "implicitly decreasing fn alignment" {318test "implicitly decreasing fn alignment" {
311 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
312 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;320 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
321 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
313322
314 // function alignment is a compile error on wasm32/wasm64323 // function alignment is a compile error on wasm32/wasm64
315 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;324 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
...@@ -332,6 +341,7 @@ fn alignedBig() align(16) i32 {...@@ -332,6 +341,7 @@ fn alignedBig() align(16) i32 {
332test "@alignCast functions" {341test "@alignCast functions" {
333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
335345
336 // function alignment is a compile error on wasm32/wasm64346 // function alignment is a compile error on wasm32/wasm64
337 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;347 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
...@@ -352,6 +362,7 @@ fn simple4() align(4) i32 {...@@ -352,6 +362,7 @@ fn simple4() align(4) i32 {
352test "function align expression depends on generic parameter" {362test "function align expression depends on generic parameter" {
353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
355366
356 // function alignment is a compile error on wasm32/wasm64367 // function alignment is a compile error on wasm32/wasm64
357 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;368 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
...@@ -373,6 +384,8 @@ test "function align expression depends on generic parameter" {...@@ -373,6 +384,8 @@ test "function align expression depends on generic parameter" {
373}384}
374385
375test "function callconv expression depends on generic parameter" {386test "function callconv expression depends on generic parameter" {
387 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
388
376 const S = struct {389 const S = struct {
377 fn doTheTest() !void {390 fn doTheTest() !void {
378 try expect(foobar(.C, 1) == 2);391 try expect(foobar(.C, 1) == 2);
...@@ -388,6 +401,8 @@ test "function callconv expression depends on generic parameter" {...@@ -388,6 +401,8 @@ test "function callconv expression depends on generic parameter" {
388}401}
389402
390test "runtime-known array index has best alignment possible" {403test "runtime-known array index has best alignment possible" {
404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
405
391 // take full advantage of over-alignment406 // take full advantage of over-alignment
392 var array align(4) = [_]u8{ 1, 2, 3, 4 };407 var array align(4) = [_]u8{ 1, 2, 3, 4 };
393 comptime assert(@TypeOf(&array[0]) == *align(4) u8);408 comptime assert(@TypeOf(&array[0]) == *align(4) u8);
...@@ -443,6 +458,7 @@ test "read 128-bit field from default aligned struct in stack memory" {...@@ -443,6 +458,7 @@ test "read 128-bit field from default aligned struct in stack memory" {
443 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;458 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
444 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;459 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
445 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
461 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
446462
447 var default_aligned = DefaultAligned{463 var default_aligned = DefaultAligned{
448 .nevermind = 1,464 .nevermind = 1,
...@@ -460,6 +476,7 @@ test "read 128-bit field from default aligned struct in global memory" {...@@ -460,6 +476,7 @@ test "read 128-bit field from default aligned struct in global memory" {
460 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;476 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
461 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;477 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
462 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;478 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
463480
464 try expect(12 == default_aligned_global.badguy);481 try expect(12 == default_aligned_global.badguy);
465}482}
...@@ -468,6 +485,7 @@ test "struct field explicit alignment" {...@@ -468,6 +485,7 @@ test "struct field explicit alignment" {
468 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;485 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
470 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
471489
472 const S = struct {490 const S = struct {
473 const Node = struct {491 const Node = struct {
...@@ -511,6 +529,7 @@ test "align(N) on functions" {...@@ -511,6 +529,7 @@ test "align(N) on functions" {
511 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO529 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
512 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO530 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
513 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO531 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
532 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
514533
515 // function alignment is a compile error on wasm32/wasm64534 // function alignment is a compile error on wasm32/wasm64
516 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;535 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
...@@ -527,6 +546,7 @@ test "comptime alloc alignment" {...@@ -527,6 +546,7 @@ test "comptime alloc alignment" {
527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO546 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO547 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO548 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
549 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
530550
531 comptime var bytes1 = [_]u8{0};551 comptime var bytes1 = [_]u8{0};
532 _ = bytes1;552 _ = bytes1;
...@@ -538,6 +558,7 @@ test "comptime alloc alignment" {...@@ -538,6 +558,7 @@ test "comptime alloc alignment" {
538558
539test "@alignCast null" {559test "@alignCast null" {
540 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;560 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
561 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
541562
542 var ptr: ?*anyopaque = null;563 var ptr: ?*anyopaque = null;
543 const aligned: ?*anyopaque = @alignCast(@alignOf(?*anyopaque), ptr);564 const aligned: ?*anyopaque = @alignCast(@alignOf(?*anyopaque), ptr);
test/behavior/array.zig+27
...@@ -20,6 +20,7 @@ test "array to slice" {...@@ -20,6 +20,7 @@ test "array to slice" {
20test "arrays" {20test "arrays" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
24 var array: [5]u32 = undefined;25 var array: [5]u32 = undefined;
2526
...@@ -46,6 +47,7 @@ fn getArrayLen(a: []const u32) usize {...@@ -46,6 +47,7 @@ fn getArrayLen(a: []const u32) usize {
4647
47test "array init with mult" {48test "array init with mult" {
48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4951
50 const a = 'a';52 const a = 'a';
51 var i: [8]u8 = [2]u8{ a, 'b' } ** 4;53 var i: [8]u8 = [2]u8{ a, 'b' } ** 4;
...@@ -85,6 +87,7 @@ const some_array = [_]u8{ 0, 1, 2, 3 };...@@ -85,6 +87,7 @@ const some_array = [_]u8{ 0, 1, 2, 3 };
85test "array literal with specified size" {87test "array literal with specified size" {
86 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;89 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
90 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8891
89 var array = [2]u8{ 1, 2 };92 var array = [2]u8{ 1, 2 };
90 try expect(array[0] == 1);93 try expect(array[0] == 1);
...@@ -92,6 +95,8 @@ test "array literal with specified size" {...@@ -92,6 +95,8 @@ test "array literal with specified size" {
92}95}
9396
94test "array len field" {97test "array len field" {
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
99
95 var arr = [4]u8{ 0, 0, 0, 0 };100 var arr = [4]u8{ 0, 0, 0, 0 };
96 var ptr = &arr;101 var ptr = &arr;
97 try expect(arr.len == 4);102 try expect(arr.len == 4);
...@@ -103,6 +108,7 @@ test "array len field" {...@@ -103,6 +108,7 @@ test "array len field" {
103108
104test "array with sentinels" {109test "array with sentinels" {
105 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
106112
107 const S = struct {113 const S = struct {
108 fn doTheTest(is_ct: bool) !void {114 fn doTheTest(is_ct: bool) !void {
...@@ -139,6 +145,7 @@ test "void arrays" {...@@ -139,6 +145,7 @@ test "void arrays" {
139test "nested arrays of strings" {145test "nested arrays of strings" {
140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
142149
143 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };150 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };
144 for (array_of_strings) |s, i| {151 for (array_of_strings) |s, i| {
...@@ -166,6 +173,7 @@ test "nested arrays of integers" {...@@ -166,6 +173,7 @@ test "nested arrays of integers" {
166173
167test "implicit comptime in array type size" {174test "implicit comptime in array type size" {
168 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
169177
170 var arr: [plusOne(10)]bool = undefined;178 var arr: [plusOne(10)]bool = undefined;
171 try expect(arr.len == 11);179 try expect(arr.len == 11);
...@@ -177,6 +185,7 @@ fn plusOne(x: u32) u32 {...@@ -177,6 +185,7 @@ fn plusOne(x: u32) u32 {
177185
178test "single-item pointer to array indexing and slicing" {186test "single-item pointer to array indexing and slicing" {
179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
180189
181 try testSingleItemPtrArrayIndexSlice();190 try testSingleItemPtrArrayIndexSlice();
182 comptime try testSingleItemPtrArrayIndexSlice();191 comptime try testSingleItemPtrArrayIndexSlice();
...@@ -201,6 +210,8 @@ fn doSomeMangling(array: *[4]u8) void {...@@ -201,6 +210,8 @@ fn doSomeMangling(array: *[4]u8) void {
201}210}
202211
203test "implicit cast zero sized array ptr to slice" {212test "implicit cast zero sized array ptr to slice" {
213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
214
204 {215 {
205 var b = "".*;216 var b = "".*;
206 const c: []const u8 = &b;217 const c: []const u8 = &b;
...@@ -216,6 +227,7 @@ test "implicit cast zero sized array ptr to slice" {...@@ -216,6 +227,7 @@ test "implicit cast zero sized array ptr to slice" {
216test "anonymous list literal syntax" {227test "anonymous list literal syntax" {
217 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
218 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
219231
220 const S = struct {232 const S = struct {
221 fn doTheTest() !void {233 fn doTheTest() !void {
...@@ -235,6 +247,7 @@ const Sub = struct { b: u8 };...@@ -235,6 +247,7 @@ const Sub = struct { b: u8 };
235const Str = struct { a: []Sub };247const Str = struct { a: []Sub };
236test "set global var array via slice embedded in struct" {248test "set global var array via slice embedded in struct" {
237 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;249 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
250 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238251
239 var s = Str{ .a = s_array[0..] };252 var s = Str{ .a = s_array[0..] };
240253
...@@ -250,6 +263,7 @@ test "set global var array via slice embedded in struct" {...@@ -250,6 +263,7 @@ test "set global var array via slice embedded in struct" {
250test "read/write through global variable array of struct fields initialized via array mult" {263test "read/write through global variable array of struct fields initialized via array mult" {
251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
253267
254 const S = struct {268 const S = struct {
255 fn doTheTest() !void {269 fn doTheTest() !void {
...@@ -269,6 +283,7 @@ test "read/write through global variable array of struct fields initialized via...@@ -269,6 +283,7 @@ test "read/write through global variable array of struct fields initialized via
269283
270test "implicit cast single-item pointer" {284test "implicit cast single-item pointer" {
271 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;285 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
272287
273 try testImplicitCastSingleItemPtr();288 try testImplicitCastSingleItemPtr();
274 comptime try testImplicitCastSingleItemPtr();289 comptime try testImplicitCastSingleItemPtr();
...@@ -287,6 +302,7 @@ fn testArrayByValAtComptime(b: [2]u8) u8 {...@@ -287,6 +302,7 @@ fn testArrayByValAtComptime(b: [2]u8) u8 {
287302
288test "comptime evaluating function that takes array by value" {303test "comptime evaluating function that takes array by value" {
289 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290306
291 const arr = [_]u8{ 1, 2 };307 const arr = [_]u8{ 1, 2 };
292 const x = comptime testArrayByValAtComptime(arr);308 const x = comptime testArrayByValAtComptime(arr);
...@@ -297,6 +313,7 @@ test "comptime evaluating function that takes array by value" {...@@ -297,6 +313,7 @@ test "comptime evaluating function that takes array by value" {
297313
298test "runtime initialize array elem and then implicit cast to slice" {314test "runtime initialize array elem and then implicit cast to slice" {
299 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;315 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
316 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
300317
301 var two: i32 = 2;318 var two: i32 = 2;
302 const x: []const i32 = &[_]i32{two};319 const x: []const i32 = &[_]i32{two};
...@@ -305,6 +322,7 @@ test "runtime initialize array elem and then implicit cast to slice" {...@@ -305,6 +322,7 @@ test "runtime initialize array elem and then implicit cast to slice" {
305322
306test "array literal as argument to function" {323test "array literal as argument to function" {
307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
325 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
308326
309 const S = struct {327 const S = struct {
310 fn entry(two: i32) !void {328 fn entry(two: i32) !void {
...@@ -332,6 +350,7 @@ test "array literal as argument to function" {...@@ -332,6 +350,7 @@ test "array literal as argument to function" {
332test "double nested array to const slice cast in array literal" {350test "double nested array to const slice cast in array literal" {
333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
335354
336 const S = struct {355 const S = struct {
337 fn entry(two: i32) !void {356 fn entry(two: i32) !void {
...@@ -392,6 +411,7 @@ test "double nested array to const slice cast in array literal" {...@@ -392,6 +411,7 @@ test "double nested array to const slice cast in array literal" {
392test "anonymous literal in array" {411test "anonymous literal in array" {
393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
394 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
395415
396 const S = struct {416 const S = struct {
397 const Foo = struct {417 const Foo = struct {
...@@ -415,6 +435,7 @@ test "anonymous literal in array" {...@@ -415,6 +435,7 @@ test "anonymous literal in array" {
415435
416test "access the null element of a null terminated array" {436test "access the null element of a null terminated array" {
417 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
418439
419 const S = struct {440 const S = struct {
420 fn doTheTest() !void {441 fn doTheTest() !void {
...@@ -431,6 +452,7 @@ test "access the null element of a null terminated array" {...@@ -431,6 +452,7 @@ test "access the null element of a null terminated array" {
431test "type deduction for array subscript expression" {452test "type deduction for array subscript expression" {
432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
434456
435 const S = struct {457 const S = struct {
436 fn doTheTest() !void {458 fn doTheTest() !void {
...@@ -448,6 +470,7 @@ test "type deduction for array subscript expression" {...@@ -448,6 +470,7 @@ test "type deduction for array subscript expression" {
448test "sentinel element count towards the ABI size calculation" {470test "sentinel element count towards the ABI size calculation" {
449 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO471 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
450 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO472 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
451474
452 const S = struct {475 const S = struct {
453 fn doTheTest() !void {476 fn doTheTest() !void {
...@@ -470,6 +493,7 @@ test "sentinel element count towards the ABI size calculation" {...@@ -470,6 +493,7 @@ test "sentinel element count towards the ABI size calculation" {
470493
471test "zero-sized array with recursive type definition" {494test "zero-sized array with recursive type definition" {
472 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
473497
474 const U = struct {498 const U = struct {
475 fn foo(comptime T: type, comptime n: usize) type {499 fn foo(comptime T: type, comptime n: usize) type {
...@@ -524,6 +548,7 @@ test "type coercion of pointer to anon struct literal to pointer to array" {...@@ -524,6 +548,7 @@ test "type coercion of pointer to anon struct literal to pointer to array" {
524 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO548 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
525 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO549 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
526 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO550 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
551 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
527552
528 const S = struct {553 const S = struct {
529 const U = union {554 const U = union {
...@@ -561,6 +586,7 @@ test "array with comptime-only element type" {...@@ -561,6 +586,7 @@ test "array with comptime-only element type" {
561test "tuple to array handles sentinel" {586test "tuple to array handles sentinel" {
562 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO587 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
563 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO588 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
589 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
564590
565 const S = struct {591 const S = struct {
566 const a = .{ 1, 2, 3 };592 const a = .{ 1, 2, 3 };
...@@ -573,6 +599,7 @@ test "array init of container level array variable" {...@@ -573,6 +599,7 @@ test "array init of container level array variable" {
573 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO599 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
574 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO600 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
575 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO601 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
602 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
576603
577 const S = struct {604 const S = struct {
578 var pair: [2]usize = .{ 1, 2 };605 var pair: [2]usize = .{ 1, 2 };
test/behavior/asm.zig+5
...@@ -22,6 +22,7 @@ test "module level assembly" {...@@ -22,6 +22,7 @@ test "module level assembly" {
22 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
26 if (is_x86_64_linux) {27 if (is_x86_64_linux) {
27 try expect(this_is_my_alias() == 1234);28 try expect(this_is_my_alias() == 1234);
...@@ -33,6 +34,7 @@ test "output constraint modifiers" {...@@ -33,6 +34,7 @@ test "output constraint modifiers" {
33 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO34 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
34 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO36 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
37 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3638
37 // This is only testing compilation.39 // This is only testing compilation.
38 var a: u32 = 3;40 var a: u32 = 3;
...@@ -53,6 +55,7 @@ test "alternative constraints" {...@@ -53,6 +55,7 @@ test "alternative constraints" {
53 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5659
57 // Make sure we allow commas as a separator for alternative constraints.60 // Make sure we allow commas as a separator for alternative constraints.
58 var a: u32 = 3;61 var a: u32 = 3;
...@@ -68,6 +71,7 @@ test "sized integer/float in asm input" {...@@ -68,6 +71,7 @@ test "sized integer/float in asm input" {
68 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7175
72 asm volatile (""76 asm volatile (""
73 :77 :
...@@ -116,6 +120,7 @@ test "struct/array/union types as input values" {...@@ -116,6 +120,7 @@ test "struct/array/union types as input values" {
116 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
119124
120 asm volatile (""125 asm volatile (""
121 :126 :
test/behavior/basic.zig+36
...@@ -45,6 +45,8 @@ const g1: i32 = 1233 + 1;...@@ -45,6 +45,8 @@ const g1: i32 = 1233 + 1;
45var g2: i32 = 0;45var g2: i32 = 0;
4646
47test "global variables" {47test "global variables" {
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49
48 try expect(g2 == 0);50 try expect(g2 == 0);
49 g2 = g1;51 g2 = g1;
50 try expect(g2 == 1234);52 try expect(g2 == 1234);
...@@ -112,18 +114,21 @@ fn first4KeysOfHomeRow() []const u8 {...@@ -112,18 +114,21 @@ fn first4KeysOfHomeRow() []const u8 {
112114
113test "return string from function" {115test "return string from function" {
114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
115118
116 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));119 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
117}120}
118121
119test "hex escape" {122test "hex escape" {
120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121125
122 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));126 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
123}127}
124128
125test "multiline string" {129test "multiline string" {
126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127132
128 const s1 =133 const s1 =
129 \\one134 \\one
...@@ -136,6 +141,7 @@ test "multiline string" {...@@ -136,6 +141,7 @@ test "multiline string" {
136141
137test "multiline string comments at start" {142test "multiline string comments at start" {
138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
139145
140 const s1 =146 const s1 =
141 //\\one147 //\\one
...@@ -148,6 +154,7 @@ test "multiline string comments at start" {...@@ -148,6 +154,7 @@ test "multiline string comments at start" {
148154
149test "multiline string comments at end" {155test "multiline string comments at end" {
150 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
151158
152 const s1 =159 const s1 =
153 \\one160 \\one
...@@ -160,6 +167,7 @@ test "multiline string comments at end" {...@@ -160,6 +167,7 @@ test "multiline string comments at end" {
160167
161test "multiline string comments in middle" {168test "multiline string comments in middle" {
162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;169 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163171
164 const s1 =172 const s1 =
165 \\one173 \\one
...@@ -172,6 +180,7 @@ test "multiline string comments in middle" {...@@ -172,6 +180,7 @@ test "multiline string comments in middle" {
172180
173test "multiline string comments at multiple places" {181test "multiline string comments at multiple places" {
174 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;182 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
175184
176 const s1 =185 const s1 =
177 \\one186 \\one
...@@ -190,6 +199,7 @@ test "string concatenation" {...@@ -190,6 +199,7 @@ test "string concatenation" {
190199
191test "array mult operator" {200test "array mult operator" {
192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
193203
194 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));204 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
195}205}
...@@ -199,6 +209,7 @@ const OpaqueB = opaque {};...@@ -199,6 +209,7 @@ const OpaqueB = opaque {};
199209
200test "opaque types" {210test "opaque types" {
201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
202213
203 try expect(*OpaqueA != *OpaqueB);214 try expect(*OpaqueA != *OpaqueB);
204215
...@@ -216,6 +227,7 @@ test "compile time global reinterpret" {...@@ -216,6 +227,7 @@ test "compile time global reinterpret" {
216227
217test "cast undefined" {228test "cast undefined" {
218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
219231
220 const array: [100]u8 = undefined;232 const array: [100]u8 = undefined;
221 const slice = @as([]const u8, &array);233 const slice = @as([]const u8, &array);
...@@ -228,6 +240,7 @@ fn testCastUndefined(x: []const u8) void {...@@ -228,6 +240,7 @@ fn testCastUndefined(x: []const u8) void {
228test "implicit cast after unreachable" {240test "implicit cast after unreachable" {
229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
231244
232 try expect(outer() == 1234);245 try expect(outer() == 1234);
233}246}
...@@ -285,6 +298,7 @@ fn fB() []const u8 {...@@ -285,6 +298,7 @@ fn fB() []const u8 {
285298
286test "call function pointer in struct" {299test "call function pointer in struct" {
287 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;300 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
301 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
288302
289 try expect(mem.eql(u8, f3(true), "a"));303 try expect(mem.eql(u8, f3(true), "a"));
290 try expect(mem.eql(u8, f3(false), "b"));304 try expect(mem.eql(u8, f3(false), "b"));
...@@ -326,6 +340,7 @@ test "call result of if else expression" {...@@ -326,6 +340,7 @@ test "call result of if else expression" {
326 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;340 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
327 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;341 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
328 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;342 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
329344
330 try expect(mem.eql(u8, f2(true), "a"));345 try expect(mem.eql(u8, f2(true), "a"));
331 try expect(mem.eql(u8, f2(false), "b"));346 try expect(mem.eql(u8, f2(false), "b"));
...@@ -337,6 +352,7 @@ fn f2(x: bool) []const u8 {...@@ -337,6 +352,7 @@ fn f2(x: bool) []const u8 {
337test "memcpy and memset intrinsics" {352test "memcpy and memset intrinsics" {
338 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
339 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
340356
341 try testMemcpyMemset();357 try testMemcpyMemset();
342 // TODO add comptime test coverage358 // TODO add comptime test coverage
...@@ -367,6 +383,7 @@ fn hereIsAnOpaqueType(ptr: *OpaqueA) *OpaqueA {...@@ -367,6 +383,7 @@ fn hereIsAnOpaqueType(ptr: *OpaqueA) *OpaqueA {
367test "take address of parameter" {383test "take address of parameter" {
368 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
386 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
370387
371 try testTakeAddressOfParameter(12.34);388 try testTakeAddressOfParameter(12.34);
372}389}
...@@ -443,6 +460,7 @@ fn testArray2DConstDoublePtr(ptr: *const f32) !void {...@@ -443,6 +460,7 @@ fn testArray2DConstDoublePtr(ptr: *const f32) !void {
443460
444test "double implicit cast in same expression" {461test "double implicit cast in same expression" {
445 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;462 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
463 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
446464
447 var x = @as(i32, @as(u16, nine()));465 var x = @as(i32, @as(u16, nine()));
448 try expect(x == 9);466 try expect(x == 9);
...@@ -453,6 +471,7 @@ fn nine() u8 {...@@ -453,6 +471,7 @@ fn nine() u8 {
453471
454test "struct inside function" {472test "struct inside function" {
455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;473 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
474 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
456475
457 try testStructInFn();476 try testStructInFn();
458 comptime try testStructInFn();477 comptime try testStructInFn();
...@@ -474,6 +493,7 @@ fn testStructInFn() !void {...@@ -474,6 +493,7 @@ fn testStructInFn() !void {
474493
475test "fn call returning scalar optional in equality expression" {494test "fn call returning scalar optional in equality expression" {
476 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
496 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
477 try expect(getNull() == null);497 try expect(getNull() == null);
478}498}
479499
...@@ -484,6 +504,7 @@ fn getNull() ?*i32 {...@@ -484,6 +504,7 @@ fn getNull() ?*i32 {
484test "global variable assignment with optional unwrapping with var initialized to undefined" {504test "global variable assignment with optional unwrapping with var initialized to undefined" {
485 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;505 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
487508
488 const S = struct {509 const S = struct {
489 var data: i32 = 1234;510 var data: i32 = 1234;
...@@ -501,6 +522,7 @@ var global_foo: *i32 = undefined;...@@ -501,6 +522,7 @@ var global_foo: *i32 = undefined;
501522
502test "peer result location with typed parent, runtime condition, comptime prongs" {523test "peer result location with typed parent, runtime condition, comptime prongs" {
503 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;524 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
504526
505 const S = struct {527 const S = struct {
506 fn doTheTest(arg: i32) i32 {528 fn doTheTest(arg: i32) i32 {
...@@ -592,6 +614,8 @@ test "self reference through fn ptr field" {...@@ -592,6 +614,8 @@ test "self reference through fn ptr field" {
592}614}
593615
594test "global variable initialized to global variable array element" {616test "global variable initialized to global variable array element" {
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618
595 try expect(global_ptr == &gdt[0]);619 try expect(global_ptr == &gdt[0]);
596}620}
597const GDTEntry = struct {621const GDTEntry = struct {
...@@ -605,6 +629,7 @@ var global_ptr = &gdt[0];...@@ -605,6 +629,7 @@ var global_ptr = &gdt[0];
605629
606test "global constant is loaded with a runtime-known index" {630test "global constant is loaded with a runtime-known index" {
607 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;631 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
632 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
608633
609 const S = struct {634 const S = struct {
610 fn doTheTest() !void {635 fn doTheTest() !void {
...@@ -636,6 +661,7 @@ test "string escapes" {...@@ -636,6 +661,7 @@ test "string escapes" {
636 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;661 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
637 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;662 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
638 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;663 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
664 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
639665
640 try expectEqualStrings("\"", "\x22");666 try expectEqualStrings("\"", "\x22");
641 try expectEqualStrings("\'", "\x27");667 try expectEqualStrings("\'", "\x27");
...@@ -667,6 +693,7 @@ test "string concatenation" {...@@ -667,6 +693,7 @@ test "string concatenation" {
667 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;693 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
668 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;694 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
669 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;695 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
696 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
670697
671 const a = "OK" ++ " IT " ++ "WORKED";698 const a = "OK" ++ " IT " ++ "WORKED";
672 const b = "OK IT WORKED";699 const b = "OK IT WORKED";
...@@ -694,6 +721,7 @@ test "comptime manyptr concatenation" {...@@ -694,6 +721,7 @@ test "comptime manyptr concatenation" {
694 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;721 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
695 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;722 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
696 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;723 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
724 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
697725
698 const s = "epic";726 const s = "epic";
699 const actual = manyptrConcat(s);727 const actual = manyptrConcat(s);
...@@ -714,6 +742,7 @@ test "comptime manyptr concatenation" {...@@ -714,6 +742,7 @@ test "comptime manyptr concatenation" {
714test "result location is optional inside error union" {742test "result location is optional inside error union" {
715 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO743 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
716 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
745 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
717746
718 const x = maybe(true) catch unreachable;747 const x = maybe(true) catch unreachable;
719 try expect(x.? == 42);748 try expect(x.? == 42);
...@@ -728,6 +757,7 @@ fn maybe(x: bool) anyerror!?u32 {...@@ -728,6 +757,7 @@ fn maybe(x: bool) anyerror!?u32 {
728757
729test "auto created variables have correct alignment" {758test "auto created variables have correct alignment" {
730 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO759 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
760 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
731761
732 const S = struct {762 const S = struct {
733 fn foo(str: [*]const u8) u32 {763 fn foo(str: [*]const u8) u32 {
...@@ -746,6 +776,7 @@ test "extern variable with non-pointer opaque type" {...@@ -746,6 +776,7 @@ test "extern variable with non-pointer opaque type" {
746 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO776 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
747 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO777 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
748 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO778 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
779 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
749780
750 @export(var_to_export, .{ .name = "opaque_extern_var" });781 @export(var_to_export, .{ .name = "opaque_extern_var" });
751 try expect(@ptrCast(*align(1) u32, &opaque_extern_var).* == 42);782 try expect(@ptrCast(*align(1) u32, &opaque_extern_var).* == 42);
...@@ -787,6 +818,7 @@ test "if expression type coercion" {...@@ -787,6 +818,7 @@ test "if expression type coercion" {
787test "discarding the result of various expressions" {818test "discarding the result of various expressions" {
788 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO819 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
789 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
821 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
790822
791 const S = struct {823 const S = struct {
792 fn foo() !u32 {824 fn foo() !u32 {
...@@ -826,6 +858,7 @@ test "labeled block implicitly ends in a break" {...@@ -826,6 +858,7 @@ test "labeled block implicitly ends in a break" {
826858
827test "catch in block has correct result location" {859test "catch in block has correct result location" {
828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;860 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
861 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
829862
830 const S = struct {863 const S = struct {
831 fn open() error{A}!@This() {864 fn open() error{A}!@This() {
...@@ -856,6 +889,7 @@ test "labeled block with runtime branch forwards its result location type to bre...@@ -856,6 +889,7 @@ test "labeled block with runtime branch forwards its result location type to bre
856889
857test "try in labeled block doesn't cast to wrong type" {890test "try in labeled block doesn't cast to wrong type" {
858 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;891 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
892 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
859893
860 const S = struct {894 const S = struct {
861 a: u32,895 a: u32,
...@@ -883,6 +917,7 @@ test "weird array and tuple initializations" {...@@ -883,6 +917,7 @@ test "weird array and tuple initializations" {
883 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO917 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO918 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
885 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO919 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
920 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
886921
887 const E = enum { a, b };922 const E = enum { a, b };
888 const S = struct { e: E };923 const S = struct { e: E };
...@@ -1000,6 +1035,7 @@ comptime {...@@ -1000,6 +1035,7 @@ comptime {
10001035
1001test "switch inside @as gets correct type" {1036test "switch inside @as gets correct type" {
1002 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1037 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1038 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10031039
1004 var a: u32 = 0;1040 var a: u32 = 0;
1005 var b: [2]u32 = undefined;1041 var b: [2]u32 = undefined;
test/behavior/bit_shifting.zig+2
...@@ -64,6 +64,8 @@ test "sharded table" {...@@ -64,6 +64,8 @@ test "sharded table" {
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68
67 // realistic 16-way sharding69 // realistic 16-way sharding
68 try testShardedTable(u32, 4, 8);70 try testShardedTable(u32, 4, 8);
6971
test/behavior/bitcast.zig+10
...@@ -21,6 +21,7 @@ test "@bitCast iX -> uX (8, 16, 128)" {...@@ -21,6 +21,7 @@ test "@bitCast iX -> uX (8, 16, 128)" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2425
25 const bit_values = [_]usize{ 8, 16, 128 };26 const bit_values = [_]usize{ 8, 16, 128 };
2627
...@@ -36,6 +37,7 @@ test "@bitCast iX -> uX exotic integers" {...@@ -36,6 +37,7 @@ test "@bitCast iX -> uX exotic integers" {
36 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;37 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3941
40 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };42 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };
4143
...@@ -82,6 +84,7 @@ test "bitcast uX to bytes" {...@@ -82,6 +84,7 @@ test "bitcast uX to bytes" {
82 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;84 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;85 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8588
86 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };89 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };
87 inline for (bit_values) |bits| {90 inline for (bit_values) |bits| {
...@@ -158,6 +161,7 @@ test "@bitCast packed structs at runtime and comptime" {...@@ -158,6 +161,7 @@ test "@bitCast packed structs at runtime and comptime" {
158 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;161 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
159 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
161165
162 const Full = packed struct {166 const Full = packed struct {
163 number: u16,167 number: u16,
...@@ -182,6 +186,7 @@ test "@bitCast packed structs at runtime and comptime" {...@@ -182,6 +186,7 @@ test "@bitCast packed structs at runtime and comptime" {
182186
183test "@bitCast extern structs at runtime and comptime" {187test "@bitCast extern structs at runtime and comptime" {
184 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;188 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
185190
186 const Full = extern struct {191 const Full = extern struct {
187 number: u16,192 number: u16,
...@@ -214,6 +219,7 @@ test "bitcast packed struct to integer and back" {...@@ -214,6 +219,7 @@ test "bitcast packed struct to integer and back" {
214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;219 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;221 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217223
218 const LevelUpMove = packed struct {224 const LevelUpMove = packed struct {
219 move_id: u9,225 move_id: u9,
...@@ -235,6 +241,7 @@ test "bitcast packed struct to integer and back" {...@@ -235,6 +241,7 @@ test "bitcast packed struct to integer and back" {
235test "implicit cast to error union by returning" {241test "implicit cast to error union by returning" {
236 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;242 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;243 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238245
239 const S = struct {246 const S = struct {
240 fn entry() !void {247 fn entry() !void {
...@@ -289,6 +296,7 @@ test "@bitCast packed struct of floats" {...@@ -289,6 +296,7 @@ test "@bitCast packed struct of floats" {
289 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;296 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
290 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;297 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;298 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
299 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
292300
293 const Foo = packed struct {301 const Foo = packed struct {
294 a: f16 = 0,302 a: f16 = 0,
...@@ -324,6 +332,7 @@ test "comptime @bitCast packed struct to int and back" {...@@ -324,6 +332,7 @@ test "comptime @bitCast packed struct to int and back" {
324 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;332 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
325 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
326 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
335 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
327336
328 const S = packed struct {337 const S = packed struct {
329 void: void = {},338 void: void = {},
...@@ -362,6 +371,7 @@ test "comptime bitcast with fields following f80" {...@@ -362,6 +371,7 @@ test "comptime bitcast with fields following f80" {
362 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;371 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
363 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;372 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;373 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
365375
366 const FloatT = extern struct { f: f80, x: u128 align(16) };376 const FloatT = extern struct { f: f80, x: u128 align(16) };
367 const x: FloatT = .{ .f = 0.5, .x = 123 };377 const x: FloatT = .{ .f = 0.5, .x = 123 };
test/behavior/bitreverse.zig+4
...@@ -14,6 +14,7 @@ test "@bitReverse" {...@@ -14,6 +14,7 @@ test "@bitReverse" {
14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718
18 comptime try testBitReverse();19 comptime try testBitReverse();
19 try testBitReverse();20 try testBitReverse();
...@@ -99,6 +100,7 @@ test "bitReverse vectors u8" {...@@ -99,6 +100,7 @@ test "bitReverse vectors u8" {
99 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;100 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102104
103 comptime try vector8();105 comptime try vector8();
104 try vector8();106 try vector8();
...@@ -117,6 +119,7 @@ test "bitReverse vectors u16" {...@@ -117,6 +119,7 @@ test "bitReverse vectors u16" {
117 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120123
121 comptime try vector16();124 comptime try vector16();
122 try vector16();125 try vector16();
...@@ -135,6 +138,7 @@ test "bitReverse vectors u24" {...@@ -135,6 +138,7 @@ test "bitReverse vectors u24" {
135 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;138 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
136 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
141 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
138142
139 comptime try vector24();143 comptime try vector24();
140 try vector24();144 try vector24();
test/behavior/bugs/10147.zig+1
...@@ -7,6 +7,7 @@ test "test calling @clz on both vector and scalar inputs" {...@@ -7,6 +7,7 @@ test "test calling @clz on both vector and scalar inputs" {
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
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_sparc64) return error.SkipZigTest; // TODO
1011
11 var x: u32 = 0x1;12 var x: u32 = 0x1;
12 var y: @Vector(4, u32) = [_]u32{ 0x1, 0x1, 0x1, 0x1 };13 var y: @Vector(4, u32) = [_]u32{ 0x1, 0x1, 0x1, 0x1 };
test/behavior/bugs/1076.zig+1
...@@ -6,6 +6,7 @@ const expect = std.testing.expect;...@@ -6,6 +6,7 @@ const expect = std.testing.expect;
6test "comptime code should not modify constant data" {6test "comptime code should not modify constant data" {
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 try testCastPtrOfArrayToSliceAndPtr();11 try testCastPtrOfArrayToSliceAndPtr();
11 comptime try testCastPtrOfArrayToSliceAndPtr();12 comptime try testCastPtrOfArrayToSliceAndPtr();
test/behavior/bugs/10970.zig+1
...@@ -7,6 +7,7 @@ test "breaking from a loop in an if statement" {...@@ -7,6 +7,7 @@ test "breaking from a loop in an if statement" {
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
11 var cond = true;12 var cond = true;
12 const opt = while (cond) {13 const opt = while (cond) {
test/behavior/bugs/11046.zig+1
...@@ -13,6 +13,7 @@ test "fixed" {...@@ -13,6 +13,7 @@ test "fixed" {
13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617
17 bar() catch |err| switch (err) {18 bar() catch |err| switch (err) {
18 error.Foo => {}, // error: expected (inferred error set of bar), found error{Foo}19 error.Foo => {}, // error: expected (inferred error set of bar), found error{Foo}
test/behavior/bugs/11139.zig+1
...@@ -5,6 +5,7 @@ const expect = std.testing.expect;...@@ -5,6 +5,7 @@ const expect = std.testing.expect;
5test "store array of array of structs at comptime" {5test "store array of array of structs at comptime" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 try expect(storeArrayOfArrayOfStructs() == 15);10 try expect(storeArrayOfArrayOfStructs() == 15);
10 comptime try expect(storeArrayOfArrayOfStructs() == 15);11 comptime try expect(storeArrayOfArrayOfStructs() == 15);
test/behavior/bugs/11165.zig+4
...@@ -1,6 +1,8 @@...@@ -1,6 +1,8 @@
1const builtin = @import("builtin");1const builtin = @import("builtin");
22
3test "bytes" {3test "bytes" {
4 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5
4 const S = struct {6 const S = struct {
5 a: u32,7 a: u32,
6 c: [5]u8,8 c: [5]u8,
...@@ -20,6 +22,8 @@ test "bytes" {...@@ -20,6 +22,8 @@ test "bytes" {
20}22}
2123
22test "aggregate" {24test "aggregate" {
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26
23 const S = struct {27 const S = struct {
24 a: u32,28 a: u32,
25 c: [5]u8,29 c: [5]u8,
test/behavior/bugs/11181.zig+2
...@@ -12,6 +12,8 @@ test "const inferred array of slices" {...@@ -12,6 +12,8 @@ test "const inferred array of slices" {
12}12}
1313
14test "var inferred array of slices" {14test "var inferred array of slices" {
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16
15 const T = struct { v: bool };17 const T = struct { v: bool };
1618
17 var decls = [_][]const T{19 var decls = [_][]const T{
test/behavior/bugs/11816.zig+1
...@@ -3,6 +3,7 @@ const builtin = @import("builtin");...@@ -3,6 +3,7 @@ const builtin = @import("builtin");
33
4test {4test {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67
7 var x: u32 = 3;8 var x: u32 = 3;
8 const val: usize = while (true) switch (x) {9 const val: usize = while (true) switch (x) {
test/behavior/bugs/12551.zig+1
...@@ -3,6 +3,7 @@ const builtin = @import("builtin");...@@ -3,6 +3,7 @@ const builtin = @import("builtin");
33
4test {4test {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67
7 try std.testing.expect(for ([1]u8{0}) |x| {8 try std.testing.expect(for ([1]u8{0}) |x| {
8 if (x == 0) break true;9 if (x == 0) break true;
test/behavior/bugs/12680.zig+1
...@@ -10,6 +10,7 @@ test "export a function twice" {...@@ -10,6 +10,7 @@ test "export a function twice" {
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;11 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1314
14 // If it exports the function correctly, `test_func` and `testFunc` will points to the same address.15 // If it exports the function correctly, `test_func` and `testFunc` will points to the same address.
15 try expectEqual(test_func(), other_file.testFunc());16 try expectEqual(test_func(), other_file.testFunc());
test/behavior/bugs/1277.zig+1
...@@ -15,6 +15,7 @@ test "don't emit an LLVM global for a const function when it's in an optional in...@@ -15,6 +15,7 @@ test "don't emit an LLVM global for a const function when it's in an optional in
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
19 try std.testing.expect(s.f.?() == 1234);20 try std.testing.expect(s.f.?() == 1234);
20}21}
test/behavior/bugs/12776.zig+1
...@@ -32,6 +32,7 @@ test {...@@ -32,6 +32,7 @@ test {
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
3536
36 var ram = try RAM.new();37 var ram = try RAM.new();
37 var cpu = try CPU.new(&ram);38 var cpu = try CPU.new(&ram);
test/behavior/bugs/12801-2.zig+1
...@@ -17,6 +17,7 @@ test {...@@ -17,6 +17,7 @@ test {
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2021
21 const a: Auto = .{ .offset = 16, .capacity = Auto.capacity };22 const a: Auto = .{ .offset = 16, .capacity = Auto.capacity };
22 try std.testing.expect(a.capacity() == 32);23 try std.testing.expect(a.capacity() == 32);
test/behavior/bugs/12890.zig+1
...@@ -11,6 +11,7 @@ fn a(b: []u3, c: u3) void {...@@ -11,6 +11,7 @@ fn a(b: []u3, c: u3) void {
11test {11test {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1415
15 var arr: [8]u3 = undefined;16 var arr: [8]u3 = undefined;
16 a(&arr, 5);17 a(&arr, 5);
test/behavior/bugs/12972.zig+1
...@@ -5,6 +5,7 @@ pub fn f(_: [:null]const ?u8) void {}...@@ -5,6 +5,7 @@ pub fn f(_: [:null]const ?u8) void {}
5test {5test {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 const c: u8 = 42;10 const c: u8 = 42;
10 f(&[_:null]?u8{c});11 f(&[_:null]?u8{c});
test/behavior/bugs/13063.zig+5
...@@ -1,8 +1,11 @@...@@ -1,8 +1,11 @@
1const std = @import("std");1const std = @import("std");
2const builtin = @import("builtin");
2const expect = std.testing.expect;3const expect = std.testing.expect;
34
4var pos = [2]f32{ 0.0, 0.0 };5var pos = [2]f32{ 0.0, 0.0 };
5test "store to global array" {6test "store to global array" {
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8
6 try expect(pos[1] == 0.0);9 try expect(pos[1] == 0.0);
7 pos = [2]f32{ 0.0, 1.0 };10 pos = [2]f32{ 0.0, 1.0 };
8 try expect(pos[1] == 1.0);11 try expect(pos[1] == 1.0);
...@@ -10,6 +13,8 @@ test "store to global array" {...@@ -10,6 +13,8 @@ test "store to global array" {
1013
11var vpos = @Vector(2, f32){ 0.0, 0.0 };14var vpos = @Vector(2, f32){ 0.0, 0.0 };
12test "store to global vector" {15test "store to global vector" {
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17
13 try expect(vpos[1] == 0.0);18 try expect(vpos[1] == 0.0);
14 vpos = @Vector(2, f32){ 0.0, 1.0 };19 vpos = @Vector(2, f32){ 0.0, 1.0 };
15 try expect(vpos[1] == 1.0);20 try expect(vpos[1] == 1.0);
test/behavior/bugs/13064.zig+1
...@@ -5,6 +5,7 @@ const expect = std.testing.expect;...@@ -5,6 +5,7 @@ const expect = std.testing.expect;
5test {5test {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 var x: [10][10]u32 = undefined;10 var x: [10][10]u32 = undefined;
1011
test/behavior/bugs/13065.zig+1
...@@ -10,6 +10,7 @@ const U = union(enum) {...@@ -10,6 +10,7 @@ const U = union(enum) {
10test {10test {
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1314
14 var x = U{ .array = undefined };15 var x = U{ .array = undefined };
1516
test/behavior/bugs/13068.zig+1
...@@ -9,6 +9,7 @@ test {...@@ -9,6 +9,7 @@ test {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
13 list.items.len = 0;14 list.items.len = 0;
14}15}
test/behavior/bugs/13069.zig+1
...@@ -6,6 +6,7 @@ test {...@@ -6,6 +6,7 @@ test {
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 var opt_x: ?[3]f32 = [_]f32{0.0} ** 3;11 var opt_x: ?[3]f32 = [_]f32{0.0} ** 3;
1112
test/behavior/bugs/13128.zig+1
...@@ -16,6 +16,7 @@ test "runtime union init, most-aligned field != largest" {...@@ -16,6 +16,7 @@ test "runtime union init, most-aligned field != largest" {
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1920
20 var x: u8 = 1;21 var x: u8 = 1;
21 try foo(.{ .x = x });22 try foo(.{ .x = x });
test/behavior/bugs/13159.zig+2
...@@ -1,3 +1,4 @@...@@ -1,3 +1,4 @@
1const builtin = @import("builtin");
1const std = @import("std");2const std = @import("std");
2const expect = std.testing.expect;3const expect = std.testing.expect;
34
...@@ -9,6 +10,7 @@ const Bar = packed struct {...@@ -9,6 +10,7 @@ const Bar = packed struct {
9};10};
1011
11test {12test {
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 var foo = Bar.Baz.fizz;14 var foo = Bar.Baz.fizz;
13 try expect(foo == .fizz);15 try expect(foo == .fizz);
14}16}
test/behavior/bugs/13164.zig+1
...@@ -11,6 +11,7 @@ test {...@@ -11,6 +11,7 @@ test {
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1415
15 var x: u32 = 42;16 var x: u32 = 42;
16 try setLimits(x, null);17 try setLimits(x, null);
test/behavior/bugs/13285.zig+4
...@@ -1,8 +1,12 @@...@@ -1,8 +1,12 @@
1const builtin = @import("builtin");
2
1const Crasher = struct {3const Crasher = struct {
2 lets_crash: u64 = 0,4 lets_crash: u64 = 0,
3};5};
46
5test {7test {
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9
6 var a: Crasher = undefined;10 var a: Crasher = undefined;
7 var crasher_ptr = &a;11 var crasher_ptr = &a;
8 var crasher_local = crasher_ptr.*;12 var crasher_local = crasher_ptr.*;
test/behavior/bugs/13664.zig+1
...@@ -17,6 +17,7 @@ test {...@@ -17,6 +17,7 @@ test {
17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2021
21 const timestamp: i64 = value();22 const timestamp: i64 = value();
22 const id = ID{ .fields = Fields{23 const id = ID{ .fields = Fields{
test/behavior/bugs/13785.zig+1
...@@ -6,6 +6,7 @@ test {...@@ -6,6 +6,7 @@ test {
6 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 var a: u8 = 0;11 var a: u8 = 0;
11 try std.io.null_writer.print("\n{} {}\n", .{ a, S{} });12 try std.io.null_writer.print("\n{} {}\n", .{ a, S{} });
test/behavior/bugs/1381.zig+1
...@@ -16,6 +16,7 @@ test "union that needs padding bytes inside an array" {...@@ -16,6 +16,7 @@ test "union that needs padding bytes inside an array" {
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;18 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1920
20 var as = [_]A{21 var as = [_]A{
21 A{ .B = B{ .D = 1 } },22 A{ .B = B{ .D = 1 } },
test/behavior/bugs/1442.zig+1
...@@ -10,6 +10,7 @@ test "const error union field alignment" {...@@ -10,6 +10,7 @@ test "const error union field alignment" {
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13 var union_or_err: anyerror!Union = Union{ .Color = 1234 };14 var union_or_err: anyerror!Union = Union{ .Color = 1234 };
14 try std.testing.expect((union_or_err catch unreachable).Color == 1234);15 try std.testing.expect((union_or_err catch unreachable).Color == 1234);
15}16}
test/behavior/bugs/1486.zig+1
...@@ -7,6 +7,7 @@ var global: usize = 123;...@@ -7,6 +7,7 @@ var global: usize = 123;
77
8test "constant pointer to global variable causes runtime load" {8test "constant pointer to global variable causes runtime load" {
9 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 global = 1234;11 global = 1234;
11 try expect(&global == ptr);12 try expect(&global == ptr);
12 try expect(ptr.* == 1234);13 try expect(ptr.* == 1234);
test/behavior/bugs/1607.zig+1
...@@ -14,6 +14,7 @@ test "slices pointing at the same address as global array." {...@@ -14,6 +14,7 @@ test "slices pointing at the same address as global array." {
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 try checkAddress(&a);18 try checkAddress(&a);
18 comptime try checkAddress(&a);19 comptime try checkAddress(&a);
19}20}
test/behavior/bugs/1735.zig+1
...@@ -43,6 +43,7 @@ const a = struct {...@@ -43,6 +43,7 @@ const a = struct {
4343
44test "initialization" {44test "initialization" {
45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
46 var t = a.init();47 var t = a.init();
47 try std.testing.expect(t.foo.len == 0);48 try std.testing.expect(t.foo.len == 0);
48}49}
test/behavior/bugs/1851.zig+1
...@@ -7,6 +7,7 @@ test "allocation and looping over 3-byte integer" {...@@ -7,6 +7,7 @@ test "allocation and looping over 3-byte integer" {
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
11 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .macos) {12 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .macos) {
12 return error.SkipZigTest; // TODO13 return error.SkipZigTest; // TODO
test/behavior/bugs/2006.zig+2
...@@ -6,6 +6,8 @@ const S = struct {...@@ -6,6 +6,8 @@ const S = struct {
6 p: *S,6 p: *S,
7};7};
8test "bug 2006" {8test "bug 2006" {
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10
9 var a: S = undefined;11 var a: S = undefined;
10 a = S{ .p = undefined };12 a = S{ .p = undefined };
11 try expect(@sizeOf(S) != 0);13 try expect(@sizeOf(S) != 0);
test/behavior/bugs/2114.zig+1
...@@ -12,6 +12,7 @@ test "fixed" {...@@ -12,6 +12,7 @@ test "fixed" {
12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1516
16 try testCtz();17 try testCtz();
17 comptime try testCtz();18 comptime try testCtz();
test/behavior/bugs/2578.zig+1
...@@ -15,6 +15,7 @@ test "fixed" {...@@ -15,6 +15,7 @@ test "fixed" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
19 bar(t);20 bar(t);
20}21}
test/behavior/bugs/2692.zig+1
...@@ -6,6 +6,7 @@ fn foo(a: []u8) void {...@@ -6,6 +6,7 @@ fn foo(a: []u8) void {
66
7test "address of 0 length array" {7test "address of 0 length array" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 var pt: [0]u8 = undefined;11 var pt: [0]u8 = undefined;
11 foo(&pt);12 foo(&pt);
test/behavior/bugs/2889.zig+1
...@@ -29,6 +29,7 @@ fn parseNote() ?i32 {...@@ -29,6 +29,7 @@ fn parseNote() ?i32 {
29test "fixed" {29test "fixed" {
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3233
33 const result = parseNote();34 const result = parseNote();
34 try std.testing.expect(result.? == 9);35 try std.testing.expect(result.? == 9);
test/behavior/bugs/3007.zig+1
...@@ -22,6 +22,7 @@ test "fixed" {...@@ -22,6 +22,7 @@ test "fixed" {
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
26 default_foo = get_foo() catch null; // This Line27 default_foo = get_foo() catch null; // This Line
27 try std.testing.expect(!default_foo.?.free);28 try std.testing.expect(!default_foo.?.free);
test/behavior/bugs/3046.zig+1
...@@ -15,6 +15,7 @@ var some_struct: SomeStruct = undefined;...@@ -15,6 +15,7 @@ var some_struct: SomeStruct = undefined;
15test "fixed" {15test "fixed" {
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
19 some_struct = SomeStruct{20 some_struct = SomeStruct{
20 .field = couldFail() catch @as(i32, 0),21 .field = couldFail() catch @as(i32, 0),
test/behavior/bugs/3112.zig+1
...@@ -14,6 +14,7 @@ fn prev(p: ?State) void {...@@ -14,6 +14,7 @@ fn prev(p: ?State) void {
14test "zig test crash" {14test "zig test crash" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 var global: State = undefined;18 var global: State = undefined;
18 global.enter = prev;19 global.enter = prev;
19 global.enter(null);20 global.enter(null);
test/behavior/bugs/3586.zig+2
...@@ -7,6 +7,8 @@ const Container = struct {...@@ -7,6 +7,8 @@ const Container = struct {
7};7};
88
9test "fixed" {9test "fixed" {
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11
10 var ctr = Container{12 var ctr = Container{
11 .params = NoteParams{},13 .params = NoteParams{},
12 };14 };
test/behavior/bugs/3742.zig+1
...@@ -38,5 +38,6 @@ test "fixed" {...@@ -38,5 +38,6 @@ test "fixed" {
38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;40 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
41 ArgSerializer.serializeCommand(GET.init("banana"));42 ArgSerializer.serializeCommand(GET.init("banana"));
42}43}
test/behavior/bugs/3779.zig+5
...@@ -7,6 +7,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;...@@ -7,6 +7,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
77
8test "@tagName() returns a string literal" {8test "@tagName() returns a string literal" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
11 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));12 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
12 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));13 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
...@@ -19,6 +20,7 @@ const ptr_error_name: [*:0]const u8 = error_name;...@@ -19,6 +20,7 @@ const ptr_error_name: [*:0]const u8 = error_name;
1920
20test "@errorName() returns a string literal" {21test "@errorName() returns a string literal" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2224
23 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));25 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
24 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));26 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
...@@ -31,6 +33,7 @@ const ptr_type_name: [*:0]const u8 = type_name;...@@ -31,6 +33,7 @@ const ptr_type_name: [*:0]const u8 = type_name;
3133
32test "@typeName() returns a string literal" {34test "@typeName() returns a string literal" {
33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3437
35 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));38 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
36 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));39 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));
...@@ -43,6 +46,7 @@ const expected_contents = "hello zig\n";...@@ -43,6 +46,7 @@ const expected_contents = "hello zig\n";
4346
44test "@embedFile() returns a string literal" {47test "@embedFile() returns a string literal" {
45 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4650
47 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));51 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
48 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));52 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
...@@ -56,6 +60,7 @@ fn testFnForSrc() std.builtin.SourceLocation {...@@ -56,6 +60,7 @@ fn testFnForSrc() std.builtin.SourceLocation {
5660
57test "@src() returns a struct containing 0-terminated string slices" {61test "@src() returns a struct containing 0-terminated string slices" {
58 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5964
60 const src = testFnForSrc();65 const src = testFnForSrc();
61 try std.testing.expect([:0]const u8 == @TypeOf(src.file));66 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
test/behavior/bugs/421.zig+1
...@@ -5,6 +5,7 @@ test "bitCast to array" {...@@ -5,6 +5,7 @@ test "bitCast to array" {
5 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 comptime try testBitCastArray();10 comptime try testBitCastArray();
10 try testBitCastArray();11 try testBitCastArray();
test/behavior/bugs/4328.zig+1
...@@ -53,6 +53,7 @@ test "Peer resolution of extern function calls in @TypeOf" {...@@ -53,6 +53,7 @@ test "Peer resolution of extern function calls in @TypeOf" {
5353
54test "Extern function calls, dereferences and field access in @TypeOf" {54test "Extern function calls, dereferences and field access in @TypeOf" {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5657
57 const Test = struct {58 const Test = struct {
58 fn test_fn_1(a: c_long) @TypeOf(c_fopen("test", "r").*) {59 fn test_fn_1(a: c_long) @TypeOf(c_fopen("test", "r").*) {
test/behavior/bugs/4560.zig+2
...@@ -2,6 +2,8 @@ const std = @import("std");...@@ -2,6 +2,8 @@ const std = @import("std");
2const builtin = @import("builtin");2const builtin = @import("builtin");
33
4test "fixed" {4test "fixed" {
5 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6
5 var s: S = .{7 var s: S = .{
6 .a = 1,8 .a = 1,
7 .b = .{9 .b = .{
test/behavior/bugs/4954.zig+1
...@@ -7,6 +7,7 @@ fn f(buf: []u8) void {...@@ -7,6 +7,7 @@ fn f(buf: []u8) void {
7test "crash" {7test "crash" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
11 var buf: [4096]u8 = undefined;12 var buf: [4096]u8 = undefined;
12 f(&buf);13 f(&buf);
test/behavior/bugs/529.zig+1
...@@ -15,6 +15,7 @@ test "issue 529 fixed" {...@@ -15,6 +15,7 @@ test "issue 529 fixed" {
15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
19 @import("529_other_file.zig").issue529(null);20 @import("529_other_file.zig").issue529(null);
20 issue529(null);21 issue529(null);
test/behavior/bugs/5398.zig+1
...@@ -22,6 +22,7 @@ test "assignment of field with padding" {...@@ -22,6 +22,7 @@ test "assignment of field with padding" {
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
26 renderable = Renderable{27 renderable = Renderable{
27 .mesh = Mesh{ .id = 0 },28 .mesh = Mesh{ .id = 0 },
test/behavior/bugs/5474.zig+4
...@@ -49,11 +49,15 @@ fn constant() !void {...@@ -49,11 +49,15 @@ fn constant() !void {
49}49}
5050
51test "pointer-to-array constness for zero-size elements, var" {51test "pointer-to-array constness for zero-size elements, var" {
52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
53
52 try mutable();54 try mutable();
53 comptime try mutable();55 comptime try mutable();
54}56}
5557
56test "pointer-to-array constness for zero-size elements, const" {58test "pointer-to-array constness for zero-size elements, const" {
59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
60
57 try constant();61 try constant();
58 comptime try constant();62 comptime try constant();
59}63}
test/behavior/bugs/5487.zig+1
...@@ -13,5 +13,6 @@ test "crash" {...@@ -13,5 +13,6 @@ test "crash" {
13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16 _ = io.multiWriter(.{writer()});17 _ = io.multiWriter(.{writer()});
17}18}
test/behavior/bugs/624.zig+1
...@@ -22,6 +22,7 @@ fn MemoryPool(comptime T: type) type {...@@ -22,6 +22,7 @@ fn MemoryPool(comptime T: type) type {
22test "foo" {22test "foo" {
23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
26 var allocator = ContextAllocator{ .n = 10 };27 var allocator = ContextAllocator{ .n = 10 };
27 try expect(allocator.n == 10);28 try expect(allocator.n == 10);
test/behavior/bugs/656.zig+1
...@@ -14,6 +14,7 @@ test "optional if after an if in a switch prong of a switch with 2 prongs in an...@@ -14,6 +14,7 @@ test "optional if after an if in a switch prong of a switch with 2 prongs in an
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 try foo(false, true);18 try foo(false, true);
18}19}
1920
test/behavior/bugs/6781.zig+1
...@@ -67,6 +67,7 @@ test "fixed" {...@@ -67,6 +67,7 @@ test "fixed" {
67 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7071
71 var buffer align(@alignOf(JournalHeader)) = [_]u8{0} ** 65536;72 var buffer align(@alignOf(JournalHeader)) = [_]u8{0} ** 65536;
72 var entry = std.mem.bytesAsValue(JournalHeader, buffer[0..@sizeOf(JournalHeader)]);73 var entry = std.mem.bytesAsValue(JournalHeader, buffer[0..@sizeOf(JournalHeader)]);
test/behavior/bugs/718.zig+1
...@@ -13,6 +13,7 @@ test "zero keys with @memset" {...@@ -13,6 +13,7 @@ test "zero keys with @memset" {
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617
17 @memset(@ptrCast([*]u8, &keys), 0, @sizeOf(@TypeOf(keys)));18 @memset(@ptrCast([*]u8, &keys), 0, @sizeOf(@TypeOf(keys)));
18 try expect(!keys.up);19 try expect(!keys.up);
test/behavior/bugs/726.zig+2
...@@ -5,6 +5,7 @@ test "@ptrCast from const to nullable" {...@@ -5,6 +5,7 @@ test "@ptrCast from const to nullable" {
5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;5 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 const c: u8 = 4;10 const c: u8 = 4;
10 var x: ?*const u8 = @ptrCast(?*const u8, &c);11 var x: ?*const u8 = @ptrCast(?*const u8, &c);
...@@ -15,6 +16,7 @@ test "@ptrCast from var in empty struct to nullable" {...@@ -15,6 +16,7 @@ test "@ptrCast from var in empty struct to nullable" {
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;18 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1820
19 const container = struct {21 const container = struct {
20 var c: u8 = 4;22 var c: u8 = 4;
test/behavior/bugs/920.zig+1
...@@ -61,6 +61,7 @@ test "bug 920 fixed" {...@@ -61,6 +61,7 @@ test "bug 920 fixed" {
61 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO61 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6465
65 const NormalDist1 = blk: {66 const NormalDist1 = blk: {
66 break :blk ZigTableGen(true, norm_r, norm_v, norm_f, norm_f_inv, norm_zero_case);67 break :blk ZigTableGen(true, norm_r, norm_v, norm_f, norm_f_inv, norm_zero_case);
test/behavior/byteswap.zig+3
...@@ -66,6 +66,7 @@ test "@byteSwap vectors u8" {...@@ -66,6 +66,7 @@ test "@byteSwap vectors u8" {
66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;68 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6970
70 comptime try vector8();71 comptime try vector8();
71 try vector8();72 try vector8();
...@@ -84,6 +85,7 @@ test "@byteSwap vectors u16" {...@@ -84,6 +85,7 @@ test "@byteSwap vectors u16" {
84 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;85 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
86 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8789
88 comptime try vector16();90 comptime try vector16();
89 try vector16();91 try vector16();
...@@ -102,6 +104,7 @@ test "@byteSwap vectors u24" {...@@ -102,6 +104,7 @@ test "@byteSwap vectors u24" {
102 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;104 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;106 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105108
106 comptime try vector24();109 comptime try vector24();
107 try vector24();110 try vector24();
test/behavior/byval_arg_var.zig+1
...@@ -6,6 +6,7 @@ var result: []const u8 = "wrong";...@@ -6,6 +6,7 @@ var result: []const u8 = "wrong";
6test "pass string literal byvalue to a generic var param" {6test "pass string literal byvalue to a generic var param" {
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 start();11 start();
11 blowUpStack(10);12 blowUpStack(10);
test/behavior/call.zig+6
...@@ -24,6 +24,7 @@ test "basic invocations" {...@@ -24,6 +24,7 @@ test "basic invocations" {
24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2728
28 const foo = struct {29 const foo = struct {
29 fn foo() i32 {30 fn foo() i32 {
...@@ -56,6 +57,7 @@ test "tuple parameters" {...@@ -56,6 +57,7 @@ test "tuple parameters" {
56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5961
60 const add = struct {62 const add = struct {
61 fn add(a: i32, b: i32) i32 {63 fn add(a: i32, b: i32) i32 {
...@@ -87,6 +89,7 @@ test "tuple parameters" {...@@ -87,6 +89,7 @@ test "tuple parameters" {
87test "result location of function call argument through runtime condition and struct init" {89test "result location of function call argument through runtime condition and struct init" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO90 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9093
91 const E = enum { a, b };94 const E = enum { a, b };
92 const S = struct {95 const S = struct {
...@@ -105,6 +108,7 @@ test "result location of function call argument through runtime condition and st...@@ -105,6 +108,7 @@ test "result location of function call argument through runtime condition and st
105108
106test "function call with 40 arguments" {109test "function call with 40 arguments" {
107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108112
109 const S = struct {113 const S = struct {
110 fn doTheTest(thirty_nine: i32) !void {114 fn doTheTest(thirty_nine: i32) !void {
...@@ -263,6 +267,7 @@ test "forced tail call" {...@@ -263,6 +267,7 @@ test "forced tail call" {
263 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO267 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
264 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO268 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
265 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO269 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
266271
267 if (builtin.zig_backend == .stage2_llvm) {272 if (builtin.zig_backend == .stage2_llvm) {
268 // Only attempt this test on targets we know have tail call support in LLVM.273 // Only attempt this test on targets we know have tail call support in LLVM.
...@@ -295,6 +300,7 @@ test "inline call preserves tail call" {...@@ -295,6 +300,7 @@ test "inline call preserves tail call" {
295 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO300 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
296 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO301 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
297 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO302 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
298304
299 if (builtin.zig_backend == .stage2_llvm) {305 if (builtin.zig_backend == .stage2_llvm) {
300 // Only attempt this test on targets we know have tail call support in LLVM.306 // Only attempt this test on targets we know have tail call support in LLVM.
test/behavior/cast.zig+66
...@@ -20,6 +20,7 @@ test "integer literal to pointer cast" {...@@ -20,6 +20,7 @@ test "integer literal to pointer cast" {
20test "peer type resolution: ?T and T" {20test "peer type resolution: ?T and T" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
24 try expect(peerTypeTAndOptionalT(true, false).? == 0);25 try expect(peerTypeTAndOptionalT(true, false).? == 0);
25 try expect(peerTypeTAndOptionalT(false, false).? == 3);26 try expect(peerTypeTAndOptionalT(false, false).? == 3);
...@@ -96,6 +97,7 @@ test "@intToFloat" {...@@ -96,6 +97,7 @@ test "@intToFloat" {
96 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
99101
100 const S = struct {102 const S = struct {
101 fn doTheTest() !void {103 fn doTheTest() !void {
...@@ -117,6 +119,7 @@ test "@intToFloat(f80)" {...@@ -117,6 +119,7 @@ test "@intToFloat(f80)" {
117 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
118 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
119 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO121 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120123
121 const S = struct {124 const S = struct {
122 fn doTheTest(comptime Int: type) !void {125 fn doTheTest(comptime Int: type) !void {
...@@ -151,6 +154,7 @@ test "@floatToInt" {...@@ -151,6 +154,7 @@ test "@floatToInt" {
151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
152 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154158
155 try testFloatToInts();159 try testFloatToInts();
156 comptime try testFloatToInts();160 comptime try testFloatToInts();
...@@ -173,6 +177,7 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {...@@ -173,6 +177,7 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {
173test "implicitly cast indirect pointer to maybe-indirect pointer" {177test "implicitly cast indirect pointer to maybe-indirect pointer" {
174 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
175 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;179 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176181
177 const S = struct {182 const S = struct {
178 const Self = @This();183 const Self = @This();
...@@ -232,6 +237,7 @@ test "@floatCast comptime_int and comptime_float" {...@@ -232,6 +237,7 @@ test "@floatCast comptime_int and comptime_float" {
232test "coerce undefined to optional" {237test "coerce undefined to optional" {
233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;238 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;239 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
235241
236 try expect(MakeType(void).getNull() == null);242 try expect(MakeType(void).getNull() == null);
237 try expect(MakeType(void).getNonNull() != null);243 try expect(MakeType(void).getNonNull() != null);
...@@ -251,6 +257,7 @@ fn MakeType(comptime T: type) type {...@@ -251,6 +257,7 @@ fn MakeType(comptime T: type) type {
251257
252test "implicit cast from *[N]T to [*c]T" {258test "implicit cast from *[N]T to [*c]T" {
253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
254261
255 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };262 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
256 var y: [*c]u16 = &x;263 var y: [*c]u16 = &x;
...@@ -287,6 +294,7 @@ test "@intCast to u0 and use the result" {...@@ -287,6 +294,7 @@ test "@intCast to u0 and use the result" {
287test "peer result null and comptime_int" {294test "peer result null and comptime_int" {
288 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
289 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290298
291 const S = struct {299 const S = struct {
292 fn blah(n: i32) ?i32 {300 fn blah(n: i32) ?i32 {
...@@ -311,6 +319,7 @@ test "peer result null and comptime_int" {...@@ -311,6 +319,7 @@ test "peer result null and comptime_int" {
311test "*const ?[*]const T to [*c]const [*c]const T" {319test "*const ?[*]const T to [*c]const [*c]const T" {
312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;320 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
313 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;321 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
314323
315 var array = [_]u8{ 'o', 'k' };324 var array = [_]u8{ 'o', 'k' };
316 const opt_array_ptr: ?[*]const u8 = &array;325 const opt_array_ptr: ?[*]const u8 = &array;
...@@ -322,6 +331,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {...@@ -322,6 +331,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {
322331
323test "array coersion to undefined at runtime" {332test "array coersion to undefined at runtime" {
324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
325335
326 @setRuntimeSafety(true);336 @setRuntimeSafety(true);
327337
...@@ -351,6 +361,7 @@ fn implicitIntLitToOptional() void {...@@ -351,6 +361,7 @@ fn implicitIntLitToOptional() void {
351test "return u8 coercing into ?u32 return type" {361test "return u8 coercing into ?u32 return type" {
352 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;362 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
364 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
354365
355 const S = struct {366 const S = struct {
356 fn doTheTest() !void {367 fn doTheTest() !void {
...@@ -371,6 +382,7 @@ test "cast from ?[*]T to ??[*]T" {...@@ -371,6 +382,7 @@ test "cast from ?[*]T to ??[*]T" {
371382
372test "peer type unsigned int to signed" {383test "peer type unsigned int to signed" {
373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
374386
375 var w: u31 = 5;387 var w: u31 = 5;
376 var x: u8 = 7;388 var x: u8 = 7;
...@@ -382,6 +394,7 @@ test "peer type unsigned int to signed" {...@@ -382,6 +394,7 @@ test "peer type unsigned int to signed" {
382394
383test "expected [*c]const u8, found [*:0]const u8" {395test "expected [*c]const u8, found [*:0]const u8" {
384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
385398
386 var a: [*:0]const u8 = "hello";399 var a: [*:0]const u8 = "hello";
387 var b: [*c]const u8 = a;400 var b: [*c]const u8 = a;
...@@ -394,6 +407,7 @@ test "explicit cast from integer to error type" {...@@ -394,6 +407,7 @@ test "explicit cast from integer to error type" {
394 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO407 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
395 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;408 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
396 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO409 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397411
398 try testCastIntToErr(error.ItBroke);412 try testCastIntToErr(error.ItBroke);
399 comptime try testCastIntToErr(error.ItBroke);413 comptime try testCastIntToErr(error.ItBroke);
...@@ -408,6 +422,7 @@ test "peer resolve array and const slice" {...@@ -408,6 +422,7 @@ test "peer resolve array and const slice" {
408 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;422 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
409 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO423 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411426
412 try testPeerResolveArrayConstSlice(true);427 try testPeerResolveArrayConstSlice(true);
413 comptime try testPeerResolveArrayConstSlice(true);428 comptime try testPeerResolveArrayConstSlice(true);
...@@ -422,6 +437,7 @@ fn testPeerResolveArrayConstSlice(b: bool) !void {...@@ -422,6 +437,7 @@ fn testPeerResolveArrayConstSlice(b: bool) !void {
422test "implicitly cast from T to anyerror!?T" {437test "implicitly cast from T to anyerror!?T" {
423 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;438 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;439 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
440 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
425441
426 try castToOptionalTypeError(1);442 try castToOptionalTypeError(1);
427 comptime try castToOptionalTypeError(1);443 comptime try castToOptionalTypeError(1);
...@@ -446,6 +462,7 @@ fn castToOptionalTypeError(z: i32) !void {...@@ -446,6 +462,7 @@ fn castToOptionalTypeError(z: i32) !void {
446462
447test "implicitly cast from [0]T to anyerror![]T" {463test "implicitly cast from [0]T to anyerror![]T" {
448 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;464 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
465 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
449466
450 try testCastZeroArrayToErrSliceMut();467 try testCastZeroArrayToErrSliceMut();
451 comptime try testCastZeroArrayToErrSliceMut();468 comptime try testCastZeroArrayToErrSliceMut();
...@@ -462,6 +479,7 @@ fn gimmeErrOrSlice() anyerror![]u8 {...@@ -462,6 +479,7 @@ fn gimmeErrOrSlice() anyerror![]u8 {
462test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {479test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {
463 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;480 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
464 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
465483
466 const S = struct {484 const S = struct {
467 fn doTheTest() anyerror!void {485 fn doTheTest() anyerror!void {
...@@ -492,6 +510,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {...@@ -492,6 +510,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
492510
493test "implicit cast from *const [N]T to []const T" {511test "implicit cast from *const [N]T to []const T" {
494 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
513 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
495514
496 try testCastConstArrayRefToConstSlice();515 try testCastConstArrayRefToConstSlice();
497 comptime try testCastConstArrayRefToConstSlice();516 comptime try testCastConstArrayRefToConstSlice();
...@@ -516,6 +535,7 @@ fn testCastConstArrayRefToConstSlice() !void {...@@ -516,6 +535,7 @@ fn testCastConstArrayRefToConstSlice() !void {
516535
517test "peer type resolution: error and [N]T" {536test "peer type resolution: error and [N]T" {
518 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
519539
520 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));540 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
521 comptime try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));541 comptime try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
...@@ -539,6 +559,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {...@@ -539,6 +559,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {
539559
540test "single-item pointer of array to slice to unknown length pointer" {560test "single-item pointer of array to slice to unknown length pointer" {
541 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;561 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
562 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
542563
543 try testCastPtrOfArrayToSliceAndPtr();564 try testCastPtrOfArrayToSliceAndPtr();
544 comptime try testCastPtrOfArrayToSliceAndPtr();565 comptime try testCastPtrOfArrayToSliceAndPtr();
...@@ -568,6 +589,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {...@@ -568,6 +589,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {
568test "cast *[1][*]const u8 to [*]const ?[*]const u8" {589test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
569 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;590 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
570 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO591 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
571593
572 const window_name = [1][*]const u8{"window name"};594 const window_name = [1][*]const u8{"window name"};
573 const x: [*]const ?[*]const u8 = &window_name;595 const x: [*]const ?[*]const u8 = &window_name;
...@@ -580,6 +602,7 @@ test "vector casts" {...@@ -580,6 +602,7 @@ test "vector casts" {
580 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO602 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
581 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO603 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO604 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
605 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
583606
584 const S = struct {607 const S = struct {
585 fn doTheTest() !void {608 fn doTheTest() !void {
...@@ -621,6 +644,7 @@ test "@floatCast cast down" {...@@ -621,6 +644,7 @@ test "@floatCast cast down" {
621 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO644 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
622 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO645 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO646 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
624648
625 {649 {
626 var double: f64 = 0.001534;650 var double: f64 = 0.001534;
...@@ -637,6 +661,7 @@ test "@floatCast cast down" {...@@ -637,6 +661,7 @@ test "@floatCast cast down" {
637test "peer type resolution: unreachable, error set, unreachable" {661test "peer type resolution: unreachable, error set, unreachable" {
638 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO662 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
639 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO663 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
664 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
640665
641 const Error = error{666 const Error = error{
642 FileDescriptorAlreadyPresentInSet,667 FileDescriptorAlreadyPresentInSet,
...@@ -671,6 +696,7 @@ test "peer type resolution: error set supersets" {...@@ -671,6 +696,7 @@ test "peer type resolution: error set supersets" {
671 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO696 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
672 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO697 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
673 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO698 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
699 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
674700
675 const a: error{ One, Two } = undefined;701 const a: error{ One, Two } = undefined;
676 const b: error{One} = undefined;702 const b: error{One} = undefined;
...@@ -700,6 +726,7 @@ test "peer type resolution: disjoint error sets" {...@@ -700,6 +726,7 @@ test "peer type resolution: disjoint error sets" {
700 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO726 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
701 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO727 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
702 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
729 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
703730
704 const a: error{ One, Two } = undefined;731 const a: error{ One, Two } = undefined;
705 const b: error{Three} = undefined;732 const b: error{Three} = undefined;
...@@ -729,6 +756,7 @@ test "peer type resolution: error union and error set" {...@@ -729,6 +756,7 @@ test "peer type resolution: error union and error set" {
729 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO756 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
730 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO757 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
731 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO758 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
759 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
732760
733 const a: error{Three} = undefined;761 const a: error{Three} = undefined;
734 const b: error{ One, Two }!u32 = undefined;762 const b: error{ One, Two }!u32 = undefined;
...@@ -762,6 +790,7 @@ test "peer type resolution: error union after non-error" {...@@ -762,6 +790,7 @@ test "peer type resolution: error union after non-error" {
762 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO790 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
763 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO791 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
764 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO792 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
793 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
765794
766 const a: u32 = undefined;795 const a: u32 = undefined;
767 const b: error{ One, Two }!u32 = undefined;796 const b: error{ One, Two }!u32 = undefined;
...@@ -795,6 +824,7 @@ test "peer cast *[0]T to E![]const T" {...@@ -795,6 +824,7 @@ test "peer cast *[0]T to E![]const T" {
795 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;824 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
796 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;825 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
797 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO826 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
827 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
798828
799 var buffer: [5]u8 = "abcde".*;829 var buffer: [5]u8 = "abcde".*;
800 var buf: anyerror![]const u8 = buffer[0..];830 var buf: anyerror![]const u8 = buffer[0..];
...@@ -809,6 +839,7 @@ test "peer cast *[0]T to []const T" {...@@ -809,6 +839,7 @@ test "peer cast *[0]T to []const T" {
809 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;839 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
810 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;840 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
811 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO841 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
842 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
812843
813 var buffer: [5]u8 = "abcde".*;844 var buffer: [5]u8 = "abcde".*;
814 var buf: []const u8 = buffer[0..];845 var buf: []const u8 = buffer[0..];
...@@ -818,6 +849,8 @@ test "peer cast *[0]T to []const T" {...@@ -818,6 +849,8 @@ test "peer cast *[0]T to []const T" {
818}849}
819850
820test "peer cast *[N]T to [*]T" {851test "peer cast *[N]T to [*]T" {
852 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
853
821 var array = [4:99]i32{ 1, 2, 3, 4 };854 var array = [4:99]i32{ 1, 2, 3, 4 };
822 var dest: [*]i32 = undefined;855 var dest: [*]i32 = undefined;
823 try expect(@TypeOf(&array, dest) == [*]i32);856 try expect(@TypeOf(&array, dest) == [*]i32);
...@@ -828,6 +861,7 @@ test "peer resolution of string literals" {...@@ -828,6 +861,7 @@ test "peer resolution of string literals" {
828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;861 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO862 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
830 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO863 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
831865
832 const S = struct {866 const S = struct {
833 const E = enum { a, b, c, d };867 const E = enum { a, b, c, d };
...@@ -848,6 +882,7 @@ test "peer resolution of string literals" {...@@ -848,6 +882,7 @@ test "peer resolution of string literals" {
848882
849test "peer cast [:x]T to []T" {883test "peer cast [:x]T to []T" {
850 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
885 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
851886
852 const S = struct {887 const S = struct {
853 fn doTheTest() !void {888 fn doTheTest() !void {
...@@ -863,6 +898,7 @@ test "peer cast [:x]T to []T" {...@@ -863,6 +898,7 @@ test "peer cast [:x]T to []T" {
863898
864test "peer cast [N:x]T to [N]T" {899test "peer cast [N:x]T to [N]T" {
865 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;900 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
901 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
866902
867 const S = struct {903 const S = struct {
868 fn doTheTest() !void {904 fn doTheTest() !void {
...@@ -877,6 +913,7 @@ test "peer cast [N:x]T to [N]T" {...@@ -877,6 +913,7 @@ test "peer cast [N:x]T to [N]T" {
877913
878test "peer cast *[N:x]T to *[N]T" {914test "peer cast *[N:x]T to *[N]T" {
879 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO915 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
916 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
880917
881 const S = struct {918 const S = struct {
882 fn doTheTest() !void {919 fn doTheTest() !void {
...@@ -892,6 +929,7 @@ test "peer cast *[N:x]T to *[N]T" {...@@ -892,6 +929,7 @@ test "peer cast *[N:x]T to *[N]T" {
892test "peer cast [*:x]T to [*]T" {929test "peer cast [*:x]T to [*]T" {
893 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
894 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO931 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
932 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
895933
896 const S = struct {934 const S = struct {
897 fn doTheTest() !void {935 fn doTheTest() !void {
...@@ -912,6 +950,7 @@ test "peer cast [:x]T to [*:x]T" {...@@ -912,6 +950,7 @@ test "peer cast [:x]T to [*:x]T" {
912 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
913 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO951 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
914 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO952 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
953 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
915954
916 const S = struct {955 const S = struct {
917 fn doTheTest() !void {956 fn doTheTest() !void {
...@@ -931,6 +970,7 @@ test "peer cast [:x]T to [*:x]T" {...@@ -931,6 +970,7 @@ test "peer cast [:x]T to [*:x]T" {
931970
932test "peer type resolution implicit cast to return type" {971test "peer type resolution implicit cast to return type" {
933 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;972 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
973 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
934974
935 const S = struct {975 const S = struct {
936 fn doTheTest() !void {976 fn doTheTest() !void {
...@@ -951,6 +991,7 @@ test "peer type resolution implicit cast to return type" {...@@ -951,6 +991,7 @@ test "peer type resolution implicit cast to return type" {
951test "peer type resolution implicit cast to variable type" {991test "peer type resolution implicit cast to variable type" {
952 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;992 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
953 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO993 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
994 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
954995
955 const S = struct {996 const S = struct {
956 fn doTheTest() !void {997 fn doTheTest() !void {
...@@ -974,6 +1015,7 @@ test "variable initialization uses result locations properly with regards to the...@@ -974,6 +1015,7 @@ test "variable initialization uses result locations properly with regards to the
9741015
975test "cast between C pointer with different but compatible types" {1016test "cast between C pointer with different but compatible types" {
976 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1017 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1018 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9771019
978 const S = struct {1020 const S = struct {
979 fn foo(arg: [*]c_ushort) u16 {1021 fn foo(arg: [*]c_ushort) u16 {
...@@ -990,6 +1032,7 @@ test "cast between C pointer with different but compatible types" {...@@ -990,6 +1032,7 @@ test "cast between C pointer with different but compatible types" {
9901032
991test "peer type resolve string lit with sentinel-terminated mutable slice" {1033test "peer type resolve string lit with sentinel-terminated mutable slice" {
992 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1034 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1035 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9931036
994 var array: [4:0]u8 = undefined;1037 var array: [4:0]u8 = undefined;
995 array[4] = 0; // TODO remove this when #4372 is solved1038 array[4] = 0; // TODO remove this when #4372 is solved
...@@ -1038,6 +1081,7 @@ test "comptime float casts" {...@@ -1038,6 +1081,7 @@ test "comptime float casts" {
10381081
1039test "pointer reinterpret const float to int" {1082test "pointer reinterpret const float to int" {
1040 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1083 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1084 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10411085
1042 // The hex representation is 0x3fe3333333333303.1086 // The hex representation is 0x3fe3333333333303.
1043 const float: f64 = 5.99999999999994648725e-01;1087 const float: f64 = 5.99999999999994648725e-01;
...@@ -1053,6 +1097,7 @@ test "pointer reinterpret const float to int" {...@@ -1053,6 +1097,7 @@ test "pointer reinterpret const float to int" {
1053test "implicit cast from [*]T to ?*anyopaque" {1097test "implicit cast from [*]T to ?*anyopaque" {
1054 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1098 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1055 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1099 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10561101
1057 var a = [_]u8{ 3, 2, 1 };1102 var a = [_]u8{ 3, 2, 1 };
1058 var runtime_zero: usize = 0;1103 var runtime_zero: usize = 0;
...@@ -1085,6 +1130,7 @@ fn foobar(func: PFN_void) !void {...@@ -1085,6 +1130,7 @@ fn foobar(func: PFN_void) !void {
1085test "implicit ptr to *anyopaque" {1130test "implicit ptr to *anyopaque" {
1086 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1087 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1132 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10881134
1089 var a: u32 = 1;1135 var a: u32 = 1;
1090 var ptr: *align(@alignOf(u32)) anyopaque = &a;1136 var ptr: *align(@alignOf(u32)) anyopaque = &a;
...@@ -1097,6 +1143,7 @@ test "implicit ptr to *anyopaque" {...@@ -1097,6 +1143,7 @@ test "implicit ptr to *anyopaque" {
10971143
1098test "return null from fn() anyerror!?&T" {1144test "return null from fn() anyerror!?&T" {
1099 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1145 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1146 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11001147
1101 const a = returnNullFromOptionalTypeErrorRef();1148 const a = returnNullFromOptionalTypeErrorRef();
1102 const b = returnNullLitFromOptionalTypeErrorRef();1149 const b = returnNullLitFromOptionalTypeErrorRef();
...@@ -1112,6 +1159,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {...@@ -1112,6 +1159,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {
11121159
1113test "peer type resolution: [0]u8 and []const u8" {1160test "peer type resolution: [0]u8 and []const u8" {
1114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11151163
1116 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);1164 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
1117 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);1165 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
...@@ -1132,6 +1180,7 @@ test "implicitly cast from [N]T to ?[]const T" {...@@ -1132,6 +1180,7 @@ test "implicitly cast from [N]T to ?[]const T" {
1132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1180 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1181 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1134 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1182 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11351184
1136 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));1185 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
1137 comptime try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));1186 comptime try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
...@@ -1146,6 +1195,7 @@ test "cast u128 to f128 and back" {...@@ -1146,6 +1195,7 @@ test "cast u128 to f128 and back" {
1146 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1147 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1196 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1148 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1197 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1198 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11491199
1150 comptime try testCast128();1200 comptime try testCast128();
1151 try testCast128();1201 try testCast128();
...@@ -1167,6 +1217,7 @@ test "implicit cast from *[N]T to ?[*]T" {...@@ -1167,6 +1217,7 @@ test "implicit cast from *[N]T to ?[*]T" {
1167 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1217 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1168 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1218 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1169 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1219 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1220 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11701221
1171 var x: ?[*]u16 = null;1222 var x: ?[*]u16 = null;
1172 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };1223 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };
...@@ -1181,6 +1232,7 @@ test "implicit cast from *[N]T to ?[*]T" {...@@ -1181,6 +1232,7 @@ test "implicit cast from *[N]T to ?[*]T" {
1181test "implicit cast from *T to ?*anyopaque" {1232test "implicit cast from *T to ?*anyopaque" {
1182 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1235 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11841236
1185 var a: u8 = 1;1237 var a: u8 = 1;
1186 incrementVoidPtrValue(&a);1238 incrementVoidPtrValue(&a);
...@@ -1193,6 +1245,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {...@@ -1193,6 +1245,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {
11931245
1194test "implicit cast *[0]T to E![]const u8" {1246test "implicit cast *[0]T to E![]const u8" {
1195 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11961249
1197 var x = @as(anyerror![]const u8, &[0]u8{});1250 var x = @as(anyerror![]const u8, &[0]u8{});
1198 try expect((x catch unreachable).len == 0);1251 try expect((x catch unreachable).len == 0);
...@@ -1212,6 +1265,7 @@ test "*const [N]null u8 to ?[]const u8" {...@@ -1212,6 +1265,7 @@ test "*const [N]null u8 to ?[]const u8" {
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1265 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1213 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1266 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1214 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1267 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1268 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12151269
1216 const S = struct {1270 const S = struct {
1217 fn doTheTest() !void {1271 fn doTheTest() !void {
...@@ -1246,6 +1300,7 @@ var global_struct: struct { f0: usize } = undefined;...@@ -1246,6 +1300,7 @@ var global_struct: struct { f0: usize } = undefined;
1246test "assignment to optional pointer result loc" {1300test "assignment to optional pointer result loc" {
1247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1301 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1248 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12491304
1250 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };1305 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
1251 try expect(foo.ptr.? == @ptrCast(*anyopaque, &global_struct));1306 try expect(foo.ptr.? == @ptrCast(*anyopaque, &global_struct));
...@@ -1259,6 +1314,7 @@ test "cast between *[N]void and []void" {...@@ -1259,6 +1314,7 @@ test "cast between *[N]void and []void" {
12591314
1260test "peer resolve arrays of different size to const slice" {1315test "peer resolve arrays of different size to const slice" {
1261 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1317 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12621318
1263 try expect(mem.eql(u8, boolToStr(true), "true"));1319 try expect(mem.eql(u8, boolToStr(true), "true"));
1264 try expect(mem.eql(u8, boolToStr(false), "false"));1320 try expect(mem.eql(u8, boolToStr(false), "false"));
...@@ -1274,6 +1330,7 @@ test "cast f16 to wider types" {...@@ -1274,6 +1330,7 @@ test "cast f16 to wider types" {
1274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1275 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1331 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1276 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1332 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1333 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12771334
1278 const S = struct {1335 const S = struct {
1279 fn doTheTest() !void {1336 fn doTheTest() !void {
...@@ -1292,6 +1349,7 @@ test "cast f128 to narrower types" {...@@ -1292,6 +1349,7 @@ test "cast f128 to narrower types" {
1292 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1293 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1350 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1294 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1351 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1352 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12951353
1296 const S = struct {1354 const S = struct {
1297 fn doTheTest() !void {1355 fn doTheTest() !void {
...@@ -1309,6 +1367,7 @@ test "peer type resolution: unreachable, null, slice" {...@@ -1309,6 +1367,7 @@ test "peer type resolution: unreachable, null, slice" {
1309 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1367 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1310 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1368 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1311 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1369 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13121371
1313 const S = struct {1372 const S = struct {
1314 fn doTheTest(num: usize, word: []const u8) !void {1373 fn doTheTest(num: usize, word: []const u8) !void {
...@@ -1325,6 +1384,7 @@ test "peer type resolution: unreachable, null, slice" {...@@ -1325,6 +1384,7 @@ test "peer type resolution: unreachable, null, slice" {
13251384
1326test "cast i8 fn call peers to i32 result" {1385test "cast i8 fn call peers to i32 result" {
1327 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1387 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13281388
1329 const S = struct {1389 const S = struct {
1330 fn doTheTest() !void {1390 fn doTheTest() !void {
...@@ -1347,6 +1407,7 @@ test "cast compatible optional types" {...@@ -1347,6 +1407,7 @@ test "cast compatible optional types" {
1347 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1407 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1349 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1409 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13501411
1351 var a: ?[:0]const u8 = null;1412 var a: ?[:0]const u8 = null;
1352 var b: ?[]const u8 = a;1413 var b: ?[]const u8 = a;
...@@ -1355,6 +1416,7 @@ test "cast compatible optional types" {...@@ -1355,6 +1416,7 @@ test "cast compatible optional types" {
13551416
1356test "coerce undefined single-item pointer of array to error union of slice" {1417test "coerce undefined single-item pointer of array to error union of slice" {
1357 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13581420
1359 const a = @as([*]u8, undefined)[0..0];1421 const a = @as([*]u8, undefined)[0..0];
1360 var b: error{a}![]const u8 = a;1422 var b: error{a}![]const u8 = a;
...@@ -1363,6 +1425,8 @@ test "coerce undefined single-item pointer of array to error union of slice" {...@@ -1363,6 +1425,8 @@ test "coerce undefined single-item pointer of array to error union of slice" {
1363}1425}
13641426
1365test "pointer to empty struct literal to mutable slice" {1427test "pointer to empty struct literal to mutable slice" {
1428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1429
1366 var x: []i32 = &.{};1430 var x: []i32 = &.{};
1367 try expect(x.len == 0);1431 try expect(x.len == 0);
1368}1432}
...@@ -1372,6 +1436,7 @@ test "coerce between pointers of compatible differently-named floats" {...@@ -1372,6 +1436,7 @@ test "coerce between pointers of compatible differently-named floats" {
1372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1373 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1437 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1374 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1438 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1439 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13751440
1376 if (builtin.os.tag == .windows) {1441 if (builtin.os.tag == .windows) {
1377 // https://github.com/ziglang/zig/issues/123961442 // https://github.com/ziglang/zig/issues/12396
...@@ -1402,6 +1467,7 @@ test "peer type resolution of const and non-const pointer to array" {...@@ -1402,6 +1467,7 @@ test "peer type resolution of const and non-const pointer to array" {
1402test "floatToInt to zero-bit int" {1467test "floatToInt to zero-bit int" {
1403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1470 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14051471
1406 var a: f32 = 0.0;1472 var a: f32 = 0.0;
1407 comptime try std.testing.expect(@floatToInt(u0, a) == 0);1473 comptime try std.testing.expect(@floatToInt(u0, a) == 0);
test/behavior/cast_int.zig+1
...@@ -8,6 +8,7 @@ test "@intCast i32 to u7" {...@@ -8,6 +8,7 @@ test "@intCast i32 to u7" {
8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
12 var x: u128 = maxInt(u128);13 var x: u128 = maxInt(u128);
13 var y: i32 = 120;14 var y: i32 = 120;
test/behavior/const_slice_child.zig+1
...@@ -9,6 +9,7 @@ var argv: [*]const [*]const u8 = undefined;...@@ -9,6 +9,7 @@ var argv: [*]const [*]const u8 = undefined;
9test "const slice child" {9test "const slice child" {
10 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
13 const strs = [_][*]const u8{ "one", "two", "three" };14 const strs = [_][*]const u8{ "one", "two", "three" };
14 argv = &strs;15 argv = &strs;
test/behavior/defer.zig+5
...@@ -33,6 +33,7 @@ test "defer and labeled break" {...@@ -33,6 +33,7 @@ test "defer and labeled break" {
3333
34test "errdefer does not apply to fn inside fn" {34test "errdefer does not apply to fn inside fn" {
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3637
37 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);38 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);
38}39}
...@@ -52,6 +53,7 @@ test "return variable while defer expression in scope to modify it" {...@@ -52,6 +53,7 @@ test "return variable while defer expression in scope to modify it" {
52 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5557
56 const S = struct {58 const S = struct {
57 fn doTheTest() !void {59 fn doTheTest() !void {
...@@ -92,6 +94,7 @@ fn runSomeErrorDefers(x: bool) !bool {...@@ -92,6 +94,7 @@ fn runSomeErrorDefers(x: bool) !bool {
92test "mixing normal and error defers" {94test "mixing normal and error defers" {
93 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO95 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO96 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9598
96 try expect(runSomeErrorDefers(true) catch unreachable);99 try expect(runSomeErrorDefers(true) catch unreachable);
97 try expect(result[0] == 'c');100 try expect(result[0] == 'c');
...@@ -111,6 +114,7 @@ test "errdefer with payload" {...@@ -111,6 +114,7 @@ test "errdefer with payload" {
111 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO114 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
114118
115 const S = struct {119 const S = struct {
116 fn foo() !i32 {120 fn foo() !i32 {
...@@ -129,6 +133,7 @@ test "errdefer with payload" {...@@ -129,6 +133,7 @@ test "errdefer with payload" {
129133
130test "simple else prong doesn't emit an error for unreachable else prong" {134test "simple else prong doesn't emit an error for unreachable else prong" {
131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
132137
133 const S = struct {138 const S = struct {
134 fn foo() error{Foo}!void {139 fn foo() error{Foo}!void {
test/behavior/enum.zig+17
...@@ -26,6 +26,7 @@ const IntToEnumNumber = enum { Zero, One, Two, Three, Four };...@@ -26,6 +26,7 @@ const IntToEnumNumber = enum { Zero, One, Two, Three, Four };
2626
27test "int to enum" {27test "int to enum" {
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2930
30 try testIntToEnumEval(3);31 try testIntToEnumEval(3);
31}32}
...@@ -607,6 +608,7 @@ fn testEnumWithSpecifiedTagValues(x: MultipleChoice) !void {...@@ -607,6 +608,7 @@ fn testEnumWithSpecifiedTagValues(x: MultipleChoice) !void {
607608
608test "enum with specified tag values" {609test "enum with specified tag values" {
609 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;610 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
611 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
610612
611 try testEnumWithSpecifiedTagValues(MultipleChoice.C);613 try testEnumWithSpecifiedTagValues(MultipleChoice.C);
612 comptime try testEnumWithSpecifiedTagValues(MultipleChoice.C);614 comptime try testEnumWithSpecifiedTagValues(MultipleChoice.C);
...@@ -614,6 +616,7 @@ test "enum with specified tag values" {...@@ -614,6 +616,7 @@ test "enum with specified tag values" {
614616
615test "non-exhaustive enum" {617test "non-exhaustive enum" {
616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;618 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
619 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
617620
618 const S = struct {621 const S = struct {
619 const E = enum(u8) { a, b, _ };622 const E = enum(u8) { a, b, _ };
...@@ -676,6 +679,7 @@ test "empty non-exhaustive enum" {...@@ -676,6 +679,7 @@ test "empty non-exhaustive enum" {
676679
677test "single field non-exhaustive enum" {680test "single field non-exhaustive enum" {
678 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;681 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
682 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
679683
680 const S = struct {684 const S = struct {
681 const E = enum(u8) { a, _ };685 const E = enum(u8) { a, _ };
...@@ -739,6 +743,7 @@ test "cast integer literal to enum" {...@@ -739,6 +743,7 @@ test "cast integer literal to enum" {
739743
740test "enum with specified and unspecified tag values" {744test "enum with specified and unspecified tag values" {
741 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;745 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
746 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
742747
743 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2.D);748 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2.D);
744 comptime try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2.D);749 comptime try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2.D);
...@@ -898,6 +903,7 @@ test "enum value allocation" {...@@ -898,6 +903,7 @@ test "enum value allocation" {
898test "enum literal casting to tagged union" {903test "enum literal casting to tagged union" {
899 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;904 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
900 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;905 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
906 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
901907
902 const Arch = union(enum) {908 const Arch = union(enum) {
903 x86_64,909 x86_64,
...@@ -922,6 +928,7 @@ const Bar = enum { A, B, C, D };...@@ -922,6 +928,7 @@ const Bar = enum { A, B, C, D };
922928
923test "enum literal casting to error union with payload enum" {929test "enum literal casting to error union with payload enum" {
924 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
931 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
925932
926 var bar: error{B}!Bar = undefined;933 var bar: error{B}!Bar = undefined;
927 bar = .B; // should never cast to the error set934 bar = .B; // should never cast to the error set
...@@ -933,6 +940,7 @@ test "constant enum initialization with differing sizes" {...@@ -933,6 +940,7 @@ test "constant enum initialization with differing sizes" {
933 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;940 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
934 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;941 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
935 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;942 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
943 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
936944
937 try test3_1(test3_foo);945 try test3_1(test3_foo);
938 try test3_2(test3_bar);946 try test3_2(test3_bar);
...@@ -976,6 +984,7 @@ test "@tagName" {...@@ -976,6 +984,7 @@ test "@tagName" {
976 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;984 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
977 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;985 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
978 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;986 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
987 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
979988
980 try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));989 try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
981 comptime try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));990 comptime try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
...@@ -992,6 +1001,7 @@ test "@tagName non-exhaustive enum" {...@@ -992,6 +1001,7 @@ test "@tagName non-exhaustive enum" {
992 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;1001 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
993 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1002 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
994 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1003 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1004 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9951005
996 try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));1006 try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
997 comptime try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));1007 comptime try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
...@@ -1003,6 +1013,7 @@ test "@tagName is null-terminated" {...@@ -1003,6 +1013,7 @@ test "@tagName is null-terminated" {
1003 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;1013 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1004 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1014 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1005 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1015 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1016 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10061017
1007 const S = struct {1018 const S = struct {
1008 fn doTheTest(n: BareNumber) !void {1019 fn doTheTest(n: BareNumber) !void {
...@@ -1018,6 +1029,7 @@ test "tag name with assigned enum values" {...@@ -1018,6 +1029,7 @@ test "tag name with assigned enum values" {
1018 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;1029 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1019 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1030 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1020 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1031 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1032 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10211033
1022 const LocalFoo = enum(u8) {1034 const LocalFoo = enum(u8) {
1023 A = 1,1035 A = 1,
...@@ -1029,6 +1041,7 @@ test "tag name with assigned enum values" {...@@ -1029,6 +1041,7 @@ test "tag name with assigned enum values" {
10291041
1030test "@tagName on enum literals" {1042test "@tagName on enum literals" {
1031 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1043 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1044 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10321045
1033 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));1046 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
1034 comptime try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));1047 comptime try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
...@@ -1037,6 +1050,7 @@ test "@tagName on enum literals" {...@@ -1037,6 +1050,7 @@ test "@tagName on enum literals" {
1037test "enum literal casting to optional" {1050test "enum literal casting to optional" {
1038 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1039 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1052 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10401054
1041 var bar: ?Bar = undefined;1055 var bar: ?Bar = undefined;
1042 bar = .B;1056 bar = .B;
...@@ -1065,6 +1079,7 @@ test "bit field access with enum fields" {...@@ -1065,6 +1079,7 @@ test "bit field access with enum fields" {
1065 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;1079 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1066 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1080 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1067 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1081 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1082 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10681083
1069 var data = bit_field_1;1084 var data = bit_field_1;
1070 try expect(getA(&data) == A.Two);1085 try expect(getA(&data) == A.Two);
...@@ -1105,6 +1120,7 @@ test "tag name functions are unique" {...@@ -1105,6 +1120,7 @@ test "tag name functions are unique" {
1105 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;1120 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11081124
1109 {1125 {
1110 const E = enum { a, b };1126 const E = enum { a, b };
...@@ -1123,6 +1139,7 @@ test "tag name functions are unique" {...@@ -1123,6 +1139,7 @@ test "tag name functions are unique" {
1123test "size of enum with only one tag which has explicit integer tag type" {1139test "size of enum with only one tag which has explicit integer tag type" {
1124 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;1140 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11261143
1127 const E = enum(u8) { nope = 10 };1144 const E = enum(u8) { nope = 10 };
1128 const S0 = struct { e: E };1145 const S0 = struct { e: E };
test/behavior/error.zig+31
...@@ -30,6 +30,7 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {...@@ -30,6 +30,7 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {
3030
31test "error binary operator" {31test "error binary operator" {
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3334
34 const a = errBinaryOperatorG(true) catch 3;35 const a = errBinaryOperatorG(true) catch 3;
35 const b = errBinaryOperatorG(false) catch 3;36 const b = errBinaryOperatorG(false) catch 3;
...@@ -61,12 +62,14 @@ pub fn baz() anyerror!i32 {...@@ -61,12 +62,14 @@ pub fn baz() anyerror!i32 {
6162
62test "error wrapping" {63test "error wrapping" {
63 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6466
65 try expect((baz() catch unreachable) == 15);67 try expect((baz() catch unreachable) == 15);
66}68}
6769
68test "unwrap simple value from error" {70test "unwrap simple value from error" {
69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;71 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7073
71 const i = unwrapSimpleValueFromErrorDo() catch unreachable;74 const i = unwrapSimpleValueFromErrorDo() catch unreachable;
72 try expect(i == 13);75 try expect(i == 13);
...@@ -77,6 +80,7 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {...@@ -77,6 +80,7 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {
7780
78test "error return in assignment" {81test "error return in assignment" {
79 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;82 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8084
81 doErrReturnInAssignment() catch unreachable;85 doErrReturnInAssignment() catch unreachable;
82}86}
...@@ -99,6 +103,7 @@ test "syntax: optional operator in front of error union operator" {...@@ -99,6 +103,7 @@ test "syntax: optional operator in front of error union operator" {
99test "widen cast integer payload of error union function call" {103test "widen cast integer payload of error union function call" {
100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;104 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;105 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102107
103 const S = struct {108 const S = struct {
104 fn errorable() !u64 {109 fn errorable() !u64 {
...@@ -115,6 +120,7 @@ test "widen cast integer payload of error union function call" {...@@ -115,6 +120,7 @@ test "widen cast integer payload of error union function call" {
115120
116test "debug info for optional error set" {121test "debug info for optional error set" {
117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
118124
119 const SomeError = error{ Hello, Hello2 };125 const SomeError = error{ Hello, Hello2 };
120 var a_local_variable: ?SomeError = null;126 var a_local_variable: ?SomeError = null;
...@@ -123,6 +129,7 @@ test "debug info for optional error set" {...@@ -123,6 +129,7 @@ test "debug info for optional error set" {
123129
124test "implicit cast to optional to error union to return result loc" {130test "implicit cast to optional to error union to return result loc" {
125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
126133
127 const S = struct {134 const S = struct {
128 fn entry() !void {135 fn entry() !void {
...@@ -242,6 +249,7 @@ fn testExplicitErrorSetCast(set1: Set1) !void {...@@ -242,6 +249,7 @@ fn testExplicitErrorSetCast(set1: Set1) !void {
242test "comptime test error for empty error set" {249test "comptime test error for empty error set" {
243 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO250 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
244 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
245253
246 try testComptimeTestErrorEmptySet(1234);254 try testComptimeTestErrorEmptySet(1234);
247 comptime try testComptimeTestErrorEmptySet(1234);255 comptime try testComptimeTestErrorEmptySet(1234);
...@@ -281,6 +289,7 @@ test "inferred empty error set comptime catch" {...@@ -281,6 +289,7 @@ test "inferred empty error set comptime catch" {
281289
282test "error union peer type resolution" {290test "error union peer type resolution" {
283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
284293
285 try testErrorUnionPeerTypeResolution(1);294 try testErrorUnionPeerTypeResolution(1);
286}295}
...@@ -312,6 +321,7 @@ fn quux_1() !i32 {...@@ -312,6 +321,7 @@ fn quux_1() !i32 {
312321
313test "error: Zero sized error set returned with value payload crash" {322test "error: Zero sized error set returned with value payload crash" {
314 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
315325
316 _ = try foo3(0);326 _ = try foo3(0);
317 _ = comptime try foo3(0);327 _ = comptime try foo3(0);
...@@ -324,6 +334,7 @@ fn foo3(b: usize) Error!usize {...@@ -324,6 +334,7 @@ fn foo3(b: usize) Error!usize {
324334
325test "error: Infer error set from literals" {335test "error: Infer error set from literals" {
326 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;336 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
337 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
327338
328 _ = nullLiteral("n") catch |err| handleErrors(err);339 _ = nullLiteral("n") catch |err| handleErrors(err);
329 _ = floatLiteral("n") catch |err| handleErrors(err);340 _ = floatLiteral("n") catch |err| handleErrors(err);
...@@ -363,6 +374,7 @@ test "nested error union function call in optional unwrap" {...@@ -363,6 +374,7 @@ test "nested error union function call in optional unwrap" {
363 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO374 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
365 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO376 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
377 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
366378
367 const S = struct {379 const S = struct {
368 const Foo = struct {380 const Foo = struct {
...@@ -409,6 +421,7 @@ test "nested error union function call in optional unwrap" {...@@ -409,6 +421,7 @@ test "nested error union function call in optional unwrap" {
409test "return function call to error set from error union function" {421test "return function call to error set from error union function" {
410 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO422 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
411 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO423 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
412425
413 const S = struct {426 const S = struct {
414 fn errorable() anyerror!i32 {427 fn errorable() anyerror!i32 {
...@@ -426,6 +439,7 @@ test "return function call to error set from error union function" {...@@ -426,6 +439,7 @@ test "return function call to error set from error union function" {
426test "optional error set is the same size as error set" {439test "optional error set is the same size as error set" {
427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO440 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
428 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO441 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
429443
430 comptime try expect(@sizeOf(?anyerror) == @sizeOf(anyerror));444 comptime try expect(@sizeOf(?anyerror) == @sizeOf(anyerror));
431 comptime try expect(@alignOf(?anyerror) == @alignOf(anyerror));445 comptime try expect(@alignOf(?anyerror) == @alignOf(anyerror));
...@@ -441,6 +455,7 @@ test "optional error set is the same size as error set" {...@@ -441,6 +455,7 @@ test "optional error set is the same size as error set" {
441test "nested catch" {455test "nested catch" {
442 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO456 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
443 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO457 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
458 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
444459
445 const S = struct {460 const S = struct {
446 fn entry() !void {461 fn entry() !void {
...@@ -466,6 +481,7 @@ test "nested catch" {...@@ -466,6 +481,7 @@ test "nested catch" {
466test "function pointer with return type that is error union with payload which is pointer of parent struct" {481test "function pointer with return type that is error union with payload which is pointer of parent struct" {
467 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO482 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO483 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
484 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
469485
470 const S = struct {486 const S = struct {
471 const Foo = struct {487 const Foo = struct {
...@@ -491,6 +507,7 @@ test "return result loc as peer result loc in inferred error set function" {...@@ -491,6 +507,7 @@ test "return result loc as peer result loc in inferred error set function" {
491 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO507 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
492 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO508 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
493 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO509 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
510 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
494511
495 const S = struct {512 const S = struct {
496 fn doTheTest() !void {513 fn doTheTest() !void {
...@@ -522,6 +539,7 @@ test "error payload type is correctly resolved" {...@@ -522,6 +539,7 @@ test "error payload type is correctly resolved" {
522 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO539 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
523 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO540 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
524 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO541 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
542 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
525543
526 const MyIntWrapper = struct {544 const MyIntWrapper = struct {
527 const Self = @This();545 const Self = @This();
...@@ -551,6 +569,7 @@ test "@errorName" {...@@ -551,6 +569,7 @@ test "@errorName" {
551 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;569 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
552 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;570 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
553 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;571 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
572 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
554573
555 try expect(mem.eql(u8, @errorName(error.AnError), "AnError"));574 try expect(mem.eql(u8, @errorName(error.AnError), "AnError"));
556 try expect(mem.eql(u8, @errorName(error.ALongerErrorName), "ALongerErrorName"));575 try expect(mem.eql(u8, @errorName(error.ALongerErrorName), "ALongerErrorName"));
...@@ -564,6 +583,7 @@ test "@errorName sentinel length matches slice length" {...@@ -564,6 +583,7 @@ test "@errorName sentinel length matches slice length" {
564 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;583 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;584 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
566 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;585 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
567587
568 const name = testBuiltinErrorName(error.FooBar);588 const name = testBuiltinErrorName(error.FooBar);
569 const length: usize = 6;589 const length: usize = 6;
...@@ -592,6 +612,7 @@ test "error set equality" {...@@ -592,6 +612,7 @@ test "error set equality" {
592612
593test "inferred error set equality" {613test "inferred error set equality" {
594 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
615 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
595616
596 const S = struct {617 const S = struct {
597 fn foo() !void {618 fn foo() !void {
...@@ -655,6 +676,7 @@ test "error union payload is properly aligned" {...@@ -655,6 +676,7 @@ test "error union payload is properly aligned" {
655 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO676 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
656 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO677 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
657 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO678 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
679 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
658680
659 const S = struct {681 const S = struct {
660 a: u128,682 a: u128,
...@@ -670,6 +692,7 @@ test "error union payload is properly aligned" {...@@ -670,6 +692,7 @@ test "error union payload is properly aligned" {
670692
671test "ret_ptr doesn't cause own inferred error set to be resolved" {693test "ret_ptr doesn't cause own inferred error set to be resolved" {
672 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO694 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
673696
674 const S = struct {697 const S = struct {
675 fn foo() !void {}698 fn foo() !void {}
...@@ -686,6 +709,7 @@ test "ret_ptr doesn't cause own inferred error set to be resolved" {...@@ -686,6 +709,7 @@ test "ret_ptr doesn't cause own inferred error set to be resolved" {
686test "simple else prong allowed even when all errors handled" {709test "simple else prong allowed even when all errors handled" {
687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO710 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
688 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO711 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
712 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
689713
690 const S = struct {714 const S = struct {
691 fn foo() !u8 {715 fn foo() !u8 {
...@@ -714,6 +738,7 @@ test "pointer to error union payload" {...@@ -714,6 +738,7 @@ test "pointer to error union payload" {
714 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO738 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO739 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
716 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO740 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
741 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
717742
718 var err_union: anyerror!u8 = 15;743 var err_union: anyerror!u8 = 15;
719744
...@@ -747,6 +772,7 @@ test "error union of noreturn used with if" {...@@ -747,6 +772,7 @@ test "error union of noreturn used with if" {
747 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO772 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
748 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO773 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
749 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO774 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
775 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
750776
751 NoReturn.a = 64;777 NoReturn.a = 64;
752 if (NoReturn.loop()) {778 if (NoReturn.loop()) {
...@@ -761,6 +787,7 @@ test "error union of noreturn used with try" {...@@ -761,6 +787,7 @@ test "error union of noreturn used with try" {
761 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO787 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
762 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO788 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
763 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO789 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
790 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
764791
765 NoReturn.a = 64;792 NoReturn.a = 64;
766 const err = NoReturn.testTry();793 const err = NoReturn.testTry();
...@@ -772,6 +799,7 @@ test "error union of noreturn used with catch" {...@@ -772,6 +799,7 @@ test "error union of noreturn used with catch" {
772 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO799 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
773 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO800 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
774 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO801 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
802 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
775803
776 NoReturn.a = 64;804 NoReturn.a = 64;
777 const err = NoReturn.testCatch();805 const err = NoReturn.testCatch();
...@@ -782,6 +810,7 @@ test "alignment of wrapping an error union payload" {...@@ -782,6 +810,7 @@ test "alignment of wrapping an error union payload" {
782 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;810 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
783 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;811 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
784 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;812 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
813 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
785814
786 const S = struct {815 const S = struct {
787 const I = extern struct { x: i128 };816 const I = extern struct { x: i128 };
...@@ -796,6 +825,7 @@ test "alignment of wrapping an error union payload" {...@@ -796,6 +825,7 @@ test "alignment of wrapping an error union payload" {
796825
797test "compare error union and error set" {826test "compare error union and error set" {
798 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;827 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
799829
800 var a: anyerror = error.Foo;830 var a: anyerror = error.Foo;
801 var b: anyerror!u32 = error.Bar;831 var b: anyerror!u32 = error.Bar;
...@@ -831,6 +861,7 @@ test "error from comptime string" {...@@ -831,6 +861,7 @@ test "error from comptime string" {
831 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO861 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
832 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO862 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
833 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO863 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
834865
835 const name = "Weird error name!";866 const name = "Weird error name!";
836 const S = struct {867 const S = struct {
test/behavior/eval.zig+44
...@@ -20,6 +20,7 @@ const should_be_1235 = unwrapAndAddOne(1234);...@@ -20,6 +20,7 @@ const should_be_1235 = unwrapAndAddOne(1234);
20test "static add one" {20test "static add one" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
24 try expect(should_be_1235 == 1235);25 try expect(should_be_1235 == 1235);
25}26}
...@@ -70,6 +71,7 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 {...@@ -70,6 +71,7 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 {
7071
71test "constant expressions" {72test "constant expressions" {
72 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7375
74 var array: [array_size]u8 = undefined;76 var array: [array_size]u8 = undefined;
75 try expect(@sizeOf(@TypeOf(array)) == 20);77 try expect(@sizeOf(@TypeOf(array)) == 20);
...@@ -90,6 +92,7 @@ fn letsTryToCompareBools(a: bool, b: bool) bool {...@@ -90,6 +92,7 @@ fn letsTryToCompareBools(a: bool, b: bool) bool {
90}92}
91test "inlined block and runtime block phi" {93test "inlined block and runtime block phi" {
92 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO94 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9396
94 try expect(letsTryToCompareBools(true, true));97 try expect(letsTryToCompareBools(true, true));
95 try expect(letsTryToCompareBools(true, false));98 try expect(letsTryToCompareBools(true, false));
...@@ -137,6 +140,7 @@ test "pointer to type" {...@@ -137,6 +140,7 @@ test "pointer to type" {
137test "a type constructed in a global expression" {140test "a type constructed in a global expression" {
138 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO141 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
139 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
140144
141 var l: List = undefined;145 var l: List = undefined;
142 l.array[0] = 10;146 l.array[0] = 10;
...@@ -232,6 +236,7 @@ const vertices = [_]Vertex{...@@ -232,6 +236,7 @@ const vertices = [_]Vertex{
232236
233test "statically initialized list" {237test "statically initialized list" {
234 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO238 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
235240
236 try expect(static_point_list[0].x == 1);241 try expect(static_point_list[0].x == 1);
237 try expect(static_point_list[0].y == 2);242 try expect(static_point_list[0].y == 2);
...@@ -337,6 +342,7 @@ fn doesAlotT(comptime T: type, value: usize) T {...@@ -337,6 +342,7 @@ fn doesAlotT(comptime T: type, value: usize) T {
337342
338test "@setEvalBranchQuota at same scope as generic function call" {343test "@setEvalBranchQuota at same scope as generic function call" {
339 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO344 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
340346
341 try expect(doesAlotT(u32, 2) == 2);347 try expect(doesAlotT(u32, 2) == 2);
342}348}
...@@ -387,6 +393,7 @@ test "return 0 from function that has u0 return type" {...@@ -387,6 +393,7 @@ test "return 0 from function that has u0 return type" {
387393
388test "statically initialized struct" {394test "statically initialized struct" {
389 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO395 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
396 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
390397
391 st_init_str_foo.x += 1;398 st_init_str_foo.x += 1;
392 try expect(st_init_str_foo.x == 14);399 try expect(st_init_str_foo.x == 14);
...@@ -435,6 +442,7 @@ fn copyWithPartialInline(s: []u32, b: []u8) void {...@@ -435,6 +442,7 @@ fn copyWithPartialInline(s: []u32, b: []u8) void {
435test "binary math operator in partially inlined function" {442test "binary math operator in partially inlined function" {
436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO443 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
445 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
438446
439 var s: [4]u32 = undefined;447 var s: [4]u32 = undefined;
440 var b: [16]u8 = undefined;448 var b: [16]u8 = undefined;
...@@ -454,6 +462,7 @@ test "comptime shl" {...@@ -454,6 +462,7 @@ test "comptime shl" {
454 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO462 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO463 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO464 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
465 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
457466
458 var a: u128 = 3;467 var a: u128 = 3;
459 var b: u7 = 63;468 var b: u7 = 63;
...@@ -498,6 +507,7 @@ test "comptime shlWithOverflow" {...@@ -498,6 +507,7 @@ test "comptime shlWithOverflow" {
498507
499test "const ptr to variable data changes at runtime" {508test "const ptr to variable data changes at runtime" {
500 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO509 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
510 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
501511
502 try expect(foo_ref.name[0] == 'a');512 try expect(foo_ref.name[0] == 'a');
503 foo_ref.name = "b";513 foo_ref.name = "b";
...@@ -516,6 +526,7 @@ test "runtime 128 bit integer division" {...@@ -516,6 +526,7 @@ test "runtime 128 bit integer division" {
516 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO526 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
517 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO527 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
518 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO528 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
519530
520 var a: u128 = 152313999999999991610955792383;531 var a: u128 = 152313999999999991610955792383;
521 var b: u128 = 10000000000000000000;532 var b: u128 = 10000000000000000000;
...@@ -525,6 +536,7 @@ test "runtime 128 bit integer division" {...@@ -525,6 +536,7 @@ test "runtime 128 bit integer division" {
525536
526test "@tagName of @typeInfo" {537test "@tagName of @typeInfo" {
527 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO538 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
528540
529 const str = @tagName(@typeInfo(u8));541 const str = @tagName(@typeInfo(u8));
530 try expect(std.mem.eql(u8, str, "Int"));542 try expect(std.mem.eql(u8, str, "Int"));
...@@ -534,6 +546,7 @@ test "static eval list init" {...@@ -534,6 +546,7 @@ test "static eval list init" {
534 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO546 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO547 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO548 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
549 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
537550
538 try expect(static_vec3.data[2] == 1.0);551 try expect(static_vec3.data[2] == 1.0);
539 try expect(vec3(0.0, 0.0, 3.0).data[2] == 3.0);552 try expect(vec3(0.0, 0.0, 3.0).data[2] == 3.0);
...@@ -549,6 +562,8 @@ pub fn vec3(x: f32, y: f32, z: f32) Vec3 {...@@ -549,6 +562,8 @@ pub fn vec3(x: f32, y: f32, z: f32) Vec3 {
549}562}
550563
551test "inlined loop has array literal with elided runtime scope on first iteration but not second iteration" {564test "inlined loop has array literal with elided runtime scope on first iteration but not second iteration" {
565 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
566
552 var runtime = [1]i32{3};567 var runtime = [1]i32{3};
553 comptime var i: usize = 0;568 comptime var i: usize = 0;
554 inline while (i < 2) : (i += 1) {569 inline while (i < 2) : (i += 1) {
...@@ -562,6 +577,7 @@ test "inlined loop has array literal with elided runtime scope on first iteratio...@@ -562,6 +577,7 @@ test "inlined loop has array literal with elided runtime scope on first iteratio
562577
563test "ptr to local array argument at comptime" {578test "ptr to local array argument at comptime" {
564 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
580 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
565581
566 comptime {582 comptime {
567 var bytes: [10]u8 = undefined;583 var bytes: [10]u8 = undefined;
...@@ -597,6 +613,8 @@ fn testCompTimeUIntComparisons(x: u32) void {...@@ -597,6 +613,8 @@ fn testCompTimeUIntComparisons(x: u32) void {
597const hi1 = "hi";613const hi1 = "hi";
598const hi2 = hi1;614const hi2 = hi1;
599test "const global shares pointer with other same one" {615test "const global shares pointer with other same one" {
616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
617
600 try assertEqualPtrs(&hi1[0], &hi2[0]);618 try assertEqualPtrs(&hi1[0], &hi2[0]);
601 comptime try expect(&hi1[0] == &hi2[0]);619 comptime try expect(&hi1[0] == &hi2[0]);
602}620}
...@@ -721,6 +739,7 @@ test "*align(1) u16 is the same as *align(1:0:2) u16" {...@@ -721,6 +739,7 @@ test "*align(1) u16 is the same as *align(1:0:2) u16" {
721test "array concatenation of function calls" {739test "array concatenation of function calls" {
722 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;740 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
723 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;741 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
742 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
724743
725 var a = oneItem(3) ++ oneItem(4);744 var a = oneItem(3) ++ oneItem(4);
726 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));745 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));
...@@ -729,6 +748,7 @@ test "array concatenation of function calls" {...@@ -729,6 +748,7 @@ test "array concatenation of function calls" {
729test "array multiplication of function calls" {748test "array multiplication of function calls" {
730 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;749 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
731 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;750 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
751 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
732752
733 var a = oneItem(3) ** scalar(2);753 var a = oneItem(3) ** scalar(2);
734 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));754 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));
...@@ -745,6 +765,7 @@ fn scalar(x: u32) u32 {...@@ -745,6 +765,7 @@ fn scalar(x: u32) u32 {
745test "array concatenation peer resolves element types - value" {765test "array concatenation peer resolves element types - value" {
746 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;766 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
747 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;767 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
768 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
748769
749 var a = [2]u3{ 1, 7 };770 var a = [2]u3{ 1, 7 };
750 var b = [3]u8{ 200, 225, 255 };771 var b = [3]u8{ 200, 225, 255 };
...@@ -760,6 +781,7 @@ test "array concatenation peer resolves element types - value" {...@@ -760,6 +781,7 @@ test "array concatenation peer resolves element types - value" {
760test "array concatenation peer resolves element types - pointer" {781test "array concatenation peer resolves element types - pointer" {
761 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;782 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
762 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;783 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
784 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
763785
764 var a = [2]u3{ 1, 7 };786 var a = [2]u3{ 1, 7 };
765 var b = [3]u8{ 200, 225, 255 };787 var b = [3]u8{ 200, 225, 255 };
...@@ -777,6 +799,7 @@ test "array concatenation sets the sentinel - value" {...@@ -777,6 +799,7 @@ test "array concatenation sets the sentinel - value" {
777 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;799 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
778 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;800 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
779 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;801 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
802 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
780803
781 var a = [2]u3{ 1, 7 };804 var a = [2]u3{ 1, 7 };
782 var b = [3:69]u8{ 200, 225, 255 };805 var b = [3:69]u8{ 200, 225, 255 };
...@@ -793,6 +816,7 @@ test "array concatenation sets the sentinel - value" {...@@ -793,6 +816,7 @@ test "array concatenation sets the sentinel - value" {
793816
794test "array concatenation sets the sentinel - pointer" {817test "array concatenation sets the sentinel - pointer" {
795 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
819 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
796820
797 var a = [2]u3{ 1, 7 };821 var a = [2]u3{ 1, 7 };
798 var b = [3:69]u8{ 200, 225, 255 };822 var b = [3:69]u8{ 200, 225, 255 };
...@@ -812,6 +836,7 @@ test "array multiplication sets the sentinel - value" {...@@ -812,6 +836,7 @@ test "array multiplication sets the sentinel - value" {
812 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;836 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
813 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;837 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
814 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;838 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
839 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
815840
816 var a = [2:7]u3{ 1, 6 };841 var a = [2:7]u3{ 1, 6 };
817 var b = a ** 2;842 var b = a ** 2;
...@@ -827,6 +852,7 @@ test "array multiplication sets the sentinel - value" {...@@ -827,6 +852,7 @@ test "array multiplication sets the sentinel - value" {
827test "array multiplication sets the sentinel - pointer" {852test "array multiplication sets the sentinel - pointer" {
828 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;853 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
829 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;854 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
855 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
830856
831 var a = [2:7]u3{ 1, 6 };857 var a = [2:7]u3{ 1, 6 };
832 var b = &a ** 2;858 var b = &a ** 2;
...@@ -851,6 +877,7 @@ test "comptime assign int to optional int" {...@@ -851,6 +877,7 @@ test "comptime assign int to optional int" {
851test "two comptime calls with array default initialized to undefined" {877test "two comptime calls with array default initialized to undefined" {
852 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO878 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
853 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO879 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
880 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
854881
855 const S = struct {882 const S = struct {
856 const CrossTarget = struct {883 const CrossTarget = struct {
...@@ -935,6 +962,7 @@ test "const local with comptime init through array init" {...@@ -935,6 +962,7 @@ test "const local with comptime init through array init" {
935962
936test "closure capture type of runtime-known parameter" {963test "closure capture type of runtime-known parameter" {
937 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO964 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
965 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
938966
939 const S = struct {967 const S = struct {
940 fn b(c: anytype) !void {968 fn b(c: anytype) !void {
...@@ -949,6 +977,7 @@ test "closure capture type of runtime-known parameter" {...@@ -949,6 +977,7 @@ test "closure capture type of runtime-known parameter" {
949977
950test "comptime break passing through runtime condition converted to runtime break" {978test "comptime break passing through runtime condition converted to runtime break" {
951 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO979 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
980 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
952981
953 const S = struct {982 const S = struct {
954 fn doTheTest() !void {983 fn doTheTest() !void {
...@@ -982,6 +1011,7 @@ test "comptime break to outer loop passing through runtime condition converted t...@@ -982,6 +1011,7 @@ test "comptime break to outer loop passing through runtime condition converted t
982 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1011 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
983 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1012 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
984 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1013 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1014 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9851015
986 const S = struct {1016 const S = struct {
987 fn doTheTest() !void {1017 fn doTheTest() !void {
...@@ -1032,6 +1062,7 @@ test "comptime break operand passing through runtime condition converted to runt...@@ -1032,6 +1062,7 @@ test "comptime break operand passing through runtime condition converted to runt
10321062
1033test "comptime break operand passing through runtime switch converted to runtime break" {1063test "comptime break operand passing through runtime switch converted to runtime break" {
1034 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1064 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1065 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10351066
1036 const S = struct {1067 const S = struct {
1037 fn doTheTest(runtime: u8) !void {1068 fn doTheTest(runtime: u8) !void {
...@@ -1051,6 +1082,7 @@ test "comptime break operand passing through runtime switch converted to runtime...@@ -1051,6 +1082,7 @@ test "comptime break operand passing through runtime switch converted to runtime
10511082
1052test "no dependency loop for alignment of self struct" {1083test "no dependency loop for alignment of self struct" {
1053 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1084 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1085 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10541086
1055 const S = struct {1087 const S = struct {
1056 fn doTheTest() !void {1088 fn doTheTest() !void {
...@@ -1087,6 +1119,7 @@ test "no dependency loop for alignment of self struct" {...@@ -1087,6 +1119,7 @@ test "no dependency loop for alignment of self struct" {
10871119
1088test "no dependency loop for alignment of self bare union" {1120test "no dependency loop for alignment of self bare union" {
1089 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10901123
1091 const S = struct {1124 const S = struct {
1092 fn doTheTest() !void {1125 fn doTheTest() !void {
...@@ -1123,6 +1156,7 @@ test "no dependency loop for alignment of self bare union" {...@@ -1123,6 +1156,7 @@ test "no dependency loop for alignment of self bare union" {
11231156
1124test "no dependency loop for alignment of self tagged union" {1157test "no dependency loop for alignment of self tagged union" {
1125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1158 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1159 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11261160
1127 const S = struct {1161 const S = struct {
1128 fn doTheTest() !void {1162 fn doTheTest() !void {
...@@ -1166,6 +1200,7 @@ test "storing an array of type in a field" {...@@ -1166,6 +1200,7 @@ test "storing an array of type in a field" {
1166 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1200 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1167 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1168 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11691204
1170 const S = struct {1205 const S = struct {
1171 fn doTheTest() void {1206 fn doTheTest() void {
...@@ -1194,6 +1229,7 @@ test "storing an array of type in a field" {...@@ -1194,6 +1229,7 @@ test "storing an array of type in a field" {
1194test "pass pointer to field of comptime-only type as a runtime parameter" {1229test "pass pointer to field of comptime-only type as a runtime parameter" {
1195 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1230 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11971233
1198 const S = struct {1234 const S = struct {
1199 const Mixed = struct {1235 const Mixed = struct {
...@@ -1309,6 +1345,7 @@ test "lazy sizeof is resolved in division" {...@@ -1309,6 +1345,7 @@ test "lazy sizeof is resolved in division" {
13091345
1310test "lazy value is resolved as slice operand" {1346test "lazy value is resolved as slice operand" {
1311 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1347 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13121349
1313 const A = struct { a: u32 };1350 const A = struct { a: u32 };
1314 var a: [512]u64 = undefined;1351 var a: [512]u64 = undefined;
...@@ -1365,6 +1402,8 @@ test "inline for inside a runtime condition" {...@@ -1365,6 +1402,8 @@ test "inline for inside a runtime condition" {
1365}1402}
13661403
1367test "continue in inline for inside a comptime switch" {1404test "continue in inline for inside a comptime switch" {
1405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1406
1368 const arr = .{ 1, 2, 3 };1407 const arr = .{ 1, 2, 3 };
1369 var count: u8 = 0;1408 var count: u8 = 0;
1370 switch (arr[1]) {1409 switch (arr[1]) {
...@@ -1428,6 +1467,8 @@ test "continue nested inline for loop in named block expr" {...@@ -1428,6 +1467,8 @@ test "continue nested inline for loop in named block expr" {
1428}1467}
14291468
1430test "x and false is comptime-known false" {1469test "x and false is comptime-known false" {
1470 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1471
1431 const T = struct {1472 const T = struct {
1432 var x: u32 = 0;1473 var x: u32 = 0;
14331474
...@@ -1453,6 +1494,8 @@ test "x and false is comptime-known false" {...@@ -1453,6 +1494,8 @@ test "x and false is comptime-known false" {
1453}1494}
14541495
1455test "x or true is comptime-known true" {1496test "x or true is comptime-known true" {
1497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1498
1456 const T = struct {1499 const T = struct {
1457 var x: u32 = 0;1500 var x: u32 = 0;
14581501
...@@ -1482,6 +1525,7 @@ test "non-optional and optional array elements concatenated" {...@@ -1482,6 +1525,7 @@ test "non-optional and optional array elements concatenated" {
1482 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1483 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1526 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1484 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1527 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14851529
1486 const array = [1]u8{'A'} ++ [1]?u8{null};1530 const array = [1]u8{'A'} ++ [1]?u8{null};
1487 var index: usize = 0;1531 var index: usize = 0;
test/behavior/export.zig+2
...@@ -22,6 +22,8 @@ const PackedUnion = packed union {...@@ -22,6 +22,8 @@ const PackedUnion = packed union {
22};22};
2323
24test "packed struct, enum, union parameters in extern function" {24test "packed struct, enum, union parameters in extern function" {
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26
25 testPackedStuff(&(PackedStruct{27 testPackedStuff(&(PackedStruct{
26 .a = 1,28 .a = 1,
27 .b = 2,29 .b = 2,
test/behavior/field_parent_ptr.zig+2
...@@ -4,6 +4,7 @@ const builtin = @import("builtin");...@@ -4,6 +4,7 @@ const builtin = @import("builtin");
4test "@fieldParentPtr non-first field" {4test "@fieldParentPtr non-first field" {
5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7 try testParentFieldPtr(&foo.c);8 try testParentFieldPtr(&foo.c);
8 comptime try testParentFieldPtr(&foo.c);9 comptime try testParentFieldPtr(&foo.c);
9}10}
...@@ -11,6 +12,7 @@ test "@fieldParentPtr non-first field" {...@@ -11,6 +12,7 @@ test "@fieldParentPtr non-first field" {
11test "@fieldParentPtr first field" {12test "@fieldParentPtr first field" {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14 try testParentFieldPtrFirst(&foo.a);16 try testParentFieldPtrFirst(&foo.a);
15 comptime try testParentFieldPtrFirst(&foo.a);17 comptime try testParentFieldPtrFirst(&foo.a);
16}18}
test/behavior/floatop.zig+30
...@@ -22,6 +22,7 @@ fn epsForType(comptime T: type) T {...@@ -22,6 +22,7 @@ fn epsForType(comptime T: type) T {
22test "floating point comparisons" {22test "floating point comparisons" {
23 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
26 try testFloatComparisons();27 try testFloatComparisons();
27 comptime try testFloatComparisons();28 comptime try testFloatComparisons();
...@@ -57,6 +58,7 @@ test "different sized float comparisons" {...@@ -57,6 +58,7 @@ test "different sized float comparisons" {
57 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6062
61 try testDifferentSizedFloatComparisons();63 try testDifferentSizedFloatComparisons();
62 comptime try testDifferentSizedFloatComparisons();64 comptime try testDifferentSizedFloatComparisons();
...@@ -91,6 +93,7 @@ test "negative f128 floatToInt at compile-time" {...@@ -91,6 +93,7 @@ test "negative f128 floatToInt at compile-time" {
91 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO94 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
93 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO95 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9497
95 const a: f128 = -2;98 const a: f128 = -2;
96 var b = @floatToInt(i64, a);99 var b = @floatToInt(i64, a);
...@@ -102,6 +105,7 @@ test "@sqrt" {...@@ -102,6 +105,7 @@ test "@sqrt" {
102 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105109
106 comptime try testSqrt();110 comptime try testSqrt();
107 try testSqrt();111 try testSqrt();
...@@ -160,6 +164,7 @@ test "more @sqrt f16 tests" {...@@ -160,6 +164,7 @@ test "more @sqrt f16 tests" {
160 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO164 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163168
164 // TODO these are not all passing at comptime169 // TODO these are not all passing at comptime
165 try expect(@sqrt(@as(f16, 0.0)) == 0.0);170 try expect(@sqrt(@as(f16, 0.0)) == 0.0);
...@@ -185,6 +190,7 @@ test "@sin" {...@@ -185,6 +190,7 @@ test "@sin" {
185 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO190 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
186 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO191 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188194
189 comptime try testSin();195 comptime try testSin();
190 try testSin();196 try testSin();
...@@ -225,6 +231,7 @@ test "@cos" {...@@ -225,6 +231,7 @@ test "@cos" {
225 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO231 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228235
229 comptime try testCos();236 comptime try testCos();
230 try testCos();237 try testCos();
...@@ -265,6 +272,7 @@ test "@exp" {...@@ -265,6 +272,7 @@ test "@exp" {
265 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO272 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
266 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO273 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
267 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO274 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268276
269 comptime try testExp();277 comptime try testExp();
270 try testExp();278 try testExp();
...@@ -304,6 +312,7 @@ test "@exp2" {...@@ -304,6 +312,7 @@ test "@exp2" {
304 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO312 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO314 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
315 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307316
308 comptime try testExp2();317 comptime try testExp2();
309 try testExp2();318 try testExp2();
...@@ -343,6 +352,7 @@ test "@log" {...@@ -343,6 +352,7 @@ test "@log" {
343 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
344 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
346356
347 comptime try testLog();357 comptime try testLog();
348 try testLog();358 try testLog();
...@@ -374,6 +384,7 @@ test "@log with @vectors" {...@@ -374,6 +384,7 @@ test "@log with @vectors" {
374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
376 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO386 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
387 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
377388
378 {389 {
379 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };390 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };
...@@ -390,6 +401,7 @@ test "@log2" {...@@ -390,6 +401,7 @@ test "@log2" {
390 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO401 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
391 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO402 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
392 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO403 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
393405
394 comptime try testLog2();406 comptime try testLog2();
395 try testLog2();407 try testLog2();
...@@ -433,6 +445,7 @@ test "@log10" {...@@ -433,6 +445,7 @@ test "@log10" {
433 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO445 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
434 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO446 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
435 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO447 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
448 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
436449
437 comptime try testLog10();450 comptime try testLog10();
438 try testLog10();451 try testLog10();
...@@ -472,6 +485,7 @@ test "@fabs" {...@@ -472,6 +485,7 @@ test "@fabs" {
472 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO485 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
473 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
474 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
475489
476 comptime try testFabs();490 comptime try testFabs();
477 try testFabs();491 try testFabs();
...@@ -520,6 +534,7 @@ test "@floor" {...@@ -520,6 +534,7 @@ test "@floor" {
520 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO534 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
521 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO535 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
522 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
523538
524 comptime try testFloor();539 comptime try testFloor();
525 try testFloor();540 try testFloor();
...@@ -563,6 +578,7 @@ test "@ceil" {...@@ -563,6 +578,7 @@ test "@ceil" {
563 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO578 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
564 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO579 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
565 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO580 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
581 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
566582
567 comptime try testCeil();583 comptime try testCeil();
568 try testCeil();584 try testCeil();
...@@ -606,6 +622,7 @@ test "@trunc" {...@@ -606,6 +622,7 @@ test "@trunc" {
606 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO622 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
608 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO624 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
625 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
609626
610 comptime try testTrunc();627 comptime try testTrunc();
611 try testTrunc();628 try testTrunc();
...@@ -649,6 +666,7 @@ test "negation f16" {...@@ -649,6 +666,7 @@ test "negation f16" {
649 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO666 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
650 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO667 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
651 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO668 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
669 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
652670
653 if (builtin.os.tag == .freebsd) {671 if (builtin.os.tag == .freebsd) {
654 // TODO file issue to track this failure672 // TODO file issue to track this failure
...@@ -674,6 +692,7 @@ test "negation f32" {...@@ -674,6 +692,7 @@ test "negation f32" {
674 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO692 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
675 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO693 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
676 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO694 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
677696
678 const S = struct {697 const S = struct {
679 fn doTheTest() !void {698 fn doTheTest() !void {
...@@ -694,6 +713,7 @@ test "negation f64" {...@@ -694,6 +713,7 @@ test "negation f64" {
694 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO713 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO714 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
696 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO715 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
716 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
697717
698 const S = struct {718 const S = struct {
699 fn doTheTest() !void {719 fn doTheTest() !void {
...@@ -714,6 +734,7 @@ test "negation f80" {...@@ -714,6 +734,7 @@ test "negation f80" {
714 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO734 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO735 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
716 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO736 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
737 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
717738
718 const S = struct {739 const S = struct {
719 fn doTheTest() !void {740 fn doTheTest() !void {
...@@ -734,6 +755,7 @@ test "negation f128" {...@@ -734,6 +755,7 @@ test "negation f128" {
734 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO755 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
735 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO756 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
736 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO757 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
758 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
737759
738 const S = struct {760 const S = struct {
739 fn doTheTest() !void {761 fn doTheTest() !void {
...@@ -751,6 +773,7 @@ test "negation f128" {...@@ -751,6 +773,7 @@ test "negation f128" {
751773
752test "eval @setFloatMode at compile-time" {774test "eval @setFloatMode at compile-time" {
753 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO775 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
776 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
754777
755 const result = comptime fnWithFloatMode();778 const result = comptime fnWithFloatMode();
756 try expect(result == 1234.0);779 try expect(result == 1234.0);
...@@ -775,6 +798,7 @@ test "comptime fixed-width float zero divided by zero produces NaN" {...@@ -775,6 +798,7 @@ test "comptime fixed-width float zero divided by zero produces NaN" {
775 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO798 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
776 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO799 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
777 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO800 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
801 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
778802
779 inline for (.{ f16, f32, f64, f80, f128 }) |F| {803 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
780 try expect(math.isNan(@as(F, 0) / @as(F, 0)));804 try expect(math.isNan(@as(F, 0) / @as(F, 0)));
...@@ -786,6 +810,7 @@ test "comptime fixed-width float non-zero divided by zero produces signed Inf" {...@@ -786,6 +810,7 @@ test "comptime fixed-width float non-zero divided by zero produces signed Inf" {
786 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO810 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
787 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO811 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
788 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO812 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
813 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
789814
790 inline for (.{ f16, f32, f64, f80, f128 }) |F| {815 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
791 const pos = @as(F, 1) / @as(F, 0);816 const pos = @as(F, 1) / @as(F, 0);
...@@ -806,6 +831,7 @@ test "nan negation f16" {...@@ -806,6 +831,7 @@ test "nan negation f16" {
806 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO831 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
807 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO832 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
808 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO833 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
834 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
809835
810 const nan_comptime = comptime math.nan(f16);836 const nan_comptime = comptime math.nan(f16);
811 const neg_nan_comptime = -nan_comptime;837 const neg_nan_comptime = -nan_comptime;
...@@ -825,6 +851,7 @@ test "nan negation f32" {...@@ -825,6 +851,7 @@ test "nan negation f32" {
825 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO851 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
826 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO852 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
827 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO853 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
854 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
828855
829 const nan_comptime = comptime math.nan(f32);856 const nan_comptime = comptime math.nan(f32);
830 const neg_nan_comptime = -nan_comptime;857 const neg_nan_comptime = -nan_comptime;
...@@ -844,6 +871,7 @@ test "nan negation f64" {...@@ -844,6 +871,7 @@ test "nan negation f64" {
844 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO871 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
845 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO872 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
846 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO873 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
874 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
847875
848 const nan_comptime = comptime math.nan(f64);876 const nan_comptime = comptime math.nan(f64);
849 const neg_nan_comptime = -nan_comptime;877 const neg_nan_comptime = -nan_comptime;
...@@ -863,6 +891,7 @@ test "nan negation f128" {...@@ -863,6 +891,7 @@ test "nan negation f128" {
863 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO891 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO892 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
865 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO893 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
894 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
866895
867 const nan_comptime = comptime math.nan(f128);896 const nan_comptime = comptime math.nan(f128);
868 const neg_nan_comptime = -nan_comptime;897 const neg_nan_comptime = -nan_comptime;
...@@ -882,6 +911,7 @@ test "nan negation f80" {...@@ -882,6 +911,7 @@ test "nan negation f80" {
882 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO911 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
883 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO912 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
884 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO913 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
914 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
885915
886 const nan_comptime = comptime math.nan(f80);916 const nan_comptime = comptime math.nan(f80);
887 const neg_nan_comptime = -nan_comptime;917 const neg_nan_comptime = -nan_comptime;
test/behavior/fn.zig+19
...@@ -75,6 +75,7 @@ test "return inner function which references comptime variable of outer function...@@ -75,6 +75,7 @@ test "return inner function which references comptime variable of outer function
75test "discard the result of a function that returns a struct" {75test "discard the result of a function that returns a struct" {
76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
78 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7879
79 const S = struct {80 const S = struct {
80 fn entry() void {81 fn entry() void {
...@@ -98,6 +99,7 @@ test "inline function call that calls optional function pointer, return pointer...@@ -98,6 +99,7 @@ test "inline function call that calls optional function pointer, return pointer
98 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;99 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
100 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
101103
102 const S = struct {104 const S = struct {
103 field: u32,105 field: u32,
...@@ -173,11 +175,14 @@ fn fComplexCallconvRet(x: u32) callconv(blk: {...@@ -173,11 +175,14 @@ fn fComplexCallconvRet(x: u32) callconv(blk: {
173test "function with complex callconv and return type expressions" {175test "function with complex callconv and return type expressions" {
174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176179
177 try expect(fComplexCallconvRet(3).x == 9);180 try expect(fComplexCallconvRet(3).x == 9);
178}181}
179182
180test "pass by non-copying value" {183test "pass by non-copying value" {
184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
185
181 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);186 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);
182}187}
183188
...@@ -192,6 +197,7 @@ fn addPointCoords(pt: Point) i32 {...@@ -192,6 +197,7 @@ fn addPointCoords(pt: Point) i32 {
192197
193test "pass by non-copying value through var arg" {198test "pass by non-copying value through var arg" {
194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;199 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
195201
196 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);202 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);
197}203}
...@@ -202,6 +208,8 @@ fn addPointCoordsVar(pt: anytype) !i32 {...@@ -202,6 +208,8 @@ fn addPointCoordsVar(pt: anytype) !i32 {
202}208}
203209
204test "pass by non-copying value as method" {210test "pass by non-copying value as method" {
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212
205 var pt = Point2{ .x = 1, .y = 2 };213 var pt = Point2{ .x = 1, .y = 2 };
206 try expect(pt.addPointCoords() == 3);214 try expect(pt.addPointCoords() == 3);
207}215}
...@@ -216,6 +224,8 @@ const Point2 = struct {...@@ -216,6 +224,8 @@ const Point2 = struct {
216};224};
217225
218test "pass by non-copying value as method, which is generic" {226test "pass by non-copying value as method, which is generic" {
227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228
219 var pt = Point3{ .x = 1, .y = 2 };229 var pt = Point3{ .x = 1, .y = 2 };
220 try expect(pt.addPointCoords(i32) == 3);230 try expect(pt.addPointCoords(i32) == 3);
221}231}
...@@ -231,6 +241,8 @@ const Point3 = struct {...@@ -231,6 +241,8 @@ const Point3 = struct {
231};241};
232242
233test "pass by non-copying value as method, at comptime" {243test "pass by non-copying value as method, at comptime" {
244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
245
234 comptime {246 comptime {
235 var pt = Point2{ .x = 1, .y = 2 };247 var pt = Point2{ .x = 1, .y = 2 };
236 try expect(pt.addPointCoords() == 3);248 try expect(pt.addPointCoords() == 3);
...@@ -240,6 +252,7 @@ test "pass by non-copying value as method, at comptime" {...@@ -240,6 +252,7 @@ test "pass by non-copying value as method, at comptime" {
240test "implicit cast fn call result to optional in field result" {252test "implicit cast fn call result to optional in field result" {
241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
242 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243256
244 const S = struct {257 const S = struct {
245 fn entry() !void {258 fn entry() !void {
...@@ -280,6 +293,7 @@ fn voidFun(a: i32, b: void, c: i32, d: void) !void {...@@ -280,6 +293,7 @@ fn voidFun(a: i32, b: void, c: i32, d: void) !void {
280293
281test "call function with empty string" {294test "call function with empty string" {
282 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
283297
284 acceptsString("");298 acceptsString("");
285}299}
...@@ -292,6 +306,7 @@ test "function pointers" {...@@ -292,6 +306,7 @@ test "function pointers" {
292 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO306 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
309 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
295310
296 const fns = [_]*const @TypeOf(fn1){311 const fns = [_]*const @TypeOf(fn1){
297 &fn1,312 &fn1,
...@@ -329,6 +344,7 @@ test "function call with anon list literal" {...@@ -329,6 +344,7 @@ test "function call with anon list literal" {
329 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO344 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO345 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
331 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO346 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
332348
333 const S = struct {349 const S = struct {
334 fn doTheTest() !void {350 fn doTheTest() !void {
...@@ -349,6 +365,7 @@ test "function call with anon list literal - 2D" {...@@ -349,6 +365,7 @@ test "function call with anon list literal - 2D" {
349 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO365 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO366 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO367 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352369
353 const S = struct {370 const S = struct {
354 fn doTheTest() !void {371 fn doTheTest() !void {
...@@ -394,6 +411,7 @@ test "function with inferred error set but returning no error" {...@@ -394,6 +411,7 @@ test "function with inferred error set but returning no error" {
394411
395test "import passed byref to function in return type" {412test "import passed byref to function in return type" {
396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO413 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397415
398 const S = struct {416 const S = struct {
399 fn get() @import("std").ArrayListUnmanaged(i32) {417 fn get() @import("std").ArrayListUnmanaged(i32) {
...@@ -428,6 +446,7 @@ test "implicit cast function to function ptr" {...@@ -428,6 +446,7 @@ test "implicit cast function to function ptr" {
428test "method call with optional and error union first param" {446test "method call with optional and error union first param" {
429 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO447 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
430 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO448 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
449 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
431450
432 const S = struct {451 const S = struct {
433 x: i32 = 1234,452 x: i32 = 1234,
test/behavior/fn_delegation.zig+1
...@@ -33,6 +33,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {...@@ -33,6 +33,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {
3333
34test "fn delegation" {34test "fn delegation" {
35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3637
37 const foo = Foo{};38 const foo = Foo{};
38 try expect(foo.one() == 11);39 try expect(foo.one() == 11);
test/behavior/for.zig+8
...@@ -6,6 +6,7 @@ const mem = std.mem;...@@ -6,6 +6,7 @@ const mem = std.mem;
66
7test "continue in for loop" {7test "continue in for loop" {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 const array = [_]i32{ 1, 2, 3, 4, 5 };11 const array = [_]i32{ 1, 2, 3, 4, 5 };
11 var sum: i32 = 0;12 var sum: i32 = 0;
...@@ -68,6 +69,7 @@ test "basic for loop" {...@@ -68,6 +69,7 @@ test "basic for loop" {
68 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;69 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;70 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;71 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7173
72 const expected_result = [_]u8{ 9, 8, 7, 6, 0, 1, 2, 3 } ** 3;74 const expected_result = [_]u8{ 9, 8, 7, 6, 0, 1, 2, 3 } ** 3;
7375
...@@ -111,6 +113,7 @@ test "for with null and T peer types and inferred result location type" {...@@ -111,6 +113,7 @@ test "for with null and T peer types and inferred result location type" {
111 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
112 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
114117
115 const S = struct {118 const S = struct {
116 fn doTheTest(slice: []const u8) !void {119 fn doTheTest(slice: []const u8) !void {
...@@ -130,6 +133,7 @@ test "for with null and T peer types and inferred result location type" {...@@ -130,6 +133,7 @@ test "for with null and T peer types and inferred result location type" {
130133
131test "2 break statements and an else" {134test "2 break statements and an else" {
132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
133137
134 const S = struct {138 const S = struct {
135 fn entry(t: bool, f: bool) !void {139 fn entry(t: bool, f: bool) !void {
...@@ -151,6 +155,7 @@ test "for loop with pointer elem var" {...@@ -151,6 +155,7 @@ test "for loop with pointer elem var" {
151 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
152 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154159
155 const source = "abcdefg";160 const source = "abcdefg";
156 var target: [source.len]u8 = undefined;161 var target: [source.len]u8 = undefined;
...@@ -176,6 +181,7 @@ fn mangleString(s: []u8) void {...@@ -176,6 +181,7 @@ fn mangleString(s: []u8) void {
176181
177test "for copies its payload" {182test "for copies its payload" {
178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179185
180 const S = struct {186 const S = struct {
181 fn doTheTest() !void {187 fn doTheTest() !void {
...@@ -195,6 +201,7 @@ test "for on slice with allowzero ptr" {...@@ -195,6 +201,7 @@ test "for on slice with allowzero ptr" {
195 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO201 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
198205
199 const S = struct {206 const S = struct {
200 fn doTheTest(slice: []const u8) !void {207 fn doTheTest(slice: []const u8) !void {
...@@ -209,6 +216,7 @@ test "for on slice with allowzero ptr" {...@@ -209,6 +216,7 @@ test "for on slice with allowzero ptr" {
209216
210test "else continue outer for" {217test "else continue outer for" {
211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
219 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212220
213 var i: usize = 6;221 var i: usize = 6;
214 var buf: [5]u8 = undefined;222 var buf: [5]u8 = undefined;
test/behavior/generics.zig+16
...@@ -18,6 +18,7 @@ fn checkSize(comptime T: type) usize {...@@ -18,6 +18,7 @@ fn checkSize(comptime T: type) usize {
1818
19test "simple generic fn" {19test "simple generic fn" {
20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2122
22 try expect(max(i32, 3, -1) == 3);23 try expect(max(i32, 3, -1) == 3);
23 try expect(max(u8, 1, 100) == 100);24 try expect(max(u8, 1, 100) == 100);
...@@ -58,6 +59,7 @@ test "fn with comptime args" {...@@ -58,6 +59,7 @@ test "fn with comptime args" {
58 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;60 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6163
62 try expect(gimmeTheBigOne(1234, 5678) == 5678);64 try expect(gimmeTheBigOne(1234, 5678) == 5678);
63 try expect(shouldCallSameInstance(34, 12) == 34);65 try expect(shouldCallSameInstance(34, 12) == 34);
...@@ -68,6 +70,7 @@ test "anytype params" {...@@ -68,6 +70,7 @@ test "anytype params" {
68 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;70 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;72 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7174
72 try expect(max_i32(12, 34) == 34);75 try expect(max_i32(12, 34) == 34);
73 try expect(max_f64(1.2, 3.4) == 3.4);76 try expect(max_f64(1.2, 3.4) == 3.4);
...@@ -92,6 +95,7 @@ fn max_f64(a: f64, b: f64) f64 {...@@ -92,6 +95,7 @@ fn max_f64(a: f64, b: f64) f64 {
92test "type constructed by comptime function call" {95test "type constructed by comptime function call" {
93 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;96 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
94 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9599
96 var l: SimpleList(10) = undefined;100 var l: SimpleList(10) = undefined;
97 l.array[0] = 10;101 l.array[0] = 10;
...@@ -114,6 +118,7 @@ fn SimpleList(comptime L: usize) type {...@@ -114,6 +118,7 @@ fn SimpleList(comptime L: usize) type {
114test "function with return type type" {118test "function with return type type" {
115 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
117122
118 var list: List(i32) = undefined;123 var list: List(i32) = undefined;
119 var list2: List(i32) = undefined;124 var list2: List(i32) = undefined;
...@@ -154,6 +159,7 @@ fn aGenericFn(comptime T: type, comptime a: T, b: T) T {...@@ -154,6 +159,7 @@ fn aGenericFn(comptime T: type, comptime a: T, b: T) T {
154test "generic fn with implicit cast" {159test "generic fn with implicit cast" {
155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157163
158 try expect(getFirstByte(u8, &[_]u8{13}) == 13);164 try expect(getFirstByte(u8, &[_]u8{13}) == 13);
159 try expect(getFirstByte(u16, &[_]u16{165 try expect(getFirstByte(u16, &[_]u16{
...@@ -171,6 +177,7 @@ fn getFirstByte(comptime T: type, mem: []const T) u8 {...@@ -171,6 +177,7 @@ fn getFirstByte(comptime T: type, mem: []const T) u8 {
171test "generic fn keeps non-generic parameter types" {177test "generic fn keeps non-generic parameter types" {
172 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;178 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174181
175 const A = 128;182 const A = 128;
176183
...@@ -204,6 +211,8 @@ fn foo2(arg: anytype) bool {...@@ -204,6 +211,8 @@ fn foo2(arg: anytype) bool {
204}211}
205212
206test "generic struct" {213test "generic struct" {
214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215
207 var a1 = GenNode(i32){216 var a1 = GenNode(i32){
208 .value = 13,217 .value = 13,
209 .next = null,218 .next = null,
...@@ -243,6 +252,7 @@ test "generic function instantiation turns into comptime call" {...@@ -243,6 +252,7 @@ test "generic function instantiation turns into comptime call" {
243 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
244 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
245 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
246256
247 const S = struct {257 const S = struct {
248 fn doTheTest() !void {258 fn doTheTest() !void {
...@@ -276,6 +286,8 @@ test "generic function instantiation turns into comptime call" {...@@ -276,6 +286,8 @@ test "generic function instantiation turns into comptime call" {
276}286}
277287
278test "generic function with void and comptime parameter" {288test "generic function with void and comptime parameter" {
289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290
279 const S = struct { x: i32 };291 const S = struct { x: i32 };
280 const namespace = struct {292 const namespace = struct {
281 fn foo(v: void, s: *S, comptime T: type) !void {293 fn foo(v: void, s: *S, comptime T: type) !void {
...@@ -290,6 +302,7 @@ test "generic function with void and comptime parameter" {...@@ -290,6 +302,7 @@ test "generic function with void and comptime parameter" {
290302
291test "anonymous struct return type referencing comptime parameter" {303test "anonymous struct return type referencing comptime parameter" {
292 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
293306
294 const S = struct {307 const S = struct {
295 pub fn extraData(comptime T: type, index: usize) struct { data: T, end: usize } {308 pub fn extraData(comptime T: type, index: usize) struct { data: T, end: usize } {
...@@ -307,6 +320,7 @@ test "anonymous struct return type referencing comptime parameter" {...@@ -307,6 +320,7 @@ test "anonymous struct return type referencing comptime parameter" {
307test "generic function instantiation non-duplicates" {320test "generic function instantiation non-duplicates" {
308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO321 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
309 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
310 if (builtin.os.tag == .wasi) return error.SkipZigTest;324 if (builtin.os.tag == .wasi) return error.SkipZigTest;
311325
312 const S = struct {326 const S = struct {
...@@ -369,6 +383,8 @@ test "extern function used as generic parameter" {...@@ -369,6 +383,8 @@ test "extern function used as generic parameter" {
369}383}
370384
371test "generic struct as parameter type" {385test "generic struct as parameter type" {
386 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
387
372 const S = struct {388 const S = struct {
373 fn doTheTest(comptime Int: type, thing: struct { int: Int }) !void {389 fn doTheTest(comptime Int: type, thing: struct { int: Int }) !void {
374 try expect(thing.int == 123);390 try expect(thing.int == 123);
test/behavior/if.zig+5
...@@ -45,6 +45,7 @@ var global_with_err: anyerror!u32 = error.SomeError;...@@ -45,6 +45,7 @@ var global_with_err: anyerror!u32 = error.SomeError;
4545
46test "unwrap mutable global var" {46test "unwrap mutable global var" {
47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4849
49 if (global_with_val) |v| {50 if (global_with_val) |v| {
50 try expect(v == 0);51 try expect(v == 0);
...@@ -81,6 +82,7 @@ test "if copies its payload" {...@@ -81,6 +82,7 @@ test "if copies its payload" {
81 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;82 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8486
85 const S = struct {87 const S = struct {
86 fn doTheTest() !void {88 fn doTheTest() !void {
...@@ -116,6 +118,7 @@ test "if peer expressions inferred optional type" {...@@ -116,6 +118,7 @@ test "if peer expressions inferred optional type" {
116 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;118 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
119122
120 var self: []const u8 = "abcdef";123 var self: []const u8 = "abcdef";
121 var index: usize = 0;124 var index: usize = 0;
...@@ -133,6 +136,7 @@ test "if-else expression with runtime condition result location is inferred opti...@@ -133,6 +136,7 @@ test "if-else expression with runtime condition result location is inferred opti
133 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;136 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;137 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
136140
137 const A = struct { b: u64, c: u64 };141 const A = struct { b: u64, c: u64 };
138 var d: bool = true;142 var d: bool = true;
...@@ -145,6 +149,7 @@ test "result location with inferred type ends up being pointer to comptime_int"...@@ -145,6 +149,7 @@ test "result location with inferred type ends up being pointer to comptime_int"
145 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;149 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
148153
149 var a: ?u32 = 1234;154 var a: ?u32 = 1234;
150 var b: u32 = 2000;155 var b: u32 = 2000;
test/behavior/incomplete_struct_param_tld.zig+2
...@@ -22,6 +22,8 @@ fn foo(a: A) i32 {...@@ -22,6 +22,8 @@ fn foo(a: A) i32 {
22}22}
2323
24test "incomplete struct param top level declaration" {24test "incomplete struct param top level declaration" {
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26
25 const a = A{27 const a = A{
26 .b = B{28 .b = B{
27 .c = C{ .x = 13 },29 .c = C{ .x = 13 },
test/behavior/inline_switch.zig+9
...@@ -4,6 +4,7 @@ const builtin = @import("builtin");...@@ -4,6 +4,7 @@ const builtin = @import("builtin");
44
5test "inline scalar prongs" {5test "inline scalar prongs" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
78
8 var x: usize = 0;9 var x: usize = 0;
9 switch (x) {10 switch (x) {
...@@ -18,6 +19,7 @@ test "inline scalar prongs" {...@@ -18,6 +19,7 @@ test "inline scalar prongs" {
1819
19test "inline prong ranges" {20test "inline prong ranges" {
20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2123
22 var x: usize = 0;24 var x: usize = 0;
23 switch (x) {25 switch (x) {
...@@ -31,6 +33,7 @@ test "inline prong ranges" {...@@ -31,6 +33,7 @@ test "inline prong ranges" {
31const E = enum { a, b, c, d };33const E = enum { a, b, c, d };
32test "inline switch enums" {34test "inline switch enums" {
33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3437
35 var x: E = .a;38 var x: E = .a;
36 switch (x) {39 switch (x) {
...@@ -44,6 +47,7 @@ test "inline switch unions" {...@@ -44,6 +47,7 @@ test "inline switch unions" {
44 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
46 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4751
48 var x: U = .a;52 var x: U = .a;
49 switch (x) {53 switch (x) {
...@@ -68,6 +72,7 @@ test "inline switch unions" {...@@ -68,6 +72,7 @@ test "inline switch unions" {
6872
69test "inline else bool" {73test "inline else bool" {
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7176
72 var a = true;77 var a = true;
73 switch (a) {78 switch (a) {
...@@ -78,6 +83,7 @@ test "inline else bool" {...@@ -78,6 +83,7 @@ test "inline else bool" {
7883
79test "inline else error" {84test "inline else error" {
80 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO85 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8187
82 const Err = error{ a, b, c };88 const Err = error{ a, b, c };
83 var a = Err.a;89 var a = Err.a;
...@@ -90,6 +96,7 @@ test "inline else error" {...@@ -90,6 +96,7 @@ test "inline else error" {
90test "inline else enum" {96test "inline else enum" {
91 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
93100
94 const E2 = enum(u8) { a = 2, b = 3, c = 4, d = 5 };101 const E2 = enum(u8) { a = 2, b = 3, c = 4, d = 5 };
95 var a: E2 = .a;102 var a: E2 = .a;
...@@ -101,6 +108,7 @@ test "inline else enum" {...@@ -101,6 +108,7 @@ test "inline else enum" {
101108
102test "inline else int with gaps" {109test "inline else int with gaps" {
103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
104112
105 var a: u8 = 0;113 var a: u8 = 0;
106 switch (a) {114 switch (a) {
...@@ -117,6 +125,7 @@ test "inline else int with gaps" {...@@ -117,6 +125,7 @@ test "inline else int with gaps" {
117125
118test "inline else int all values" {126test "inline else int all values" {
119 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO127 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120129
121 var a: u2 = 0;130 var a: u2 = 0;
122 switch (a) {131 switch (a) {
test/behavior/int128.zig+4
...@@ -8,6 +8,7 @@ test "uint128" {...@@ -8,6 +8,7 @@ test "uint128" {
8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
12 var buff: u128 = maxInt(u128);13 var buff: u128 = maxInt(u128);
13 try expect(buff == maxInt(u128));14 try expect(buff == maxInt(u128));
...@@ -26,6 +27,7 @@ test "undefined 128 bit int" {...@@ -26,6 +27,7 @@ test "undefined 128 bit int" {
26 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2931
30 @setRuntimeSafety(true);32 @setRuntimeSafety(true);
3133
...@@ -43,6 +45,7 @@ test "int128" {...@@ -43,6 +45,7 @@ test "int128" {
43 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO45 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO46 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4649
47 var buff: i128 = -1;50 var buff: i128 = -1;
48 try expect(buff < 0 and (buff + 1) == 0);51 try expect(buff < 0 and (buff + 1) == 0);
...@@ -64,6 +67,7 @@ test "truncate int128" {...@@ -64,6 +67,7 @@ test "truncate int128" {
64 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6771
68 var buff: u128 = maxInt(u128);72 var buff: u128 = maxInt(u128);
69 try expect(@truncate(u64, buff) == maxInt(u64));73 try expect(@truncate(u64, buff) == maxInt(u64));
test/behavior/int_div.zig+1
...@@ -6,6 +6,7 @@ test "integer division" {...@@ -6,6 +6,7 @@ test "integer division" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 try testDivision();11 try testDivision();
11 comptime try testDivision();12 comptime try testDivision();
test/behavior/inttoptr.zig+1
...@@ -14,6 +14,7 @@ test "mutate through ptr initialized with constant intToPtr value" {...@@ -14,6 +14,7 @@ test "mutate through ptr initialized with constant intToPtr value" {
14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718
18 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);19 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);
19}20}
test/behavior/ir_block_deps.zig+1
...@@ -20,6 +20,7 @@ fn getErrInt() anyerror!i32 {...@@ -20,6 +20,7 @@ fn getErrInt() anyerror!i32 {
20test "ir block deps" {20test "ir block deps" {
21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
24 try expect((foo(1) catch unreachable) == 0);25 try expect((foo(1) catch unreachable) == 0);
25 try expect((foo(2) catch unreachable) == 0);26 try expect((foo(2) catch unreachable) == 0);
test/behavior/math.zig+43
...@@ -11,6 +11,7 @@ const math = std.math;...@@ -11,6 +11,7 @@ const math = std.math;
11test "assignment operators" {11test "assignment operators" {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1415
15 var i: u32 = 0;16 var i: u32 = 0;
16 i += 5;17 i += 5;
...@@ -63,6 +64,7 @@ test "@clz" {...@@ -63,6 +64,7 @@ test "@clz" {
63 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6668
67 try testClz();69 try testClz();
68 comptime try testClz();70 comptime try testClz();
...@@ -79,6 +81,7 @@ test "@clz big ints" {...@@ -79,6 +81,7 @@ test "@clz big ints" {
79 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO81 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8285
83 try testClzBigInts();86 try testClzBigInts();
84 comptime try testClzBigInts();87 comptime try testClzBigInts();
...@@ -99,6 +102,7 @@ test "@clz vectors" {...@@ -99,6 +102,7 @@ test "@clz vectors" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO104 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102106
103 try testClzVectors();107 try testClzVectors();
104 comptime try testClzVectors();108 comptime try testClzVectors();
...@@ -138,6 +142,7 @@ test "@ctz" {...@@ -138,6 +142,7 @@ test "@ctz" {
138 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
139 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
141146
142 try testCtz();147 try testCtz();
143 comptime try testCtz();148 comptime try testCtz();
...@@ -160,6 +165,7 @@ test "@ctz vectors" {...@@ -160,6 +165,7 @@ test "@ctz vectors" {
160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO167 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163169
164 try testCtzVectors();170 try testCtzVectors();
165 comptime try testCtzVectors();171 comptime try testCtzVectors();
...@@ -193,6 +199,7 @@ const ten = 10;...@@ -193,6 +199,7 @@ const ten = 10;
193test "float equality" {199test "float equality" {
194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196203
197 const x: f64 = 0.012;204 const x: f64 = 0.012;
198 const y: f64 = x + 1.0;205 const y: f64 = x + 1.0;
...@@ -370,6 +377,7 @@ test "division" {...@@ -370,6 +377,7 @@ test "division" {
370 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO377 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
371 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO378 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
380 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
373381
374 try testDivision();382 try testDivision();
375 comptime try testDivision();383 comptime try testDivision();
...@@ -446,6 +454,7 @@ test "division half-precision floats" {...@@ -446,6 +454,7 @@ test "division half-precision floats" {
446 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO454 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
447 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
448 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
457 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
449458
450 try testDivisionFP16();459 try testDivisionFP16();
451 comptime try testDivisionFP16();460 comptime try testDivisionFP16();
...@@ -526,6 +535,7 @@ fn testUnsignedNegationWrappingEval(x: u16) !void {...@@ -526,6 +535,7 @@ fn testUnsignedNegationWrappingEval(x: u16) !void {
526test "unsigned 64-bit division" {535test "unsigned 64-bit division" {
527 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO537 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
529539
530 try test_u64_div();540 try test_u64_div();
531 comptime try test_u64_div();541 comptime try test_u64_div();
...@@ -566,6 +576,7 @@ test "f128" {...@@ -566,6 +576,7 @@ test "f128" {
566 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO576 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
567 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO577 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
568 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
569580
570 try test_f128();581 try test_f128();
571 comptime try test_f128();582 comptime try test_f128();
...@@ -594,6 +605,7 @@ test "128-bit multiplication" {...@@ -594,6 +605,7 @@ test "128-bit multiplication" {
594 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO605 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
595 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO606 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
596 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
608 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
597609
598 var a: i128 = 3;610 var a: i128 = 3;
599 var b: i128 = 2;611 var b: i128 = 2;
...@@ -602,6 +614,8 @@ test "128-bit multiplication" {...@@ -602,6 +614,8 @@ test "128-bit multiplication" {
602}614}
603615
604test "@addWithOverflow" {616test "@addWithOverflow" {
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618
605 {619 {
606 var result: u8 = undefined;620 var result: u8 = undefined;
607 try expect(@addWithOverflow(u8, 250, 100, &result));621 try expect(@addWithOverflow(u8, 250, 100, &result));
...@@ -636,6 +650,8 @@ test "@addWithOverflow" {...@@ -636,6 +650,8 @@ test "@addWithOverflow" {
636}650}
637651
638test "small int addition" {652test "small int addition" {
653 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
654
639 var x: u2 = 0;655 var x: u2 = 0;
640 try expect(x == 0);656 try expect(x == 0);
641657
...@@ -824,6 +840,7 @@ test "extensive @mulWithOverflow" {...@@ -824,6 +840,7 @@ test "extensive @mulWithOverflow" {
824test "@mulWithOverflow bitsize > 32" {840test "@mulWithOverflow bitsize > 32" {
825 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO841 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
826 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO842 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
843 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
827844
828 {845 {
829 var a: u62 = 3;846 var a: u62 = 3;
...@@ -875,6 +892,8 @@ test "@mulWithOverflow bitsize > 32" {...@@ -875,6 +892,8 @@ test "@mulWithOverflow bitsize > 32" {
875}892}
876893
877test "@subWithOverflow" {894test "@subWithOverflow" {
895 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
896
878 {897 {
879 var result: u8 = undefined;898 var result: u8 = undefined;
880 try expect(@subWithOverflow(u8, 1, 2, &result));899 try expect(@subWithOverflow(u8, 1, 2, &result));
...@@ -981,6 +1000,7 @@ test "quad hex float literal parsing accurate" {...@@ -981,6 +1000,7 @@ test "quad hex float literal parsing accurate" {
981 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1000 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
982 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1001 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
983 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1002 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1003 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9841004
985 const a: f128 = 0x1.1111222233334444555566667777p+0;1005 const a: f128 = 0x1.1111222233334444555566667777p+0;
9861006
...@@ -1204,6 +1224,7 @@ test "float modulo division using @mod" {...@@ -1204,6 +1224,7 @@ test "float modulo division using @mod" {
1204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1206 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1226 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1207 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021228 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
12081229
1209 comptime try fmod(f16);1230 comptime try fmod(f16);
...@@ -1246,6 +1267,7 @@ test "@sqrt" {...@@ -1246,6 +1267,7 @@ test "@sqrt" {
1246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1267 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1248 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1269 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12491271
1250 try testSqrt(f64, 12.0);1272 try testSqrt(f64, 12.0);
1251 comptime try testSqrt(f64, 12.0);1273 comptime try testSqrt(f64, 12.0);
...@@ -1272,6 +1294,7 @@ test "@fabs" {...@@ -1272,6 +1294,7 @@ test "@fabs" {
1272 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1273 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1274 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1296 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12751298
1276 try testFabs(f128, 12.0);1299 try testFabs(f128, 12.0);
1277 comptime try testFabs(f128, 12.0);1300 comptime try testFabs(f128, 12.0);
...@@ -1293,6 +1316,7 @@ test "@fabs f80" {...@@ -1293,6 +1316,7 @@ test "@fabs f80" {
1293 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1294 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1317 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1295 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1318 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12961320
1297 try testFabs(f80, 12.0);1321 try testFabs(f80, 12.0);
1298 comptime try testFabs(f80, 12.0);1322 comptime try testFabs(f80, 12.0);
...@@ -1309,6 +1333,7 @@ test "@floor" {...@@ -1309,6 +1333,7 @@ test "@floor" {
1309 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1310 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1334 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1311 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1335 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13121337
1313 try testFloor(f64, 12.0);1338 try testFloor(f64, 12.0);
1314 comptime try testFloor(f64, 12.0);1339 comptime try testFloor(f64, 12.0);
...@@ -1328,6 +1353,7 @@ test "@floor f80" {...@@ -1328,6 +1353,7 @@ test "@floor f80" {
1328 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1329 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1330 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1355 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1356 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1331 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021357 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
13321358
1333 try testFloor(f80, 12.0);1359 try testFloor(f80, 12.0);
...@@ -1339,6 +1365,7 @@ test "@floor f128" {...@@ -1339,6 +1365,7 @@ test "@floor f128" {
1339 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1340 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1366 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1341 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1367 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13421369
1343 try testFloor(f128, 12.0);1370 try testFloor(f128, 12.0);
1344 comptime try testFloor(f128, 12.0);1371 comptime try testFloor(f128, 12.0);
...@@ -1355,6 +1382,7 @@ test "@ceil" {...@@ -1355,6 +1382,7 @@ test "@ceil" {
1355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1382 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1356 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1383 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1357 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1384 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13581386
1359 try testCeil(f64, 12.0);1387 try testCeil(f64, 12.0);
1360 comptime try testCeil(f64, 12.0);1388 comptime try testCeil(f64, 12.0);
...@@ -1374,6 +1402,7 @@ test "@ceil f80" {...@@ -1374,6 +1402,7 @@ test "@ceil f80" {
1374 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1376 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1404 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1377 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021406 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
13781407
1379 try testCeil(f80, 12.0);1408 try testCeil(f80, 12.0);
...@@ -1385,6 +1414,7 @@ test "@ceil f128" {...@@ -1385,6 +1414,7 @@ test "@ceil f128" {
1385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1415 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1387 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1416 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13881418
1389 try testCeil(f128, 12.0);1419 try testCeil(f128, 12.0);
1390 comptime try testCeil(f128, 12.0);1420 comptime try testCeil(f128, 12.0);
...@@ -1401,6 +1431,7 @@ test "@trunc" {...@@ -1401,6 +1431,7 @@ test "@trunc" {
1401 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1431 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1402 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1403 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1433 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14041435
1405 try testTrunc(f64, 12.0);1436 try testTrunc(f64, 12.0);
1406 comptime try testTrunc(f64, 12.0);1437 comptime try testTrunc(f64, 12.0);
...@@ -1420,6 +1451,7 @@ test "@trunc f80" {...@@ -1420,6 +1451,7 @@ test "@trunc f80" {
1420 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1451 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1421 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1422 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1453 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1423 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021455 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
14241456
1425 try testTrunc(f80, 12.0);1457 try testTrunc(f80, 12.0);
...@@ -1437,6 +1469,7 @@ test "@trunc f128" {...@@ -1437,6 +1469,7 @@ test "@trunc f128" {
1437 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1438 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1470 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1439 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1471 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1472 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14401473
1441 try testTrunc(f128, 12.0);1474 try testTrunc(f128, 12.0);
1442 comptime try testTrunc(f128, 12.0);1475 comptime try testTrunc(f128, 12.0);
...@@ -1461,6 +1494,7 @@ test "@round" {...@@ -1461,6 +1494,7 @@ test "@round" {
1461 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1462 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1463 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1496 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14641498
1465 try testRound(f64, 12.0);1499 try testRound(f64, 12.0);
1466 comptime try testRound(f64, 12.0);1500 comptime try testRound(f64, 12.0);
...@@ -1480,6 +1514,7 @@ test "@round f80" {...@@ -1480,6 +1514,7 @@ test "@round f80" {
1480 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1481 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1482 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1516 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1517 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1483 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/126021518 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
14841519
1485 try testRound(f80, 12.0);1520 try testRound(f80, 12.0);
...@@ -1491,6 +1526,7 @@ test "@round f128" {...@@ -1491,6 +1526,7 @@ test "@round f128" {
1491 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1526 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1492 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1527 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1493 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1528 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14941530
1495 try testRound(f128, 12.0);1531 try testRound(f128, 12.0);
1496 comptime try testRound(f128, 12.0);1532 comptime try testRound(f128, 12.0);
...@@ -1508,6 +1544,7 @@ test "vector integer addition" {...@@ -1508,6 +1544,7 @@ test "vector integer addition" {
1508 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1544 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1509 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1545 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1510 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO1546 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1547 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15111548
1512 const S = struct {1549 const S = struct {
1513 fn doTheTest() !void {1550 fn doTheTest() !void {
...@@ -1528,6 +1565,7 @@ test "NaN comparison" {...@@ -1528,6 +1565,7 @@ test "NaN comparison" {
1528 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1529 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1566 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1530 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1567 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1568 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15311569
1532 try testNanEqNan(f16);1570 try testNanEqNan(f16);
1533 try testNanEqNan(f32);1571 try testNanEqNan(f32);
...@@ -1544,6 +1582,7 @@ test "NaN comparison f80" {...@@ -1544,6 +1582,7 @@ test "NaN comparison f80" {
1544 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1545 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1583 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1546 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1584 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1585 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15471586
1548 try testNanEqNan(f80);1587 try testNanEqNan(f80);
1549 comptime try testNanEqNan(f80);1588 comptime try testNanEqNan(f80);
...@@ -1566,6 +1605,7 @@ test "vector comparison" {...@@ -1566,6 +1605,7 @@ test "vector comparison" {
1566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1605 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1567 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1606 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1568 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1607 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1608 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15691609
1570 const S = struct {1610 const S = struct {
1571 fn doTheTest() !void {1611 fn doTheTest() !void {
...@@ -1595,6 +1635,7 @@ test "signed zeros are represented properly" {...@@ -1595,6 +1635,7 @@ test "signed zeros are represented properly" {
1595 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1635 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1596 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1636 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1597 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1637 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1638 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15981639
1599 const S = struct {1640 const S = struct {
1600 fn doTheTest() !void {1641 fn doTheTest() !void {
...@@ -1631,6 +1672,7 @@ test "fabs" {...@@ -1631,6 +1672,7 @@ test "fabs" {
1631 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1672 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1632 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1673 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1633 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1674 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1675 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16341676
1635 inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| {1677 inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| {
1636 // normals1678 // normals
...@@ -1659,6 +1701,7 @@ test "absFloat" {...@@ -1659,6 +1701,7 @@ test "absFloat" {
1659 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1701 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1660 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1702 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1661 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1703 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1704 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16621705
1663 try testAbsFloat();1706 try testAbsFloat();
1664 comptime try testAbsFloat();1707 comptime try testAbsFloat();
test/behavior/maximum_minimum.zig+4
...@@ -8,6 +8,7 @@ test "@max" {...@@ -8,6 +8,7 @@ test "@max" {
8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
12 const S = struct {13 const S = struct {
13 fn doTheTest() !void {14 fn doTheTest() !void {
...@@ -27,6 +28,7 @@ test "@max on vectors" {...@@ -27,6 +28,7 @@ test "@max on vectors" {
27 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO28 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3032
31 const S = struct {33 const S = struct {
32 fn doTheTest() !void {34 fn doTheTest() !void {
...@@ -54,6 +56,7 @@ test "@min" {...@@ -54,6 +56,7 @@ test "@min" {
54 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5760
58 const S = struct {61 const S = struct {
59 fn doTheTest() !void {62 fn doTheTest() !void {
...@@ -73,6 +76,7 @@ test "@min for vectors" {...@@ -73,6 +76,7 @@ test "@min for vectors" {
73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7680
77 const S = struct {81 const S = struct {
78 fn doTheTest() !void {82 fn doTheTest() !void {
test/behavior/member_func.zig+2
...@@ -30,6 +30,7 @@ test "standard field calls" {...@@ -30,6 +30,7 @@ test "standard field calls" {
30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3334
34 try expect(HasFuncs.one(0) == 1);35 try expect(HasFuncs.one(0) == 1);
35 try expect(HasFuncs.two(0) == 2);36 try expect(HasFuncs.two(0) == 2);
...@@ -73,6 +74,7 @@ test "@field field calls" {...@@ -73,6 +74,7 @@ test "@field field calls" {
73 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;75 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
75 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7678
77 try expect(@field(HasFuncs, "one")(0) == 1);79 try expect(@field(HasFuncs, "one")(0) == 1);
78 try expect(@field(HasFuncs, "two")(0) == 2);80 try expect(@field(HasFuncs, "two")(0) == 2);
test/behavior/merge_error_sets.zig+2
...@@ -14,6 +14,8 @@ fn foo() C!void {...@@ -14,6 +14,8 @@ fn foo() C!void {
14test "merge error sets" {14test "merge error sets" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18
17 if (foo()) {19 if (foo()) {
18 @panic("unexpected");20 @panic("unexpected");
19 } else |err| switch (err) {21 } else |err| switch (err) {
test/behavior/muladd.zig+9
...@@ -5,6 +5,7 @@ test "@mulAdd" {...@@ -5,6 +5,7 @@ test "@mulAdd" {
5 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 comptime try testMulAdd();10 comptime try testMulAdd();
10 try testMulAdd();11 try testMulAdd();
...@@ -30,6 +31,7 @@ test "@mulAdd f16" {...@@ -30,6 +31,7 @@ test "@mulAdd f16" {
30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO33 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3335
34 comptime try testMulAdd16();36 comptime try testMulAdd16();
35 try testMulAdd16();37 try testMulAdd16();
...@@ -47,6 +49,7 @@ test "@mulAdd f80" {...@@ -47,6 +49,7 @@ test "@mulAdd f80" {
47 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/1260253 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
5154
52 comptime try testMulAdd80();55 comptime try testMulAdd80();
...@@ -65,6 +68,7 @@ test "@mulAdd f128" {...@@ -65,6 +68,7 @@ test "@mulAdd f128" {
65 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6872
69 comptime try testMulAdd128();73 comptime try testMulAdd128();
70 try testMulAdd128();74 try testMulAdd128();
...@@ -95,6 +99,7 @@ test "vector f16" {...@@ -95,6 +99,7 @@ test "vector f16" {
95 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
98103
99 comptime try vector16();104 comptime try vector16();
100 try vector16();105 try vector16();
...@@ -118,6 +123,7 @@ test "vector f32" {...@@ -118,6 +123,7 @@ test "vector f32" {
118 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO123 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121127
122 comptime try vector32();128 comptime try vector32();
123 try vector32();129 try vector32();
...@@ -141,6 +147,7 @@ test "vector f64" {...@@ -141,6 +147,7 @@ test "vector f64" {
141 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO147 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144151
145 comptime try vector64();152 comptime try vector64();
146 try vector64();153 try vector64();
...@@ -163,6 +170,7 @@ test "vector f80" {...@@ -163,6 +170,7 @@ test "vector f80" {
163 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO170 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602174 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
167175
168 comptime try vector80();176 comptime try vector80();
...@@ -187,6 +195,7 @@ test "vector f128" {...@@ -187,6 +195,7 @@ test "vector f128" {
187 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO195 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO196 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO197 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
198 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
190199
191 comptime try vector128();200 comptime try vector128();
192 try vector128();201 try vector128();
test/behavior/null.zig+8
...@@ -32,6 +32,7 @@ test "test maybe object and get a pointer to the inner value" {...@@ -32,6 +32,7 @@ test "test maybe object and get a pointer to the inner value" {
32 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;33 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;34 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3536
36 var maybe_bool: ?bool = true;37 var maybe_bool: ?bool = true;
3738
...@@ -52,6 +53,7 @@ test "maybe return" {...@@ -52,6 +53,7 @@ test "maybe return" {
52 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5557
56 try maybeReturnImpl();58 try maybeReturnImpl();
57 comptime try maybeReturnImpl();59 comptime try maybeReturnImpl();
...@@ -72,6 +74,7 @@ test "test null runtime" {...@@ -72,6 +74,7 @@ test "test null runtime" {
72 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;75 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
74 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7578
76 try testTestNullRuntime(null);79 try testTestNullRuntime(null);
77}80}
...@@ -83,6 +86,7 @@ fn testTestNullRuntime(x: ?i32) !void {...@@ -83,6 +86,7 @@ fn testTestNullRuntime(x: ?i32) !void {
83test "optional void" {86test "optional void" {
84 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
89 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8690
87 try optionalVoidImpl();91 try optionalVoidImpl();
88 comptime try optionalVoidImpl();92 comptime try optionalVoidImpl();
...@@ -106,6 +110,7 @@ const Empty = struct {};...@@ -106,6 +110,7 @@ const Empty = struct {};
106test "optional struct{}" {110test "optional struct{}" {
107 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
108 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
109114
110 _ = try optionalEmptyStructImpl();115 _ = try optionalEmptyStructImpl();
111 _ = comptime try optionalEmptyStructImpl();116 _ = comptime try optionalEmptyStructImpl();
...@@ -131,6 +136,7 @@ test "null with default unwrap" {...@@ -131,6 +136,7 @@ test "null with default unwrap" {
131136
132test "optional pointer to 0 bit type null value at runtime" {137test "optional pointer to 0 bit type null value at runtime" {
133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134140
135 const EmptyStruct = struct {};141 const EmptyStruct = struct {};
136 var x: ?*EmptyStruct = null;142 var x: ?*EmptyStruct = null;
...@@ -141,6 +147,7 @@ test "if var maybe pointer" {...@@ -141,6 +147,7 @@ test "if var maybe pointer" {
141 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;147 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144151
145 try expect(shouldBeAPlus1(Particle{152 try expect(shouldBeAPlus1(Particle{
146 .a = 14,153 .a = 14,
...@@ -184,6 +191,7 @@ test "unwrap optional which is field of global var" {...@@ -184,6 +191,7 @@ test "unwrap optional which is field of global var" {
184 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;191 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
187195
188 struct_with_optional.field = null;196 struct_with_optional.field = null;
189 if (struct_with_optional.field) |payload| {197 if (struct_with_optional.field) |payload| {
test/behavior/optional.zig+22
...@@ -7,6 +7,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;...@@ -7,6 +7,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;
77
8test "passing an optional integer as a parameter" {8test "passing an optional integer as a parameter" {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
11 const S = struct {12 const S = struct {
12 fn entry() bool {13 fn entry() bool {
...@@ -25,6 +26,8 @@ test "passing an optional integer as a parameter" {...@@ -25,6 +26,8 @@ test "passing an optional integer as a parameter" {
25pub const EmptyStruct = struct {};26pub const EmptyStruct = struct {};
2627
27test "optional pointer to size zero struct" {28test "optional pointer to size zero struct" {
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30
28 var e = EmptyStruct{};31 var e = EmptyStruct{};
29 var o: ?*EmptyStruct = &e;32 var o: ?*EmptyStruct = &e;
30 try expect(o != null);33 try expect(o != null);
...@@ -54,6 +57,7 @@ fn testNullPtrsEql() !void {...@@ -54,6 +57,7 @@ fn testNullPtrsEql() !void {
54test "optional with void type" {57test "optional with void type" {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;58 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5761
58 const Foo = struct {62 const Foo = struct {
59 x: ?void,63 x: ?void,
...@@ -66,6 +70,7 @@ test "address of unwrap optional" {...@@ -66,6 +70,7 @@ test "address of unwrap optional" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6974
70 const S = struct {75 const S = struct {
71 const Foo = struct {76 const Foo = struct {
...@@ -87,6 +92,7 @@ test "nested optional field in struct" {...@@ -87,6 +92,7 @@ test "nested optional field in struct" {
87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;92 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
89 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO94 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9096
91 const S2 = struct {97 const S2 = struct {
92 y: u8,98 y: u8,
...@@ -104,6 +110,7 @@ test "equality compare optional with non-optional" {...@@ -104,6 +110,7 @@ test "equality compare optional with non-optional" {
104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
106 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO112 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
107114
108 try test_cmp_optional_non_optional();115 try test_cmp_optional_non_optional();
109 comptime try test_cmp_optional_non_optional();116 comptime try test_cmp_optional_non_optional();
...@@ -140,6 +147,7 @@ fn test_cmp_optional_non_optional() !void {...@@ -140,6 +147,7 @@ fn test_cmp_optional_non_optional() !void {
140147
141test "unwrap function call with optional pointer return value" {148test "unwrap function call with optional pointer return value" {
142 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO149 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143151
144 const S = struct {152 const S = struct {
145 fn entry() !void {153 fn entry() !void {
...@@ -160,6 +168,7 @@ test "unwrap function call with optional pointer return value" {...@@ -160,6 +168,7 @@ test "unwrap function call with optional pointer return value" {
160168
161test "nested orelse" {169test "nested orelse" {
162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO170 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163172
164 const S = struct {173 const S = struct {
165 fn entry() !void {174 fn entry() !void {
...@@ -185,6 +194,7 @@ test "nested orelse" {...@@ -185,6 +194,7 @@ test "nested orelse" {
185194
186test "self-referential struct through a slice of optional" {195test "self-referential struct through a slice of optional" {
187 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO196 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188198
189 const S = struct {199 const S = struct {
190 const Node = struct {200 const Node = struct {
...@@ -220,6 +230,7 @@ test "coerce an anon struct literal to optional struct" {...@@ -220,6 +230,7 @@ test "coerce an anon struct literal to optional struct" {
220 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO230 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
223234
224 const S = struct {235 const S = struct {
225 const Struct = struct {236 const Struct = struct {
...@@ -239,6 +250,7 @@ test "0-bit child type coerced to optional return ptr result location" {...@@ -239,6 +250,7 @@ test "0-bit child type coerced to optional return ptr result location" {
239 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO250 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
240 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
253 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242254
243 const S = struct {255 const S = struct {
244 fn doTheTest() !void {256 fn doTheTest() !void {
...@@ -263,6 +275,7 @@ test "0-bit child type coerced to optional return ptr result location" {...@@ -263,6 +275,7 @@ test "0-bit child type coerced to optional return ptr result location" {
263275
264test "0-bit child type coerced to optional" {276test "0-bit child type coerced to optional" {
265 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
266279
267 const S = struct {280 const S = struct {
268 fn doTheTest() !void {281 fn doTheTest() !void {
...@@ -290,6 +303,7 @@ test "array of optional unaligned types" {...@@ -290,6 +303,7 @@ test "array of optional unaligned types" {
290 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO303 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
292 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
293307
294 const Enum = enum { one, two, three };308 const Enum = enum { one, two, three };
295309
...@@ -326,6 +340,7 @@ test "optional pointer to zero bit optional payload" {...@@ -326,6 +340,7 @@ test "optional pointer to zero bit optional payload" {
326 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO340 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
327 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO341 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
329344
330 const B = struct {345 const B = struct {
331 fn foo(_: *@This()) void {}346 fn foo(_: *@This()) void {}
...@@ -345,6 +360,7 @@ test "optional pointer to zero bit error union payload" {...@@ -345,6 +360,7 @@ test "optional pointer to zero bit error union payload" {
345 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO360 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
346 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO361 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
347 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO362 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
348364
349 const B = struct {365 const B = struct {
350 fn foo(_: *@This()) void {}366 fn foo(_: *@This()) void {}
...@@ -377,6 +393,8 @@ const NoReturn = struct {...@@ -377,6 +393,8 @@ const NoReturn = struct {
377};393};
378394
379test "optional of noreturn used with if" {395test "optional of noreturn used with if" {
396 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397
380 NoReturn.a = 64;398 NoReturn.a = 64;
381 if (NoReturn.loop()) |_| {399 if (NoReturn.loop()) |_| {
382 @compileError("bad");400 @compileError("bad");
...@@ -386,6 +404,8 @@ test "optional of noreturn used with if" {...@@ -386,6 +404,8 @@ test "optional of noreturn used with if" {
386}404}
387405
388test "optional of noreturn used with orelse" {406test "optional of noreturn used with orelse" {
407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408
389 NoReturn.a = 64;409 NoReturn.a = 64;
390 const val = NoReturn.testOrelse();410 const val = NoReturn.testOrelse();
391 try expect(val == 123);411 try expect(val == 123);
...@@ -402,6 +422,7 @@ test "alignment of wrapping an optional payload" {...@@ -402,6 +422,7 @@ test "alignment of wrapping an optional payload" {
402 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;422 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;423 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
405426
406 const S = struct {427 const S = struct {
407 const I = extern struct { x: i128 };428 const I = extern struct { x: i128 };
...@@ -419,6 +440,7 @@ test "Optional slice size is optimized" {...@@ -419,6 +440,7 @@ test "Optional slice size is optimized" {
419 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;440 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
420 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;441 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
421 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;442 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
443 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
422444
423 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));445 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
424 var a: ?[]const u8 = null;446 var a: ?[]const u8 = null;
test/behavior/packed-struct.zig+10
...@@ -6,6 +6,8 @@ const expectEqual = std.testing.expectEqual;...@@ -6,6 +6,8 @@ const expectEqual = std.testing.expectEqual;
6const native_endian = builtin.cpu.arch.endian();6const native_endian = builtin.cpu.arch.endian();
77
8test "flags in packed structs" {8test "flags in packed structs" {
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10
9 const Flags1 = packed struct {11 const Flags1 = packed struct {
10 // first 8 bits12 // first 8 bits
11 b0_0: u1,13 b0_0: u1,
...@@ -90,6 +92,8 @@ test "flags in packed structs" {...@@ -90,6 +92,8 @@ test "flags in packed structs" {
90}92}
9193
92test "consistent size of packed structs" {94test "consistent size of packed structs" {
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
96
93 const TxData1 = packed struct { data: u8, _23: u23, full: bool = false };97 const TxData1 = packed struct { data: u8, _23: u23, full: bool = false };
94 const TxData2 = packed struct { data: u9, _22: u22, full: bool = false };98 const TxData2 = packed struct { data: u9, _22: u22, full: bool = false };
9599
...@@ -354,6 +358,7 @@ test "load pointer from packed struct" {...@@ -354,6 +358,7 @@ test "load pointer from packed struct" {
354 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;358 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
355 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;359 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
356 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;360 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
357362
358 const A = struct {363 const A = struct {
359 index: u16,364 index: u16,
...@@ -374,6 +379,7 @@ test "@ptrToInt on a packed struct field" {...@@ -374,6 +379,7 @@ test "@ptrToInt on a packed struct field" {
374 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;379 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
375 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
376 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;381 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
377383
378 const S = struct {384 const S = struct {
379 const P = packed struct {385 const P = packed struct {
...@@ -394,6 +400,7 @@ test "optional pointer in packed struct" {...@@ -394,6 +400,7 @@ test "optional pointer in packed struct" {
394 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;400 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
395 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
396 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
403 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397404
398 const T = packed struct { ptr: ?*const u8 };405 const T = packed struct { ptr: ?*const u8 };
399 var n: u8 = 0;406 var n: u8 = 0;
...@@ -407,6 +414,7 @@ test "nested packed struct field access test" {...@@ -407,6 +414,7 @@ test "nested packed struct field access test" {
407 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO414 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO415 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO416 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
410 //418 //
411 const Vec2 = packed struct {419 const Vec2 = packed struct {
412 x: f32,420 x: f32,
...@@ -523,6 +531,7 @@ test "runtime init of unnamed packed struct type" {...@@ -523,6 +531,7 @@ test "runtime init of unnamed packed struct type" {
523 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;531 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
524 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;532 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
525 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;533 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
534 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
526535
527 var z: u8 = 123;536 var z: u8 = 123;
528 try (packed struct {537 try (packed struct {
...@@ -537,6 +546,7 @@ test "packed struct passed to callconv(.C) function" {...@@ -537,6 +546,7 @@ test "packed struct passed to callconv(.C) function" {
537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;546 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
538 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;547 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
539 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;548 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
549 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
540550
541 const S = struct {551 const S = struct {
542 const Packed = packed struct {552 const Packed = packed struct {
test/behavior/packed_struct_explicit_backing_int.zig+1
...@@ -9,6 +9,7 @@ test "packed struct explicit backing integer" {...@@ -9,6 +9,7 @@ test "packed struct explicit backing integer" {
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
13 const S1 = packed struct { a: u8, b: u8, c: u8 };14 const S1 = packed struct { a: u8, b: u8, c: u8 };
1415
test/behavior/pointers.zig+21
...@@ -18,6 +18,7 @@ fn testDerefPtr() !void {...@@ -18,6 +18,7 @@ fn testDerefPtr() !void {
1818
19test "pointer arithmetic" {19test "pointer arithmetic" {
20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2122
22 var ptr: [*]const u8 = "abcd";23 var ptr: [*]const u8 = "abcd";
2324
...@@ -49,6 +50,8 @@ fn PtrOf(comptime T: type) type {...@@ -49,6 +50,8 @@ fn PtrOf(comptime T: type) type {
49}50}
5051
51test "implicit cast single item pointer to C pointer and back" {52test "implicit cast single item pointer to C pointer and back" {
53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
54
52 var y: u8 = 11;55 var y: u8 = 11;
53 var x: [*c]u8 = &y;56 var x: [*c]u8 = &y;
54 var z: *u8 = x;57 var z: *u8 = x;
...@@ -64,6 +67,7 @@ test "initialize const optional C pointer to null" {...@@ -64,6 +67,7 @@ test "initialize const optional C pointer to null" {
6467
65test "assigning integer to C pointer" {68test "assigning integer to C pointer" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6771
68 var x: i32 = 0;72 var x: i32 = 0;
69 var y: i32 = 1;73 var y: i32 = 1;
...@@ -79,6 +83,8 @@ test "assigning integer to C pointer" {...@@ -79,6 +83,8 @@ test "assigning integer to C pointer" {
79}83}
8084
81test "C pointer comparison and arithmetic" {85test "C pointer comparison and arithmetic" {
86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
87
82 const S = struct {88 const S = struct {
83 fn doTheTest() !void {89 fn doTheTest() !void {
84 var ptr1: [*c]u32 = 0;90 var ptr1: [*c]u32 = 0;
...@@ -143,6 +149,7 @@ test "peer type resolution with C pointer and const pointer" {...@@ -143,6 +149,7 @@ test "peer type resolution with C pointer and const pointer" {
143test "implicit casting between C pointer and optional non-C pointer" {149test "implicit casting between C pointer and optional non-C pointer" {
144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
145 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
146153
147 var slice: []const u8 = "aoeu";154 var slice: []const u8 = "aoeu";
148 const opt_many_ptr: ?[*]const u8 = slice.ptr;155 const opt_many_ptr: ?[*]const u8 = slice.ptr;
...@@ -157,6 +164,7 @@ test "implicit cast error unions with non-optional to optional pointer" {...@@ -157,6 +164,7 @@ test "implicit cast error unions with non-optional to optional pointer" {
157 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO164 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
159 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
160168
161 const S = struct {169 const S = struct {
162 fn doTheTest() !void {170 fn doTheTest() !void {
...@@ -186,6 +194,7 @@ test "allowzero pointer and slice" {...@@ -186,6 +194,7 @@ test "allowzero pointer and slice" {
186 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;194 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
187 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
188 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
189198
190 var ptr = @intToPtr([*]allowzero i32, 0);199 var ptr = @intToPtr([*]allowzero i32, 0);
191 var opt_ptr: ?[*]allowzero i32 = ptr;200 var opt_ptr: ?[*]allowzero i32 = ptr;
...@@ -204,6 +213,7 @@ test "assign null directly to C pointer and test null equality" {...@@ -204,6 +213,7 @@ test "assign null directly to C pointer and test null equality" {
204 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO213 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO215 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
207217
208 var x: [*c]i32 = null;218 var x: [*c]i32 = null;
209 try expect(x == null);219 try expect(x == null);
...@@ -269,6 +279,7 @@ test "array initialization types" {...@@ -269,6 +279,7 @@ test "array initialization types" {
269279
270test "null terminated pointer" {280test "null terminated pointer" {
271 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;281 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
272283
273 const S = struct {284 const S = struct {
274 fn doTheTest() !void {285 fn doTheTest() !void {
...@@ -285,6 +296,7 @@ test "null terminated pointer" {...@@ -285,6 +296,7 @@ test "null terminated pointer" {
285296
286test "allow any sentinel" {297test "allow any sentinel" {
287 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;298 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
299 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
288300
289 const S = struct {301 const S = struct {
290 fn doTheTest() !void {302 fn doTheTest() !void {
...@@ -299,6 +311,7 @@ test "allow any sentinel" {...@@ -299,6 +311,7 @@ test "allow any sentinel" {
299311
300test "pointer sentinel with enums" {312test "pointer sentinel with enums" {
301 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
314 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
302315
303 const S = struct {316 const S = struct {
304 const Number = enum {317 const Number = enum {
...@@ -319,6 +332,7 @@ test "pointer sentinel with enums" {...@@ -319,6 +332,7 @@ test "pointer sentinel with enums" {
319test "pointer sentinel with optional element" {332test "pointer sentinel with optional element" {
320 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
321 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
335 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
322336
323 const S = struct {337 const S = struct {
324 fn doTheTest() !void {338 fn doTheTest() !void {
...@@ -335,6 +349,7 @@ test "pointer sentinel with +inf" {...@@ -335,6 +349,7 @@ test "pointer sentinel with +inf" {
335 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
336 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO350 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
337 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO351 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
338353
339 const S = struct {354 const S = struct {
340 fn doTheTest() !void {355 fn doTheTest() !void {
...@@ -401,6 +416,7 @@ test "indexing array with sentinel returns correct type" {...@@ -401,6 +416,7 @@ test "indexing array with sentinel returns correct type" {
401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO417 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
403 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO418 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
404420
405 var s: [:0]const u8 = "abc";421 var s: [:0]const u8 = "abc";
406 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));422 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
...@@ -408,6 +424,7 @@ test "indexing array with sentinel returns correct type" {...@@ -408,6 +424,7 @@ test "indexing array with sentinel returns correct type" {
408424
409test "element pointer to slice" {425test "element pointer to slice" {
410 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO426 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
427 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411428
412 const S = struct {429 const S = struct {
413 fn doTheTest() !void {430 fn doTheTest() !void {
...@@ -429,6 +446,7 @@ test "element pointer to slice" {...@@ -429,6 +446,7 @@ test "element pointer to slice" {
429446
430test "element pointer arithmetic to slice" {447test "element pointer arithmetic to slice" {
431 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO448 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
449 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
432450
433 const S = struct {451 const S = struct {
434 fn doTheTest() !void {452 fn doTheTest() !void {
...@@ -452,6 +470,8 @@ test "element pointer arithmetic to slice" {...@@ -452,6 +470,8 @@ test "element pointer arithmetic to slice" {
452}470}
453471
454test "array slicing to slice" {472test "array slicing to slice" {
473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
474
455 const S = struct {475 const S = struct {
456 fn doTheTest() !void {476 fn doTheTest() !void {
457 var str: [5]i32 = [_]i32{ 1, 2, 3, 4, 5 };477 var str: [5]i32 = [_]i32{ 1, 2, 3, 4, 5 };
...@@ -481,6 +501,7 @@ test "ptrCast comptime known slice to C pointer" {...@@ -481,6 +501,7 @@ test "ptrCast comptime known slice to C pointer" {
481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO501 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
482 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO502 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
483 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO503 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
504 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
484505
485 const s: [:0]const u8 = "foo";506 const s: [:0]const u8 = "foo";
486 var p = @ptrCast([*c]const u8, s);507 var p = @ptrCast([*c]const u8, s);
test/behavior/popcount.zig+3
...@@ -7,6 +7,7 @@ test "@popCount integers" {...@@ -7,6 +7,7 @@ test "@popCount integers" {
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
11 comptime try testPopCountIntegers();12 comptime try testPopCountIntegers();
12 try testPopCountIntegers();13 try testPopCountIntegers();
...@@ -16,6 +17,7 @@ test "@popCount 128bit integer" {...@@ -16,6 +17,7 @@ test "@popCount 128bit integer" {
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1921
20 comptime {22 comptime {
21 try expect(@popCount(@as(u128, 0b11111111000110001100010000100001000011000011100101010001)) == 24);23 try expect(@popCount(@as(u128, 0b11111111000110001100010000100001000011000011100101010001)) == 24);
...@@ -70,6 +72,7 @@ test "@popCount vectors" {...@@ -70,6 +72,7 @@ test "@popCount vectors" {
70 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
71 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7376
74 comptime try testPopCountVectors();77 comptime try testPopCountVectors();
75 try testPopCountVectors();78 try testPopCountVectors();
test/behavior/ptrcast.zig+8
...@@ -23,6 +23,7 @@ test "reinterpret an array over multiple elements, with no well-defined layout"...@@ -23,6 +23,7 @@ test "reinterpret an array over multiple elements, with no well-defined layout"
23 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2627
27 try testReinterpretWithOffsetAndNoWellDefinedLayout();28 try testReinterpretWithOffsetAndNoWellDefinedLayout();
28 comptime try testReinterpretWithOffsetAndNoWellDefinedLayout();29 comptime try testReinterpretWithOffsetAndNoWellDefinedLayout();
...@@ -38,6 +39,7 @@ fn testReinterpretWithOffsetAndNoWellDefinedLayout() !void {...@@ -38,6 +39,7 @@ fn testReinterpretWithOffsetAndNoWellDefinedLayout() !void {
3839
39test "reinterpret bytes inside auto-layout struct as integer with nonzero offset" {40test "reinterpret bytes inside auto-layout struct as integer with nonzero offset" {
40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4143
42 try testReinterpretStructWrappedBytesAsInteger();44 try testReinterpretStructWrappedBytesAsInteger();
43 comptime try testReinterpretStructWrappedBytesAsInteger();45 comptime try testReinterpretStructWrappedBytesAsInteger();
...@@ -56,6 +58,7 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {...@@ -56,6 +58,7 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {
56test "reinterpret bytes of an array into an extern struct" {58test "reinterpret bytes of an array into an extern struct" {
57 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO59 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO60 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5962
60 try testReinterpretBytesAsExternStruct();63 try testReinterpretBytesAsExternStruct();
61 comptime try testReinterpretBytesAsExternStruct();64 comptime try testReinterpretBytesAsExternStruct();
...@@ -126,6 +129,7 @@ test "lower reinterpreted comptime field ptr (with under-aligned fields)" {...@@ -126,6 +129,7 @@ test "lower reinterpreted comptime field ptr (with under-aligned fields)" {
126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO130 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
128 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO131 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
129133
130 // Test lowering a field ptr134 // Test lowering a field ptr
131 comptime var bytes align(2) = [_]u8{ 1, 2, 3, 4, 5, 6 };135 comptime var bytes align(2) = [_]u8{ 1, 2, 3, 4, 5, 6 };
...@@ -149,6 +153,7 @@ test "lower reinterpreted comptime field ptr" {...@@ -149,6 +153,7 @@ test "lower reinterpreted comptime field ptr" {
149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
151 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
152157
153 // Test lowering a field ptr158 // Test lowering a field ptr
154 comptime var bytes align(4) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };159 comptime var bytes align(4) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
...@@ -169,6 +174,7 @@ test "lower reinterpreted comptime field ptr" {...@@ -169,6 +174,7 @@ test "lower reinterpreted comptime field ptr" {
169174
170test "reinterpret struct field at comptime" {175test "reinterpret struct field at comptime" {
171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
177 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
172178
173 const numNative = comptime Bytes.init(0x12345678);179 const numNative = comptime Bytes.init(0x12345678);
174 if (native_endian != .Little) {180 if (native_endian != .Little) {
...@@ -200,6 +206,7 @@ test "comptime ptrcast keeps larger alignment" {...@@ -200,6 +206,7 @@ test "comptime ptrcast keeps larger alignment" {
200test "implicit optional pointer to optional anyopaque pointer" {206test "implicit optional pointer to optional anyopaque pointer" {
201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
202 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
203210
204 var buf: [4]u8 = "aoeu".*;211 var buf: [4]u8 = "aoeu".*;
205 var x: ?[*]u8 = &buf;212 var x: ?[*]u8 = &buf;
...@@ -211,6 +218,7 @@ test "implicit optional pointer to optional anyopaque pointer" {...@@ -211,6 +218,7 @@ test "implicit optional pointer to optional anyopaque pointer" {
211test "@ptrCast slice to slice" {218test "@ptrCast slice to slice" {
212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
214222
215 const S = struct {223 const S = struct {
216 fn foo(slice: []u32) []i32 {224 fn foo(slice: []u32) []i32 {
test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig+1
...@@ -8,6 +8,7 @@ test "reference a variable in an if after an if in the 2nd switch prong" {...@@ -8,6 +8,7 @@ test "reference a variable in an if after an if in the 2nd switch prong" {
8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
12 try foo(true, Num.Two, false, "aoeu");13 try foo(true, Num.Two, false, "aoeu");
13 try expect(!ok);14 try expect(!ok);
test/behavior/reflection.zig+1
...@@ -28,6 +28,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {...@@ -28,6 +28,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
28test "reflection: @field" {28test "reflection: @field" {
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3132
32 var f = Foo{33 var f = Foo{
33 .one = 42,34 .one = 42,
test/behavior/saturating_arithmetic.zig+8
...@@ -8,6 +8,7 @@ test "saturating add" {...@@ -8,6 +8,7 @@ test "saturating add" {
8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
12 const S = struct {13 const S = struct {
13 fn doTheTest() !void {14 fn doTheTest() !void {
...@@ -54,6 +55,8 @@ test "saturating add 128bit" {...@@ -54,6 +55,8 @@ test "saturating add 128bit" {
54 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
59
57 const S = struct {60 const S = struct {
58 fn doTheTest() !void {61 fn doTheTest() !void {
59 try testSatAdd(i128, maxInt(i128), -maxInt(i128), 0);62 try testSatAdd(i128, maxInt(i128), -maxInt(i128), 0);
...@@ -77,6 +80,7 @@ test "saturating subtraction" {...@@ -77,6 +80,7 @@ test "saturating subtraction" {
77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO80 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
78 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO81 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8084
81 const S = struct {85 const S = struct {
82 fn doTheTest() !void {86 fn doTheTest() !void {
...@@ -122,6 +126,7 @@ test "saturating subtraction 128bit" {...@@ -122,6 +126,7 @@ test "saturating subtraction 128bit" {
122 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO126 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO127 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
125130
126 const S = struct {131 const S = struct {
127 fn doTheTest() !void {132 fn doTheTest() !void {
...@@ -148,6 +153,7 @@ test "saturating multiplication" {...@@ -148,6 +153,7 @@ test "saturating multiplication" {
148 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
151157
152 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) {158 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) {
153 // https://github.com/ziglang/zig/issues/9660159 // https://github.com/ziglang/zig/issues/9660
...@@ -191,6 +197,7 @@ test "saturating shift-left" {...@@ -191,6 +197,7 @@ test "saturating shift-left" {
191 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO197 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO198 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
194201
195 const S = struct {202 const S = struct {
196 fn doTheTest() !void {203 fn doTheTest() !void {
...@@ -229,6 +236,7 @@ test "saturating shl uses the LHS type" {...@@ -229,6 +236,7 @@ test "saturating shl uses the LHS type" {
229 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO236 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO237 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO238 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
232240
233 const lhs_const: u8 = 1;241 const lhs_const: u8 = 1;
234 var lhs_var: u8 = 1;242 var lhs_var: u8 = 1;
test/behavior/select.zig+2
...@@ -9,6 +9,7 @@ test "@select vectors" {...@@ -9,6 +9,7 @@ test "@select vectors" {
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
13 comptime try selectVectors();14 comptime try selectVectors();
14 try selectVectors();15 try selectVectors();
...@@ -37,6 +38,7 @@ test "@select arrays" {...@@ -37,6 +38,7 @@ test "@select arrays" {
37 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO38 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4042
41 comptime try selectArrays();43 comptime try selectArrays();
42 try selectArrays();44 try selectArrays();
test/behavior/shuffle.zig+3
...@@ -9,6 +9,7 @@ test "@shuffle int" {...@@ -9,6 +9,7 @@ test "@shuffle int" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
13 const S = struct {14 const S = struct {
14 fn doTheTest() !void {15 fn doTheTest() !void {
...@@ -50,6 +51,7 @@ test "@shuffle bool 1" {...@@ -50,6 +51,7 @@ test "@shuffle bool 1" {
50 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO53 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5355
54 const S = struct {56 const S = struct {
55 fn doTheTest() !void {57 fn doTheTest() !void {
...@@ -70,6 +72,7 @@ test "@shuffle bool 2" {...@@ -70,6 +72,7 @@ test "@shuffle bool 2" {
70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO72 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7376
74 if (builtin.zig_backend == .stage2_llvm) {77 if (builtin.zig_backend == .stage2_llvm) {
75 // https://github.com/ziglang/zig/issues/324678 // https://github.com/ziglang/zig/issues/3246
test/behavior/sizeof_and_typeof.zig+4
...@@ -76,6 +76,7 @@ const P = packed struct {...@@ -76,6 +76,7 @@ const P = packed struct {
7676
77test "@offsetOf" {77test "@offsetOf" {
78 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;78 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7980
80 // Packed structs have fixed memory layout81 // Packed structs have fixed memory layout
81 try expect(@offsetOf(P, "a") == 0);82 try expect(@offsetOf(P, "a") == 0);
...@@ -102,6 +103,8 @@ test "@offsetOf" {...@@ -102,6 +103,8 @@ test "@offsetOf" {
102}103}
103104
104test "@bitOffsetOf" {105test "@bitOffsetOf" {
106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
107
105 // Packed structs have fixed memory layout108 // Packed structs have fixed memory layout
106 try expect(@bitOffsetOf(P, "a") == 0);109 try expect(@bitOffsetOf(P, "a") == 0);
107 try expect(@bitOffsetOf(P, "b") == 8);110 try expect(@bitOffsetOf(P, "b") == 8);
...@@ -264,6 +267,7 @@ test "bitSizeOf comptime_int" {...@@ -264,6 +267,7 @@ test "bitSizeOf comptime_int" {
264test "runtime instructions inside typeof in comptime only scope" {267test "runtime instructions inside typeof in comptime only scope" {
265 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
266 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;269 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
267271
268 {272 {
269 var y: i8 = 2;273 var y: i8 = 2;
test/behavior/slice.zig+24
...@@ -29,6 +29,7 @@ comptime {...@@ -29,6 +29,7 @@ comptime {
2929
30test "slicing" {30test "slicing" {
31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3233
33 var array: [20]i32 = undefined;34 var array: [20]i32 = undefined;
3435
...@@ -64,6 +65,7 @@ test "comptime slice of undefined pointer of length 0" {...@@ -64,6 +65,7 @@ test "comptime slice of undefined pointer of length 0" {
6465
65test "implicitly cast array of size 0 to slice" {66test "implicitly cast array of size 0 to slice" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;67 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6769
68 var msg = [_]u8{};70 var msg = [_]u8{};
69 try assertLenIsZero(&msg);71 try assertLenIsZero(&msg);
...@@ -74,6 +76,8 @@ fn assertLenIsZero(msg: []const u8) !void {...@@ -74,6 +76,8 @@ fn assertLenIsZero(msg: []const u8) !void {
74}76}
7577
76test "access len index of sentinel-terminated slice" {78test "access len index of sentinel-terminated slice" {
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80
77 const S = struct {81 const S = struct {
78 fn doTheTest() !void {82 fn doTheTest() !void {
79 var slice: [:0]const u8 = "hello";83 var slice: [:0]const u8 = "hello";
...@@ -119,6 +123,7 @@ test "slice of type" {...@@ -119,6 +123,7 @@ test "slice of type" {
119test "generic malloc free" {123test "generic malloc free" {
120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;124 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;125 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
122127
123 const a = memAlloc(u8, 10) catch unreachable;128 const a = memAlloc(u8, 10) catch unreachable;
124 memFree(u8, a);129 memFree(u8, a);
...@@ -170,6 +175,7 @@ test "comptime pointer cast array and then slice" {...@@ -170,6 +175,7 @@ test "comptime pointer cast array and then slice" {
170test "slicing zero length array" {175test "slicing zero length array" {
171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
172 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;177 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
173179
174 const s1 = ""[0..];180 const s1 = ""[0..];
175 const s2 = ([_]u32{})[0..];181 const s2 = ([_]u32{})[0..];
...@@ -204,6 +210,8 @@ test "slice string literal has correct type" {...@@ -204,6 +210,8 @@ test "slice string literal has correct type" {
204}210}
205211
206test "result location zero sized array inside struct field implicit cast to slice" {212test "result location zero sized array inside struct field implicit cast to slice" {
213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
214
207 const E = struct {215 const E = struct {
208 entries: []u32,216 entries: []u32,
209 };217 };
...@@ -214,6 +222,7 @@ test "result location zero sized array inside struct field implicit cast to slic...@@ -214,6 +222,7 @@ test "result location zero sized array inside struct field implicit cast to slic
214test "runtime safety lets us slice from len..len" {222test "runtime safety lets us slice from len..len" {
215 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217226
218 var an_array = [_]u8{ 1, 2, 3 };227 var an_array = [_]u8{ 1, 2, 3 };
219 try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));228 try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));
...@@ -225,6 +234,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {...@@ -225,6 +234,7 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {
225234
226test "C pointer" {235test "C pointer" {
227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;236 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228238
229 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";239 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
230 var len: u32 = 10;240 var len: u32 = 10;
...@@ -236,6 +246,7 @@ test "C pointer slice access" {...@@ -236,6 +246,7 @@ test "C pointer slice access" {
236 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;246 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;247 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
238 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;248 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
249 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
239250
240 var buf: [10]u32 = [1]u32{42} ** 10;251 var buf: [10]u32 = [1]u32{42} ** 10;
241 const c_ptr = @ptrCast([*c]const u32, &buf);252 const c_ptr = @ptrCast([*c]const u32, &buf);
...@@ -264,6 +275,7 @@ fn sliceSum(comptime q: []const u8) i32 {...@@ -264,6 +275,7 @@ fn sliceSum(comptime q: []const u8) i32 {
264275
265test "slice type with custom alignment" {276test "slice type with custom alignment" {
266 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;277 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
267279
268 const LazilyResolvedType = struct {280 const LazilyResolvedType = struct {
269 anything: i32,281 anything: i32,
...@@ -277,6 +289,7 @@ test "slice type with custom alignment" {...@@ -277,6 +289,7 @@ test "slice type with custom alignment" {
277289
278test "obtaining a null terminated slice" {290test "obtaining a null terminated slice" {
279 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
280293
281 // here we have a normal array294 // here we have a normal array
282 var buf: [50]u8 = undefined;295 var buf: [50]u8 = undefined;
...@@ -318,6 +331,7 @@ test "empty array to slice" {...@@ -318,6 +331,7 @@ test "empty array to slice" {
318331
319test "@ptrCast slice to pointer" {332test "@ptrCast slice to pointer" {
320 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
321335
322 const S = struct {336 const S = struct {
323 fn doTheTest() !void {337 fn doTheTest() !void {
...@@ -336,6 +350,7 @@ test "slice syntax resulting in pointer-to-array" {...@@ -336,6 +350,7 @@ test "slice syntax resulting in pointer-to-array" {
336 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO350 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
337 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
338 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
339354
340 const S = struct {355 const S = struct {
341 fn doTheTest() !void {356 fn doTheTest() !void {
...@@ -469,6 +484,7 @@ test "slice syntax resulting in pointer-to-array" {...@@ -469,6 +484,7 @@ test "slice syntax resulting in pointer-to-array" {
469test "slice pointer-to-array null terminated" {484test "slice pointer-to-array null terminated" {
470 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO485 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
471 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO486 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
472488
473 comptime {489 comptime {
474 var array = [5:0]u8{ 1, 2, 3, 4, 5 };490 var array = [5:0]u8{ 1, 2, 3, 4, 5 };
...@@ -487,6 +503,7 @@ test "slice pointer-to-array null terminated" {...@@ -487,6 +503,7 @@ test "slice pointer-to-array null terminated" {
487503
488test "slice pointer-to-array zero length" {504test "slice pointer-to-array zero length" {
489 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO505 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
490507
491 comptime {508 comptime {
492 {509 {
...@@ -521,6 +538,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {...@@ -521,6 +538,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {
521 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO538 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
522 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
523 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO540 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
541 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
524542
525 const S = struct {543 const S = struct {
526 const U = union {544 const U = union {
...@@ -573,6 +591,7 @@ test "array mult of slice gives ptr to array" {...@@ -573,6 +591,7 @@ test "array mult of slice gives ptr to array" {
573591
574test "slice bounds in comptime concatenation" {592test "slice bounds in comptime concatenation" {
575 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO593 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
594 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
576595
577 const bs = comptime blk: {596 const bs = comptime blk: {
578 const b = "........1........";597 const b = "........1........";
...@@ -607,6 +626,7 @@ test "slice sentinel access at comptime" {...@@ -607,6 +626,7 @@ test "slice sentinel access at comptime" {
607626
608test "slicing array with sentinel as end index" {627test "slicing array with sentinel as end index" {
609 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;628 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
629 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
610630
611 const S = struct {631 const S = struct {
612 fn do() !void {632 fn do() !void {
...@@ -624,6 +644,7 @@ test "slicing array with sentinel as end index" {...@@ -624,6 +644,7 @@ test "slicing array with sentinel as end index" {
624644
625test "slicing slice with sentinel as end index" {645test "slicing slice with sentinel as end index" {
626 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;646 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
627648
628 const S = struct {649 const S = struct {
629 fn do() !void {650 fn do() !void {
...@@ -664,6 +685,8 @@ test "slice field ptr const" {...@@ -664,6 +685,8 @@ test "slice field ptr const" {
664}685}
665686
666test "slice field ptr var" {687test "slice field ptr var" {
688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
689
667 var var_slice: []const u8 = "string";690 var var_slice: []const u8 = "string";
668691
669 var var_ptr_var_slice = &var_slice;692 var var_ptr_var_slice = &var_slice;
...@@ -679,6 +702,7 @@ test "global slice field access" {...@@ -679,6 +702,7 @@ test "global slice field access" {
679 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO702 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
680 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO703 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
681 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO704 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
705 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
682706
683 const S = struct {707 const S = struct {
684 var slice: []const u8 = undefined;708 var slice: []const u8 = undefined;
test/behavior/src.zig+1
...@@ -16,6 +16,7 @@ const expect = std.testing.expect;...@@ -16,6 +16,7 @@ const expect = std.testing.expect;
16test "@src" {16test "@src" {
17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO18 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2021
21 try doTheTest();22 try doTheTest();
test/behavior/struct.zig+11
...@@ -66,6 +66,8 @@ const SmallStruct = struct {...@@ -66,6 +66,8 @@ const SmallStruct = struct {
66};66};
6767
68test "lower unnamed constants" {68test "lower unnamed constants" {
69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70
69 var foo = SmallStruct{ .a = 1, .b = 255 };71 var foo = SmallStruct{ .a = 1, .b = 255 };
70 try expect(foo.first() == 1);72 try expect(foo.first() == 1);
71 try expect(foo.second() == 255);73 try expect(foo.second() == 255);
...@@ -170,12 +172,16 @@ const MemberFnTestFoo = struct {...@@ -170,12 +172,16 @@ const MemberFnTestFoo = struct {
170};172};
171173
172test "call member function directly" {174test "call member function directly" {
175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176
173 const instance = MemberFnTestFoo{ .x = 1234 };177 const instance = MemberFnTestFoo{ .x = 1234 };
174 const result = MemberFnTestFoo.member(instance);178 const result = MemberFnTestFoo.member(instance);
175 try expect(result == 1234);179 try expect(result == 1234);
176}180}
177181
178test "store member function in variable" {182test "store member function in variable" {
183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
184
179 const instance = MemberFnTestFoo{ .x = 1234 };185 const instance = MemberFnTestFoo{ .x = 1234 };
180 const memberFn = MemberFnTestFoo.member;186 const memberFn = MemberFnTestFoo.member;
181 const result = memberFn(instance);187 const result = memberFn(instance);
...@@ -782,6 +788,7 @@ test "packed struct with fp fields" {...@@ -782,6 +788,7 @@ test "packed struct with fp fields" {
782test "fn with C calling convention returns struct by value" {788test "fn with C calling convention returns struct by value" {
783 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO789 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
784 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO790 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
791 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
785792
786 const S = struct {793 const S = struct {
787 fn entry() !void {794 fn entry() !void {
...@@ -807,6 +814,7 @@ test "non-packed struct with u128 entry in union" {...@@ -807,6 +814,7 @@ test "non-packed struct with u128 entry in union" {
807 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO814 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
808 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO815 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
809 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO816 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
817 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
810818
811 const U = union(enum) {819 const U = union(enum) {
812 Num: u128,820 Num: u128,
...@@ -853,6 +861,7 @@ test "packed struct field passed to generic function" {...@@ -853,6 +861,7 @@ test "packed struct field passed to generic function" {
853861
854test "anonymous struct literal syntax" {862test "anonymous struct literal syntax" {
855 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;863 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
856865
857 const S = struct {866 const S = struct {
858 const Point = struct {867 const Point = struct {
...@@ -959,6 +968,7 @@ test "tuple element initialized with fn call" {...@@ -959,6 +968,7 @@ test "tuple element initialized with fn call" {
959test "struct with union field" {968test "struct with union field" {
960 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO969 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
961 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO970 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
971 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
962972
963 const Value = struct {973 const Value = struct {
964 ref: u32 = 2,974 ref: u32 = 2,
...@@ -1331,6 +1341,7 @@ test "under-aligned struct field" {...@@ -1331,6 +1341,7 @@ test "under-aligned struct field" {
1331 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1341 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1332 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13341345
1335 const U = extern union {1346 const U = extern union {
1336 fd: i32,1347 fd: i32,
test/behavior/struct_contains_null_ptr_itself.zig+2
...@@ -5,6 +5,8 @@ const builtin = @import("builtin");...@@ -5,6 +5,8 @@ const builtin = @import("builtin");
5test "struct contains null pointer which contains original struct" {5test "struct contains null pointer which contains original struct" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9
8 var x: ?*NodeLineComment = null;10 var x: ?*NodeLineComment = null;
9 try expect(x == null);11 try expect(x == null);
10}12}
test/behavior/struct_contains_slice_of_itself.zig+2
...@@ -13,6 +13,7 @@ const NodeAligned = struct {...@@ -13,6 +13,7 @@ const NodeAligned = struct {
1313
14test "struct contains slice of itself" {14test "struct contains slice of itself" {
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617
17 var other_nodes = [_]Node{18 var other_nodes = [_]Node{
18 Node{19 Node{
...@@ -52,6 +53,7 @@ test "struct contains slice of itself" {...@@ -52,6 +53,7 @@ test "struct contains slice of itself" {
5253
53test "struct contains aligned slice of itself" {54test "struct contains aligned slice of itself" {
54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5557
56 var other_nodes = [_]NodeAligned{58 var other_nodes = [_]NodeAligned{
57 NodeAligned{59 NodeAligned{
test/behavior/switch.zig+37
...@@ -5,6 +5,8 @@ const expectError = std.testing.expectError;...@@ -5,6 +5,8 @@ const expectError = std.testing.expectError;
5const expectEqual = std.testing.expectEqual;5const expectEqual = std.testing.expectEqual;
66
7test "switch with numbers" {7test "switch with numbers" {
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9
8 try testSwitchWithNumbers(13);10 try testSwitchWithNumbers(13);
9}11}
1012
...@@ -18,6 +20,8 @@ fn testSwitchWithNumbers(x: u32) !void {...@@ -18,6 +20,8 @@ fn testSwitchWithNumbers(x: u32) !void {
18}20}
1921
20test "switch with all ranges" {22test "switch with all ranges" {
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24
21 try expect(testSwitchWithAllRanges(50, 3) == 1);25 try expect(testSwitchWithAllRanges(50, 3) == 1);
22 try expect(testSwitchWithAllRanges(101, 0) == 2);26 try expect(testSwitchWithAllRanges(101, 0) == 2);
23 try expect(testSwitchWithAllRanges(300, 5) == 3);27 try expect(testSwitchWithAllRanges(300, 5) == 3);
...@@ -49,6 +53,8 @@ test "implicit comptime switch" {...@@ -49,6 +53,8 @@ test "implicit comptime switch" {
49}53}
5054
51test "switch on enum" {55test "switch on enum" {
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
57
52 const fruit = Fruit.Orange;58 const fruit = Fruit.Orange;
53 nonConstSwitchOnEnum(fruit);59 nonConstSwitchOnEnum(fruit);
54}60}
...@@ -66,6 +72,8 @@ fn nonConstSwitchOnEnum(fruit: Fruit) void {...@@ -66,6 +72,8 @@ fn nonConstSwitchOnEnum(fruit: Fruit) void {
66}72}
6773
68test "switch statement" {74test "switch statement" {
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76
69 try nonConstSwitch(SwitchStatementFoo.C);77 try nonConstSwitch(SwitchStatementFoo.C);
70}78}
71fn nonConstSwitch(foo: SwitchStatementFoo) !void {79fn nonConstSwitch(foo: SwitchStatementFoo) !void {
...@@ -81,6 +89,7 @@ const SwitchStatementFoo = enum { A, B, C, D };...@@ -81,6 +89,7 @@ const SwitchStatementFoo = enum { A, B, C, D };
8189
82test "switch with multiple expressions" {90test "switch with multiple expressions" {
83 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8493
85 const x = switch (returnsFive()) {94 const x = switch (returnsFive()) {
86 1, 2, 3 => 1,95 1, 2, 3 => 1,
...@@ -94,6 +103,8 @@ fn returnsFive() i32 {...@@ -94,6 +103,8 @@ fn returnsFive() i32 {
94}103}
95104
96test "switch on type" {105test "switch on type" {
106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
107
97 try expect(trueIfBoolFalseOtherwise(bool));108 try expect(trueIfBoolFalseOtherwise(bool));
98 try expect(!trueIfBoolFalseOtherwise(i32));109 try expect(!trueIfBoolFalseOtherwise(i32));
99}110}
...@@ -106,6 +117,8 @@ fn trueIfBoolFalseOtherwise(comptime T: type) bool {...@@ -106,6 +117,8 @@ fn trueIfBoolFalseOtherwise(comptime T: type) bool {
106}117}
107118
108test "switching on booleans" {119test "switching on booleans" {
120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121
109 try testSwitchOnBools();122 try testSwitchOnBools();
110 comptime try testSwitchOnBools();123 comptime try testSwitchOnBools();
111}124}
...@@ -157,6 +170,8 @@ test "undefined.u0" {...@@ -157,6 +170,8 @@ test "undefined.u0" {
157}170}
158171
159test "switch with disjoint range" {172test "switch with disjoint range" {
173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174
160 var q: u8 = 0;175 var q: u8 = 0;
161 switch (q) {176 switch (q) {
162 0...125 => {},177 0...125 => {},
...@@ -199,6 +214,8 @@ fn poll() void {...@@ -199,6 +214,8 @@ fn poll() void {
199}214}
200215
201test "switch on global mutable var isn't constant-folded" {216test "switch on global mutable var isn't constant-folded" {
217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218
202 while (state < 2) {219 while (state < 2) {
203 poll();220 poll();
204 }221 }
...@@ -214,6 +231,7 @@ test "switch prong with variable" {...@@ -214,6 +231,7 @@ test "switch prong with variable" {
214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO231 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217235
218 try switchProngWithVarFn(SwitchProngWithVarEnum{ .One = 13 });236 try switchProngWithVarFn(SwitchProngWithVarEnum{ .One = 13 });
219 try switchProngWithVarFn(SwitchProngWithVarEnum{ .Two = 13.0 });237 try switchProngWithVarFn(SwitchProngWithVarEnum{ .Two = 13.0 });
...@@ -237,6 +255,7 @@ fn switchProngWithVarFn(a: SwitchProngWithVarEnum) !void {...@@ -237,6 +255,7 @@ fn switchProngWithVarFn(a: SwitchProngWithVarEnum) !void {
237test "switch on enum using pointer capture" {255test "switch on enum using pointer capture" {
238 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO256 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
240259
241 try testSwitchEnumPtrCapture();260 try testSwitchEnumPtrCapture();
242 comptime try testSwitchEnumPtrCapture();261 comptime try testSwitchEnumPtrCapture();
...@@ -256,6 +275,7 @@ fn testSwitchEnumPtrCapture() !void {...@@ -256,6 +275,7 @@ fn testSwitchEnumPtrCapture() !void {
256275
257test "switch handles all cases of number" {276test "switch handles all cases of number" {
258 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
259279
260 try testSwitchHandleAllCases();280 try testSwitchHandleAllCases();
261 comptime try testSwitchHandleAllCases();281 comptime try testSwitchHandleAllCases();
...@@ -296,6 +316,7 @@ fn testSwitchHandleAllCasesRange(x: u8) u8 {...@@ -296,6 +316,7 @@ fn testSwitchHandleAllCasesRange(x: u8) u8 {
296test "switch on union with some prongs capturing" {316test "switch on union with some prongs capturing" {
297 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO317 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
298 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO318 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
299320
300 const X = union(enum) {321 const X = union(enum) {
301 a,322 a,
...@@ -331,6 +352,7 @@ test "switch on const enum with var" {...@@ -331,6 +352,7 @@ test "switch on const enum with var" {
331352
332test "anon enum literal used in switch on union enum" {353test "anon enum literal used in switch on union enum" {
333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
334356
335 const Foo = union(enum) {357 const Foo = union(enum) {
336 a: i32,358 a: i32,
...@@ -345,6 +367,8 @@ test "anon enum literal used in switch on union enum" {...@@ -345,6 +367,8 @@ test "anon enum literal used in switch on union enum" {
345}367}
346368
347test "switch all prongs unreachable" {369test "switch all prongs unreachable" {
370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
371
348 try testAllProngsUnreachable();372 try testAllProngsUnreachable();
349 comptime try testAllProngsUnreachable();373 comptime try testAllProngsUnreachable();
350}374}
...@@ -367,6 +391,7 @@ fn switchWithUnreachable(x: i32) i32 {...@@ -367,6 +391,7 @@ fn switchWithUnreachable(x: i32) i32 {
367391
368test "capture value of switch with all unreachable prongs" {392test "capture value of switch with all unreachable prongs" {
369 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
370395
371 const x = return_a_number() catch |err| switch (err) {396 const x = return_a_number() catch |err| switch (err) {
372 else => unreachable,397 else => unreachable,
...@@ -380,6 +405,7 @@ fn return_a_number() anyerror!i32 {...@@ -380,6 +405,7 @@ fn return_a_number() anyerror!i32 {
380405
381test "switch on integer with else capturing expr" {406test "switch on integer with else capturing expr" {
382 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO407 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
383409
384 const S = struct {410 const S = struct {
385 fn doTheTest() !void {411 fn doTheTest() !void {
...@@ -399,6 +425,7 @@ test "else prong of switch on error set excludes other cases" {...@@ -399,6 +425,7 @@ test "else prong of switch on error set excludes other cases" {
399 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO425 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
400 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO426 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
402429
403 const S = struct {430 const S = struct {
404 fn doTheTest() !void {431 fn doTheTest() !void {
...@@ -433,6 +460,7 @@ test "switch prongs with error set cases make a new error set type for capture v...@@ -433,6 +460,7 @@ test "switch prongs with error set cases make a new error set type for capture v
433 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO460 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
434 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO461 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
435 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO462 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
463 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
436464
437 const S = struct {465 const S = struct {
438 fn doTheTest() !void {466 fn doTheTest() !void {
...@@ -467,6 +495,7 @@ test "switch prongs with error set cases make a new error set type for capture v...@@ -467,6 +495,7 @@ test "switch prongs with error set cases make a new error set type for capture v
467495
468test "return result loc and then switch with range implicit casted to error union" {496test "return result loc and then switch with range implicit casted to error union" {
469 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO497 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
498 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
470499
471 const S = struct {500 const S = struct {
472 fn doTheTest() !void {501 fn doTheTest() !void {
...@@ -487,6 +516,7 @@ test "switch with null and T peer types and inferred result location type" {...@@ -487,6 +516,7 @@ test "switch with null and T peer types and inferred result location type" {
487 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO516 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO517 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO518 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
519 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
490520
491 const S = struct {521 const S = struct {
492 fn doTheTest(c: u8) !void {522 fn doTheTest(c: u8) !void {
...@@ -507,6 +537,7 @@ test "switch prongs with cases with identical payload types" {...@@ -507,6 +537,7 @@ test "switch prongs with cases with identical payload types" {
507 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
508 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO538 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
509 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO539 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
510541
511 const Union = union(enum) {542 const Union = union(enum) {
512 A: usize,543 A: usize,
...@@ -550,6 +581,7 @@ test "switch prongs with cases with identical payload types" {...@@ -550,6 +581,7 @@ test "switch prongs with cases with identical payload types" {
550test "switch on pointer type" {581test "switch on pointer type" {
551 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO582 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
552 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO583 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
584 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
553585
554 const S = struct {586 const S = struct {
555 const X = struct {587 const X = struct {
...@@ -597,6 +629,7 @@ test "switch capture copies its payload" {...@@ -597,6 +629,7 @@ test "switch capture copies its payload" {
597 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO629 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
598 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO630 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
599 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO631 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
632 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
600633
601 const S = struct {634 const S = struct {
602 fn doTheTest() !void {635 fn doTheTest() !void {
...@@ -619,6 +652,8 @@ test "switch capture copies its payload" {...@@ -619,6 +652,8 @@ test "switch capture copies its payload" {
619}652}
620653
621test "capture of integer forwards the switch condition directly" {654test "capture of integer forwards the switch condition directly" {
655 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
656
622 const S = struct {657 const S = struct {
623 fn foo(x: u8) !void {658 fn foo(x: u8) !void {
624 switch (x) {659 switch (x) {
...@@ -638,6 +673,8 @@ test "capture of integer forwards the switch condition directly" {...@@ -638,6 +673,8 @@ test "capture of integer forwards the switch condition directly" {
638}673}
639674
640test "enum value without tag name used as switch item" {675test "enum value without tag name used as switch item" {
676 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
677
641 const E = enum(u32) {678 const E = enum(u32) {
642 a = 1,679 a = 1,
643 b = 2,680 b = 2,
test/behavior/switch_prong_err_enum.zig+2
...@@ -24,6 +24,8 @@ test "switch prong returns error enum" {...@@ -24,6 +24,8 @@ test "switch prong returns error enum" {
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
26 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;26 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
28
27 switch (doThing(17) catch unreachable) {29 switch (doThing(17) catch unreachable) {
28 FormValue.Address => |payload| {30 FormValue.Address => |payload| {
29 try expect(payload == 1);31 try expect(payload == 1);
test/behavior/switch_prong_implicit_cast.zig+2
...@@ -18,6 +18,8 @@ test "switch prong implicit cast" {...@@ -18,6 +18,8 @@ test "switch prong implicit cast" {
18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22
21 const result = switch (foo(2) catch unreachable) {23 const result = switch (foo(2) catch unreachable) {
22 FormValue.One => false,24 FormValue.One => false,
23 FormValue.Two => |x| x,25 FormValue.Two => |x| x,
test/behavior/this.zig+1
...@@ -26,6 +26,7 @@ test "this refer to module call private fn" {...@@ -26,6 +26,7 @@ test "this refer to module call private fn" {
2626
27test "this refer to container" {27test "this refer to container" {
28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2930
30 var pt: Point(i32) = undefined;31 var pt: Point(i32) = undefined;
31 pt.x = 12;32 pt.x = 12;
test/behavior/threadlocal.zig+3
...@@ -9,6 +9,7 @@ test "thread local variable" {...@@ -9,6 +9,7 @@ test "thread local variable" {
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
13 const S = struct {14 const S = struct {
14 threadlocal var t: i32 = 1234;15 threadlocal var t: i32 = 1234;
...@@ -24,6 +25,7 @@ test "pointer to thread local array" {...@@ -24,6 +25,7 @@ test "pointer to thread local array" {
24 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // TODO
28 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2729
28 const s = "Hello world";30 const s = "Hello world";
29 std.mem.copy(u8, buffer[0..], s);31 std.mem.copy(u8, buffer[0..], s);
...@@ -39,6 +41,7 @@ test "reference a global threadlocal variable" {...@@ -39,6 +41,7 @@ test "reference a global threadlocal variable" {
39 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
40 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_c and builtin.os.tag == .windows) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4245
43 _ = nrfx_uart_rx(&g_uart0);46 _ = nrfx_uart_rx(&g_uart0);
44}47}
test/behavior/translate_c_macros.zig+16
...@@ -8,6 +8,8 @@ const h = @cImport(@cInclude("behavior/translate_c_macros.h"));...@@ -8,6 +8,8 @@ const h = @cImport(@cInclude("behavior/translate_c_macros.h"));
8const latin1 = @cImport(@cInclude("behavior/translate_c_macros_not_utf8.h"));8const latin1 = @cImport(@cInclude("behavior/translate_c_macros_not_utf8.h"));
99
10test "casting to void with a macro" {10test "casting to void with a macro" {
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12
11 h.IGNORE_ME_1(42);13 h.IGNORE_ME_1(42);
12 h.IGNORE_ME_2(42);14 h.IGNORE_ME_2(42);
13 h.IGNORE_ME_3(42);15 h.IGNORE_ME_3(42);
...@@ -24,6 +26,7 @@ test "initializer list expression" {...@@ -24,6 +26,7 @@ test "initializer list expression" {
24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO27 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO28 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2730
28 try expectEqual(h.Color{31 try expectEqual(h.Color{
29 .r = 200,32 .r = 200,
...@@ -35,12 +38,15 @@ test "initializer list expression" {...@@ -35,12 +38,15 @@ test "initializer list expression" {
3538
36test "sizeof in macros" {39test "sizeof in macros" {
37 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3842
39 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF(u32));43 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF(u32));
40 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF2(u32));44 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF2(u32));
41}45}
4246
43test "reference to a struct type" {47test "reference to a struct type" {
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49
44 try expect(@sizeOf(h.struct_Foo) == h.SIZE_OF_FOO);50 try expect(@sizeOf(h.struct_Foo) == h.SIZE_OF_FOO);
45}51}
4652
...@@ -49,6 +55,7 @@ test "cast negative integer to pointer" {...@@ -49,6 +55,7 @@ test "cast negative integer to pointer" {
49 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5259
53 try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);60 try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);
54}61}
...@@ -58,6 +65,7 @@ test "casting to union with a macro" {...@@ -58,6 +65,7 @@ test "casting to union with a macro" {
58 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO65 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6169
62 const l: c_long = 42;70 const l: c_long = 42;
63 const d: f64 = 2.0;71 const d: f64 = 2.0;
...@@ -74,6 +82,7 @@ test "casting or calling a value with a paren-surrounded macro" {...@@ -74,6 +82,7 @@ test "casting or calling a value with a paren-surrounded macro" {
74 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7786
78 const l: c_long = 42;87 const l: c_long = 42;
79 const casted = h.CAST_OR_CALL_WITH_PARENS(c_int, l);88 const casted = h.CAST_OR_CALL_WITH_PARENS(c_int, l);
...@@ -93,6 +102,7 @@ test "nested comma operator" {...@@ -93,6 +102,7 @@ test "nested comma operator" {
93 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
96106
97 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR);107 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR);
98 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR_LHS);108 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR_LHS);
...@@ -103,6 +113,7 @@ test "cast functions" {...@@ -103,6 +113,7 @@ test "cast functions" {
103 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
104 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
106117
107 const S = struct {118 const S = struct {
108 fn foo() void {}119 fn foo() void {}
...@@ -116,6 +127,7 @@ test "large integer macro" {...@@ -116,6 +127,7 @@ test "large integer macro" {
116 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO127 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
130 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
119131
120 try expectEqual(@as(c_ulonglong, 18446744073709550592), h.LARGE_INT);132 try expectEqual(@as(c_ulonglong, 18446744073709550592), h.LARGE_INT);
121}133}
...@@ -125,6 +137,7 @@ test "string literal macro with embedded tab character" {...@@ -125,6 +137,7 @@ test "string literal macro with embedded tab character" {
125 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO137 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO138 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO139 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
128141
129 try expectEqualStrings("hello\t", h.EMBEDDED_TAB);142 try expectEqualStrings("hello\t", h.EMBEDDED_TAB);
130}143}
...@@ -134,6 +147,7 @@ test "string and char literals that are not UTF-8 encoded. Issue #12784" {...@@ -134,6 +147,7 @@ test "string and char literals that are not UTF-8 encoded. Issue #12784" {
134 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO147 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
135 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
136 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137151
138 try expectEqual(@as(u8, '\xA9'), latin1.UNPRINTABLE_CHAR);152 try expectEqual(@as(u8, '\xA9'), latin1.UNPRINTABLE_CHAR);
139 try expectEqualStrings("\xA9\xA9\xA9", latin1.UNPRINTABLE_STRING);153 try expectEqualStrings("\xA9\xA9\xA9", latin1.UNPRINTABLE_STRING);
...@@ -144,6 +158,7 @@ test "Macro that uses division operator. Issue #13162" {...@@ -144,6 +158,7 @@ test "Macro that uses division operator. Issue #13162" {
144 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO158 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
147162
148 try expectEqual(@as(c_int, 42), h.DIVIDE_CONSTANT(@as(c_int, 42_000)));163 try expectEqual(@as(c_int, 42), h.DIVIDE_CONSTANT(@as(c_int, 42_000)));
149 try expectEqual(@as(c_uint, 42), h.DIVIDE_CONSTANT(@as(c_uint, 42_000)));164 try expectEqual(@as(c_uint, 42), h.DIVIDE_CONSTANT(@as(c_uint, 42_000)));
...@@ -177,6 +192,7 @@ test "Macro that uses remainder operator. Issue #13346" {...@@ -177,6 +192,7 @@ test "Macro that uses remainder operator. Issue #13346" {
177 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO192 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
178 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
180196
181 try expectEqual(@as(c_int, 2_010), h.REMAINDER_CONSTANT(@as(c_int, 42_010)));197 try expectEqual(@as(c_int, 2_010), h.REMAINDER_CONSTANT(@as(c_int, 42_010)));
182 try expectEqual(@as(c_uint, 2_030), h.REMAINDER_CONSTANT(@as(c_uint, 42_030)));198 try expectEqual(@as(c_uint, 2_030), h.REMAINDER_CONSTANT(@as(c_uint, 42_030)));
test/behavior/truncate.zig+1
...@@ -65,6 +65,7 @@ test "truncate on vectors" {...@@ -65,6 +65,7 @@ test "truncate on vectors" {
65 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6869
69 const S = struct {70 const S = struct {
70 fn doTheTest() !void {71 fn doTheTest() !void {
test/behavior/try.zig+1
...@@ -4,6 +4,7 @@ const expect = std.testing.expect;...@@ -4,6 +4,7 @@ const expect = std.testing.expect;
44
5test "try on error union" {5test "try on error union" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
78
8 try tryOnErrorUnionImpl();9 try tryOnErrorUnionImpl();
9 comptime try tryOnErrorUnionImpl();10 comptime try tryOnErrorUnionImpl();
test/behavior/tuple.zig+7
...@@ -6,6 +6,7 @@ const expect = testing.expect;...@@ -6,6 +6,7 @@ const expect = testing.expect;
6test "tuple concatenation" {6test "tuple concatenation" {
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
10 const S = struct {11 const S = struct {
11 fn doTheTest() !void {12 fn doTheTest() !void {
...@@ -48,6 +49,7 @@ test "tuple multiplication" {...@@ -48,6 +49,7 @@ test "tuple multiplication" {
48test "more tuple concatenation" {49test "more tuple concatenation" {
49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5153
52 const T = struct {54 const T = struct {
53 fn consume_tuple(tuple: anytype, len: usize) !void {55 fn consume_tuple(tuple: anytype, len: usize) !void {
...@@ -124,6 +126,7 @@ test "tuple initializer for var" {...@@ -124,6 +126,7 @@ test "tuple initializer for var" {
124test "array-like initializer for tuple types" {126test "array-like initializer for tuple types" {
125 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO127 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO128 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127130
128 const T = @Type(.{131 const T = @Type(.{
129 .Struct = .{132 .Struct = .{
...@@ -208,6 +211,7 @@ test "fieldParentPtr of tuple" {...@@ -208,6 +211,7 @@ test "fieldParentPtr of tuple" {
208 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;211 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
209 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
210 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;213 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
211215
212 var x: u32 = 0;216 var x: u32 = 0;
213 const tuple = .{ x, x };217 const tuple = .{ x, x };
...@@ -218,6 +222,7 @@ test "fieldParentPtr of anon struct" {...@@ -218,6 +222,7 @@ test "fieldParentPtr of anon struct" {
218 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
221226
222 var x: u32 = 0;227 var x: u32 = 0;
223 const anon_st = .{ .foo = x, .bar = x };228 const anon_st = .{ .foo = x, .bar = x };
...@@ -258,6 +263,7 @@ test "tuple in tuple passed to generic function" {...@@ -258,6 +263,7 @@ test "tuple in tuple passed to generic function" {
258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
260 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;265 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
261267
262 const S = struct {268 const S = struct {
263 fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {269 fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {
...@@ -277,6 +283,7 @@ test "coerce tuple to tuple" {...@@ -277,6 +283,7 @@ test "coerce tuple to tuple" {
277 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO284 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;285 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
280287
281 const T = std.meta.Tuple(&.{u8});288 const T = std.meta.Tuple(&.{u8});
282 const S = struct {289 const S = struct {
test/behavior/type.zig+2
...@@ -203,6 +203,7 @@ test "Type.Opaque" {...@@ -203,6 +203,7 @@ test "Type.Opaque" {
203 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206207
207 const Opaque = @Type(.{208 const Opaque = @Type(.{
208 .Opaque = .{209 .Opaque = .{
...@@ -261,6 +262,7 @@ test "Type.Struct" {...@@ -261,6 +262,7 @@ test "Type.Struct" {
261 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO262 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
263 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
264266
265 const A = @Type(@typeInfo(struct { x: u8, y: u32 }));267 const A = @Type(@typeInfo(struct { x: u8, y: u32 }));
266 const infoA = @typeInfo(A).Struct;268 const infoA = @typeInfo(A).Struct;
test/behavior/type_info.zig+7
...@@ -160,6 +160,7 @@ test "type info: error set, error union info, anyerror" {...@@ -160,6 +160,7 @@ test "type info: error set, error union info, anyerror" {
160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163164
164 try testErrorSet();165 try testErrorSet();
165 comptime try testErrorSet();166 comptime try testErrorSet();
...@@ -191,6 +192,7 @@ test "type info: error set single value" {...@@ -191,6 +192,7 @@ test "type info: error set single value" {
191 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO194 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
194196
195 const TestSet = error.One;197 const TestSet = error.One;
196198
...@@ -204,6 +206,7 @@ test "type info: error set merged" {...@@ -204,6 +206,7 @@ test "type info: error set merged" {
204 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO208 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
207210
208 const TestSet = error{ One, Two } || error{Three};211 const TestSet = error{ One, Two } || error{Three};
209212
...@@ -219,6 +222,7 @@ test "type info: enum info" {...@@ -219,6 +222,7 @@ test "type info: enum info" {
219 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222226
223 try testEnum();227 try testEnum();
224 comptime try testEnum();228 comptime try testEnum();
...@@ -282,6 +286,7 @@ fn testUnion() !void {...@@ -282,6 +286,7 @@ fn testUnion() !void {
282286
283test "type info: struct info" {287test "type info: struct info" {
284 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;288 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
285290
286 try testStruct();291 try testStruct();
287 comptime try testStruct();292 comptime try testStruct();
...@@ -508,6 +513,7 @@ test "type info for async frames" {...@@ -508,6 +513,7 @@ test "type info for async frames" {
508test "Declarations are returned in declaration order" {513test "Declarations are returned in declaration order" {
509 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;514 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
510 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
516 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
511517
512 const S = struct {518 const S = struct {
513 const a = 1;519 const a = 1;
...@@ -531,6 +537,7 @@ test "Struct.is_tuple for anon list literal" {...@@ -531,6 +537,7 @@ test "Struct.is_tuple for anon list literal" {
531test "Struct.is_tuple for anon struct literal" {537test "Struct.is_tuple for anon struct literal" {
532 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO538 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
533 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
534541
535 const info = @typeInfo(@TypeOf(.{ .a = 0 }));542 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
536 try expect(!info.Struct.is_tuple);543 try expect(!info.Struct.is_tuple);
test/behavior/typename.zig+8
...@@ -15,6 +15,7 @@ test "anon fn param" {...@@ -15,6 +15,7 @@ test "anon fn param" {
15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO17 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
19 // https://github.com/ziglang/zig/issues/933920 // https://github.com/ziglang/zig/issues/9339
20 try expectEqualStringsIgnoreDigits(21 try expectEqualStringsIgnoreDigits(
...@@ -40,6 +41,7 @@ test "anon field init" {...@@ -40,6 +41,7 @@ test "anon field init" {
40 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4345
44 const Foo = .{46 const Foo = .{
45 .T1 = struct {},47 .T1 = struct {},
...@@ -65,6 +67,7 @@ test "basic" {...@@ -65,6 +67,7 @@ test "basic" {
65 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO68 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6871
69 try expectEqualStrings(@typeName(i64), "i64");72 try expectEqualStrings(@typeName(i64), "i64");
70 try expectEqualStrings(@typeName(*usize), "*usize");73 try expectEqualStrings(@typeName(*usize), "*usize");
...@@ -75,6 +78,7 @@ test "top level decl" {...@@ -75,6 +78,7 @@ test "top level decl" {
75 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO79 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO80 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7882
79 try expectEqualStrings(83 try expectEqualStrings(
80 "behavior.typename.A_Struct",84 "behavior.typename.A_Struct",
...@@ -124,6 +128,7 @@ test "fn param" {...@@ -124,6 +128,7 @@ test "fn param" {
124 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO128 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127132
128 // https://github.com/ziglang/zig/issues/675133 // https://github.com/ziglang/zig/issues/675
129 try expectEqualStrings(134 try expectEqualStrings(
...@@ -194,6 +199,7 @@ test "local variable" {...@@ -194,6 +199,7 @@ test "local variable" {
194 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO199 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
197203
198 const Foo = struct { a: u32 };204 const Foo = struct { a: u32 };
199 const Bar = union { a: u32 };205 const Bar = union { a: u32 };
...@@ -212,6 +218,7 @@ test "comptime parameters not converted to anytype in function type" {...@@ -212,6 +218,7 @@ test "comptime parameters not converted to anytype in function type" {
212 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO218 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215222
216 const T = fn (fn (type) void, void) void;223 const T = fn (fn (type) void, void) void;
217 try expectEqualStrings("fn(comptime fn(comptime type) void, void) void", @typeName(T));224 try expectEqualStrings("fn(comptime fn(comptime type) void, void) void", @typeName(T));
...@@ -221,6 +228,7 @@ test "anon name strategy used in sub expression" {...@@ -221,6 +228,7 @@ test "anon name strategy used in sub expression" {
221 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO228 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224232
225 const S = struct {233 const S = struct {
226 fn getTheName() []const u8 {234 fn getTheName() []const u8 {
test/behavior/undefined.zig+4
...@@ -17,6 +17,7 @@ test "init static array to undefined" {...@@ -17,6 +17,7 @@ test "init static array to undefined" {
17 // C backend does not yet support returning arrays, so it fails17 // C backend does not yet support returning arrays, so it fails
18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;18 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2021
21 try expect(static_array[0] == 1);22 try expect(static_array[0] == 1);
22 try expect(static_array[4] == 2);23 try expect(static_array[4] == 2);
...@@ -46,6 +47,7 @@ fn setFooX(foo: *Foo) void {...@@ -46,6 +47,7 @@ fn setFooX(foo: *Foo) void {
46test "assign undefined to struct" {47test "assign undefined to struct" {
47 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4951
50 comptime {52 comptime {
51 var foo: Foo = undefined;53 var foo: Foo = undefined;
...@@ -62,6 +64,7 @@ test "assign undefined to struct" {...@@ -62,6 +64,7 @@ test "assign undefined to struct" {
62test "assign undefined to struct with method" {64test "assign undefined to struct with method" {
63 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6568
66 comptime {69 comptime {
67 var foo: Foo = undefined;70 var foo: Foo = undefined;
...@@ -77,6 +80,7 @@ test "assign undefined to struct with method" {...@@ -77,6 +80,7 @@ test "assign undefined to struct with method" {
7780
78test "type name of undefined" {81test "type name of undefined" {
79 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;82 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8084
81 const x = undefined;85 const x = undefined;
82 try expect(mem.eql(u8, @typeName(@TypeOf(x)), "@TypeOf(undefined)"));86 try expect(mem.eql(u8, @typeName(@TypeOf(x)), "@TypeOf(undefined)"));
test/behavior/underscore.zig+1
...@@ -8,6 +8,7 @@ test "ignore lval with underscore" {...@@ -8,6 +8,7 @@ test "ignore lval with underscore" {
88
9test "ignore lval with underscore (while loop)" {9test "ignore lval with underscore (while loop)" {
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
12 while (optionalReturnError()) |_| {13 while (optionalReturnError()) |_| {
13 while (optionalReturnError()) |_| {14 while (optionalReturnError()) |_| {
test/behavior/union.zig+54
...@@ -14,6 +14,7 @@ test "basic unions with floats" {...@@ -14,6 +14,7 @@ test "basic unions with floats" {
14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718
18 var foo = FooWithFloats{ .int = 1 };19 var foo = FooWithFloats{ .int = 1 };
19 try expect(foo.int == 1);20 try expect(foo.int == 1);
...@@ -29,6 +30,7 @@ test "init union with runtime value - floats" {...@@ -29,6 +30,7 @@ test "init union with runtime value - floats" {
29 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3234
33 var foo: FooWithFloats = undefined;35 var foo: FooWithFloats = undefined;
3436
...@@ -39,6 +41,7 @@ test "init union with runtime value - floats" {...@@ -39,6 +41,7 @@ test "init union with runtime value - floats" {
39test "basic unions" {41test "basic unions" {
40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4245
43 var foo = Foo{ .int = 1 };46 var foo = Foo{ .int = 1 };
44 try expect(foo.int == 1);47 try expect(foo.int == 1);
...@@ -56,6 +59,7 @@ const Foo = union {...@@ -56,6 +59,7 @@ const Foo = union {
56test "init union with runtime value" {59test "init union with runtime value" {
57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;60 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
58 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5963
60 var foo: Foo = undefined;64 var foo: Foo = undefined;
6165
...@@ -93,6 +97,7 @@ const FooExtern = extern union {...@@ -93,6 +97,7 @@ const FooExtern = extern union {
9397
94test "basic extern unions" {98test "basic extern unions" {
95 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
96101
97 var foo = FooExtern{ .int = 1 };102 var foo = FooExtern{ .int = 1 };
98 try expect(foo.int == 1);103 try expect(foo.int == 1);
...@@ -163,6 +168,7 @@ test "access a member of tagged union with conflicting enum tag name" {...@@ -163,6 +168,7 @@ test "access a member of tagged union with conflicting enum tag name" {
163test "constant tagged union with payload" {168test "constant tagged union with payload" {
164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;170 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166172
167 var empty = TaggedUnionWithPayload{ .Empty = {} };173 var empty = TaggedUnionWithPayload{ .Empty = {} };
168 var full = TaggedUnionWithPayload{ .Full = 13 };174 var full = TaggedUnionWithPayload{ .Full = 13 };
...@@ -212,6 +218,7 @@ test "union with specified enum tag" {...@@ -212,6 +218,7 @@ test "union with specified enum tag" {
212 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;218 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
213 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
214 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215222
216 try doTest();223 try doTest();
217 comptime try doTest();224 comptime try doTest();
...@@ -221,6 +228,7 @@ test "packed union generates correctly aligned type" {...@@ -221,6 +228,7 @@ test "packed union generates correctly aligned type" {
221 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;228 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224232
225 const U = packed union {233 const U = packed union {
226 f1: *const fn () error{TestUnexpectedResult}!void,234 f1: *const fn () error{TestUnexpectedResult}!void,
...@@ -259,6 +267,7 @@ fn testComparison() !void {...@@ -259,6 +267,7 @@ fn testComparison() !void {
259test "comparison between union and enum literal" {267test "comparison between union and enum literal" {
260 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
261 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262271
263 try testComparison();272 try testComparison();
264 comptime try testComparison();273 comptime try testComparison();
...@@ -273,6 +282,7 @@ const TheUnion = union(TheTag) {...@@ -273,6 +282,7 @@ const TheUnion = union(TheTag) {
273test "cast union to tag type of union" {282test "cast union to tag type of union" {
274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;283 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
275 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;284 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
285 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
276286
277 try testCastUnionToTag();287 try testCastUnionToTag();
278 comptime try testCastUnionToTag();288 comptime try testCastUnionToTag();
...@@ -292,6 +302,7 @@ test "union field access gives the enum values" {...@@ -292,6 +302,7 @@ test "union field access gives the enum values" {
292test "cast tag type of union to union" {302test "cast tag type of union to union" {
293 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
294 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
295306
296 var x: Value2 = Letter2.B;307 var x: Value2 = Letter2.B;
297 try expect(@as(Letter2, x) == Letter2.B);308 try expect(@as(Letter2, x) == Letter2.B);
...@@ -306,6 +317,7 @@ const Value2 = union(Letter2) {...@@ -306,6 +317,7 @@ const Value2 = union(Letter2) {
306test "implicit cast union to its tag type" {317test "implicit cast union to its tag type" {
307 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;318 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
308 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
309321
310 var x: Value2 = Letter2.B;322 var x: Value2 = Letter2.B;
311 try expect(x == Letter2.B);323 try expect(x == Letter2.B);
...@@ -325,6 +337,7 @@ pub const PackThis = union(enum) {...@@ -325,6 +337,7 @@ pub const PackThis = union(enum) {
325test "constant packed union" {337test "constant packed union" {
326 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;338 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
327 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;339 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
328341
329 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});342 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
330}343}
...@@ -343,6 +356,7 @@ test "simple union(enum(u32))" {...@@ -343,6 +356,7 @@ test "simple union(enum(u32))" {
343 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;356 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;357 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
345 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;358 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
346360
347 var x = MultipleChoice.C;361 var x = MultipleChoice.C;
348 try expect(x == MultipleChoice.C);362 try expect(x == MultipleChoice.C);
...@@ -368,6 +382,7 @@ test "tagged union initialization with runtime void" {...@@ -368,6 +382,7 @@ test "tagged union initialization with runtime void" {
368 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;382 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
370 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
371386
372 try expect(testTaggedUnionInit({}));387 try expect(testTaggedUnionInit({}));
373}388}
...@@ -388,6 +403,7 @@ test "tagged union with no payloads" {...@@ -388,6 +403,7 @@ test "tagged union with no payloads" {
388 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;403 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
390 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
391407
392 const a = UnionEnumNoPayloads{ .B = {} };408 const a = UnionEnumNoPayloads{ .B = {} };
393 switch (a) {409 switch (a) {
...@@ -398,6 +414,7 @@ test "tagged union with no payloads" {...@@ -398,6 +414,7 @@ test "tagged union with no payloads" {
398414
399test "union with only 1 field casted to its enum type" {415test "union with only 1 field casted to its enum type" {
400 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
401418
402 const Literal = union(enum) {419 const Literal = union(enum) {
403 Number: f64,420 Number: f64,
...@@ -434,6 +451,7 @@ test "global union with single field is correctly initialized" {...@@ -434,6 +451,7 @@ test "global union with single field is correctly initialized" {
434 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;451 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
435 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
436 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO453 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
437455
438 glbl = Foo1{456 glbl = Foo1{
439 .f = @typeInfo(Foo1).Union.fields[0].field_type{ .x = 123 },457 .f = @typeInfo(Foo1).Union.fields[0].field_type{ .x = 123 },
...@@ -452,6 +470,7 @@ test "initialize global array of union" {...@@ -452,6 +470,7 @@ test "initialize global array of union" {
452 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;470 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
453 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;471 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
454 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;472 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
455474
456 glbl_array[1] = FooUnion{ .U1 = 2 };475 glbl_array[1] = FooUnion{ .U1 = 2 };
457 glbl_array[0] = FooUnion{ .U0 = 1 };476 glbl_array[0] = FooUnion{ .U0 = 1 };
...@@ -462,6 +481,7 @@ test "initialize global array of union" {...@@ -462,6 +481,7 @@ test "initialize global array of union" {
462test "update the tag value for zero-sized unions" {481test "update the tag value for zero-sized unions" {
463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;482 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
464 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;483 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
484 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
465485
466 const S = union(enum) {486 const S = union(enum) {
467 U0: void,487 U0: void,
...@@ -478,6 +498,7 @@ test "union initializer generates padding only if needed" {...@@ -478,6 +498,7 @@ test "union initializer generates padding only if needed" {
478 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;498 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
479 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;499 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
480 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO500 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
481502
482 const U = union(enum) {503 const U = union(enum) {
483 A: u24,504 A: u24,
...@@ -489,6 +510,7 @@ test "union initializer generates padding only if needed" {...@@ -489,6 +510,7 @@ test "union initializer generates padding only if needed" {
489510
490test "runtime tag name with single field" {511test "runtime tag name with single field" {
491 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
513 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
492514
493 const U = union(enum) {515 const U = union(enum) {
494 A: i32,516 A: i32,
...@@ -501,6 +523,7 @@ test "runtime tag name with single field" {...@@ -501,6 +523,7 @@ test "runtime tag name with single field" {
501test "method call on an empty union" {523test "method call on an empty union" {
502 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;524 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
503 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
526 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
504527
505 const S = struct {528 const S = struct {
506 const MyUnion = union(MyUnionTag) {529 const MyUnion = union(MyUnionTag) {
...@@ -541,6 +564,7 @@ const Baz = enum { A, B, C, D };...@@ -541,6 +564,7 @@ const Baz = enum { A, B, C, D };
541test "tagged union type" {564test "tagged union type" {
542 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;565 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
543 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;566 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
544568
545 const foo1 = TaggedFoo{ .One = 13 };569 const foo1 = TaggedFoo{ .One = 13 };
546 const foo2 = TaggedFoo{570 const foo2 = TaggedFoo{
...@@ -563,6 +587,7 @@ test "tagged union type" {...@@ -563,6 +587,7 @@ test "tagged union type" {
563test "tagged union as return value" {587test "tagged union as return value" {
564 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;588 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
565 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;589 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
566591
567 switch (returnAnInt(13)) {592 switch (returnAnInt(13)) {
568 TaggedFoo.One => |value| try expect(value == 13),593 TaggedFoo.One => |value| try expect(value == 13),
...@@ -578,6 +603,7 @@ test "tagged union with all void fields but a meaningful tag" {...@@ -578,6 +603,7 @@ test "tagged union with all void fields but a meaningful tag" {
578 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;603 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
579 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;604 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
580 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;605 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
606 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
581607
582 const S = struct {608 const S = struct {
583 const B = union(enum) {609 const B = union(enum) {
...@@ -606,6 +632,7 @@ test "union(enum(u32)) with specified and unspecified tag values" {...@@ -606,6 +632,7 @@ test "union(enum(u32)) with specified and unspecified tag values" {
606 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;632 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;633 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
608 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;634 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
635 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
609636
610 comptime try expect(Tag(Tag(MultipleChoice2)) == u32);637 comptime try expect(Tag(Tag(MultipleChoice2)) == u32);
611 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });638 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
...@@ -642,6 +669,7 @@ fn testEnumWithSpecifiedAndUnspecifiedTagValues(x: MultipleChoice2) !void {...@@ -642,6 +669,7 @@ fn testEnumWithSpecifiedAndUnspecifiedTagValues(x: MultipleChoice2) !void {
642test "switch on union with only 1 field" {669test "switch on union with only 1 field" {
643 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO670 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
644 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO671 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
672 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
645673
646 var r: PartialInst = undefined;674 var r: PartialInst = undefined;
647 r = PartialInst.Compiled;675 r = PartialInst.Compiled;
...@@ -670,6 +698,7 @@ const PartialInstWithPayload = union(enum) {...@@ -670,6 +698,7 @@ const PartialInstWithPayload = union(enum) {
670698
671test "union with only 1 field casted to its enum type which has enum value specified" {699test "union with only 1 field casted to its enum type which has enum value specified" {
672 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;700 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
701 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
673702
674 const Literal = union(enum) {703 const Literal = union(enum) {
675 Number: f64,704 Number: f64,
...@@ -695,6 +724,7 @@ test "union with only 1 field casted to its enum type which has enum value speci...@@ -695,6 +724,7 @@ test "union with only 1 field casted to its enum type which has enum value speci
695test "@enumToInt works on unions" {724test "@enumToInt works on unions" {
696 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO725 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
697 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO726 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
727 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
698728
699 const Bar = union(enum) {729 const Bar = union(enum) {
700 A: bool,730 A: bool,
...@@ -754,6 +784,7 @@ test "return union init with void payload" {...@@ -754,6 +784,7 @@ test "return union init with void payload" {
754 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;784 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
755 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;785 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
756 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO786 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
787 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
757788
758 const S = struct {789 const S = struct {
759 fn entry() !void {790 fn entry() !void {
...@@ -779,6 +810,7 @@ test "@unionInit stored to a const" {...@@ -779,6 +810,7 @@ test "@unionInit stored to a const" {
779 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO810 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
780 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO811 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
781 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO812 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
813 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
782814
783 const S = struct {815 const S = struct {
784 const U = union(enum) {816 const U = union(enum) {
...@@ -806,6 +838,7 @@ test "@unionInit stored to a const" {...@@ -806,6 +838,7 @@ test "@unionInit stored to a const" {
806test "@unionInit can modify a union type" {838test "@unionInit can modify a union type" {
807 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
808 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO840 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
841 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
809842
810 const UnionInitEnum = union(enum) {843 const UnionInitEnum = union(enum) {
811 Boolean: bool,844 Boolean: bool,
...@@ -828,6 +861,7 @@ test "@unionInit can modify a union type" {...@@ -828,6 +861,7 @@ test "@unionInit can modify a union type" {
828test "@unionInit can modify a pointer value" {861test "@unionInit can modify a pointer value" {
829 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO862 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
830 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO863 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
831865
832 const UnionInitEnum = union(enum) {866 const UnionInitEnum = union(enum) {
833 Boolean: bool,867 Boolean: bool,
...@@ -847,6 +881,7 @@ test "@unionInit can modify a pointer value" {...@@ -847,6 +881,7 @@ test "@unionInit can modify a pointer value" {
847test "union no tag with struct member" {881test "union no tag with struct member" {
848 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO882 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
849 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO883 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
884 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
850885
851 const Struct = struct {};886 const Struct = struct {};
852 const Union = union {887 const Union = union {
...@@ -882,6 +917,7 @@ test "anonymous union literal syntax" {...@@ -882,6 +917,7 @@ test "anonymous union literal syntax" {
882 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO917 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
883 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO918 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
884 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO919 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
920 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
885921
886 const S = struct {922 const S = struct {
887 const Number = union {923 const Number = union {
...@@ -907,6 +943,7 @@ test "anonymous union literal syntax" {...@@ -907,6 +943,7 @@ test "anonymous union literal syntax" {
907test "function call result coerces from tagged union to the tag" {943test "function call result coerces from tagged union to the tag" {
908 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO944 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
909 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO945 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
946 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910947
911 const S = struct {948 const S = struct {
912 const Arch = union(enum) {949 const Arch = union(enum) {
...@@ -941,6 +978,7 @@ test "cast from anonymous struct to union" {...@@ -941,6 +978,7 @@ test "cast from anonymous struct to union" {
941 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO978 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
942 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
943 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO980 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
981 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
944982
945 const S = struct {983 const S = struct {
946 const U = union(enum) {984 const U = union(enum) {
...@@ -973,6 +1011,7 @@ test "cast from pointer to anonymous struct to pointer to union" {...@@ -973,6 +1011,7 @@ test "cast from pointer to anonymous struct to pointer to union" {
973 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1011 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
974 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1012 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
975 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1013 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1014 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9761015
977 const S = struct {1016 const S = struct {
978 const U = union(enum) {1017 const U = union(enum) {
...@@ -1003,6 +1042,7 @@ test "cast from pointer to anonymous struct to pointer to union" {...@@ -1003,6 +1042,7 @@ test "cast from pointer to anonymous struct to pointer to union" {
1003test "switching on non exhaustive union" {1042test "switching on non exhaustive union" {
1004 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1043 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1005 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1044 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10061046
1007 const S = struct {1047 const S = struct {
1008 const E = enum(u8) {1048 const E = enum(u8) {
...@@ -1029,6 +1069,7 @@ test "switching on non exhaustive union" {...@@ -1029,6 +1069,7 @@ test "switching on non exhaustive union" {
1029test "containers with single-field enums" {1069test "containers with single-field enums" {
1030 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1070 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1031 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1072 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10321073
1033 const S = struct {1074 const S = struct {
1034 const A = union(enum) { f1 };1075 const A = union(enum) { f1 };
...@@ -1058,6 +1099,7 @@ test "@unionInit on union with tag but no fields" {...@@ -1058,6 +1099,7 @@ test "@unionInit on union with tag but no fields" {
1058 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1099 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1059 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1100 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1060 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1101 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10611103
1062 const S = struct {1104 const S = struct {
1063 const Type = enum(u8) { no_op = 105 };1105 const Type = enum(u8) { no_op = 105 };
...@@ -1106,6 +1148,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel...@@ -1106,6 +1148,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel
1106 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1148 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1108 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1151 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11091152
1110 const T = struct {1153 const T = struct {
1111 const U = union(enum) {1154 const U = union(enum) {
...@@ -1132,6 +1175,7 @@ test "union with no result loc initiated with a runtime value" {...@@ -1132,6 +1175,7 @@ test "union with no result loc initiated with a runtime value" {
1132 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1133 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1134 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1177 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11351179
1136 const U = union {1180 const U = union {
1137 a: u32,1181 a: u32,
...@@ -1148,6 +1192,7 @@ test "union with a large struct field" {...@@ -1148,6 +1192,7 @@ test "union with a large struct field" {
1148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1150 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1194 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11511196
1152 const S = struct {1197 const S = struct {
1153 a: [8]usize,1198 a: [8]usize,
...@@ -1180,6 +1225,7 @@ test "comptime equality of extern unions with same tag" {...@@ -1180,6 +1225,7 @@ test "comptime equality of extern unions with same tag" {
1180test "union tag is set when initiated as a temporary value at runtime" {1225test "union tag is set when initiated as a temporary value at runtime" {
1181 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1182 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11831229
1184 const U = union(enum) {1230 const U = union(enum) {
1185 a,1231 a,
...@@ -1198,6 +1244,7 @@ test "extern union most-aligned field is smaller" {...@@ -1198,6 +1244,7 @@ test "extern union most-aligned field is smaller" {
1198 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1244 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1245 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1246 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12011248
1202 const U = extern union {1249 const U = extern union {
1203 in6: extern struct {1250 in6: extern struct {
...@@ -1216,6 +1263,7 @@ test "return an extern union from C calling convention" {...@@ -1216,6 +1263,7 @@ test "return an extern union from C calling convention" {
1216 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1263 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1217 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1265 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12191267
1220 const namespace = struct {1268 const namespace = struct {
1221 const S = extern struct {1269 const S = extern struct {
...@@ -1246,6 +1294,7 @@ test "noreturn field in union" {...@@ -1246,6 +1294,7 @@ test "noreturn field in union" {
1246 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1294 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1247 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1295 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1248 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1296 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12491298
1250 const U = union(enum) {1299 const U = union(enum) {
1251 a: u32,1300 a: u32,
...@@ -1296,6 +1345,7 @@ test "noreturn field in union" {...@@ -1296,6 +1345,7 @@ test "noreturn field in union" {
1296test "union and enum field order doesn't match" {1345test "union and enum field order doesn't match" {
1297 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1346 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1298 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1347 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12991349
1300 const MyTag = enum(u32) {1350 const MyTag = enum(u32) {
1301 b = 1337,1351 b = 1337,
...@@ -1321,6 +1371,7 @@ test "@unionInit uses tag value instead of field index" {...@@ -1321,6 +1371,7 @@ test "@unionInit uses tag value instead of field index" {
1321 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1371 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1323 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1373 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13241375
1325 const E = enum(u8) {1376 const E = enum(u8) {
1326 b = 255,1377 b = 255,
...@@ -1346,6 +1397,7 @@ test "@unionInit uses tag value instead of field index" {...@@ -1346,6 +1397,7 @@ test "@unionInit uses tag value instead of field index" {
1346test "union field ptr - zero sized payload" {1397test "union field ptr - zero sized payload" {
1347 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1398 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1399 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1400 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13491401
1350 const U = union {1402 const U = union {
1351 foo: void,1403 foo: void,
...@@ -1359,6 +1411,7 @@ test "union field ptr - zero sized payload" {...@@ -1359,6 +1411,7 @@ test "union field ptr - zero sized payload" {
1359test "union field ptr - zero sized field" {1411test "union field ptr - zero sized field" {
1360 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1361 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13621415
1363 const U = union {1416 const U = union {
1364 foo: void,1417 foo: void,
...@@ -1374,6 +1427,7 @@ test "packed union in packed struct" {...@@ -1374,6 +1427,7 @@ test "packed union in packed struct" {
1374 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1428 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1376 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1429 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1430 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13771431
1378 const S = packed struct {1432 const S = packed struct {
1379 nested: packed union {1433 nested: packed union {
test/behavior/union_with_members.zig+1
...@@ -21,6 +21,7 @@ test "enum with members" {...@@ -21,6 +21,7 @@ test "enum with members" {
21 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2425
25 const a = ET{ .SINT = -42 };26 const a = ET{ .SINT = -42 };
26 const b = ET{ .UINT = 42 };27 const b = ET{ .UINT = 42 };
test/behavior/usingnamespace.zig+3
...@@ -38,6 +38,7 @@ test "usingnamespace does not redeclare an imported variable" {...@@ -38,6 +38,7 @@ test "usingnamespace does not redeclare an imported variable" {
38usingnamespace @import("usingnamespace/foo.zig");38usingnamespace @import("usingnamespace/foo.zig");
39test "usingnamespace omits mixing in private functions" {39test "usingnamespace omits mixing in private functions" {
40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;40 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4142
42 try expect(@This().privateFunction());43 try expect(@This().privateFunction());
43 try expect(!@This().printText());44 try expect(!@This().printText());
...@@ -53,12 +54,14 @@ test {...@@ -53,12 +54,14 @@ test {
53usingnamespace @import("usingnamespace/a.zig");54usingnamespace @import("usingnamespace/a.zig");
54test "two files usingnamespace import each other" {55test "two files usingnamespace import each other" {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5658
57 try expect(@This().ok());59 try expect(@This().ok());
58}60}
5961
60test {62test {
61 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6265
63 const AA = struct {66 const AA = struct {
64 x: i32,67 x: i32,
test/behavior/usingnamespace/import_segregation.zig+3
...@@ -1,9 +1,12 @@...@@ -1,9 +1,12 @@
1const expect = @import("std").testing.expect;1const expect = @import("std").testing.expect;
2const builtin = @import("builtin");
23
3usingnamespace @import("foo.zig");4usingnamespace @import("foo.zig");
4usingnamespace @import("bar.zig");5usingnamespace @import("bar.zig");
56
6test "no clobbering happened" {7test "no clobbering happened" {
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9
7 @This().foo_function();10 @This().foo_function();
8 @This().bar_function();11 @This().bar_function();
9 try expect(@This().saw_foo_function);12 try expect(@This().saw_foo_function);
test/behavior/var_args.zig+2
...@@ -28,6 +28,7 @@ test "send void arg to var args" {...@@ -28,6 +28,7 @@ test "send void arg to var args" {
2828
29test "pass args directly" {29test "pass args directly" {
30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3132
32 try expect(addSomeStuff(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);33 try expect(addSomeStuff(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);
33 try expect(addSomeStuff(.{@as(i32, 1234)}) == 1234);34 try expect(addSomeStuff(.{@as(i32, 1234)}) == 1234);
...@@ -40,6 +41,7 @@ fn addSomeStuff(args: anytype) i32 {...@@ -40,6 +41,7 @@ fn addSomeStuff(args: anytype) i32 {
4041
41test "runtime parameter before var args" {42test "runtime parameter before var args" {
42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4345
44 try expect((try extraFn(10, .{})) == 0);46 try expect((try extraFn(10, .{})) == 0);
45 try expect((try extraFn(10, .{false})) == 1);47 try expect((try extraFn(10, .{false})) == 1);
test/behavior/vector.zig+38
...@@ -10,6 +10,7 @@ test "implicit cast vector to array - bool" {...@@ -10,6 +10,7 @@ test "implicit cast vector to array - bool" {
10 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1314
14 const S = struct {15 const S = struct {
15 fn doTheTest() !void {16 fn doTheTest() !void {
...@@ -28,6 +29,7 @@ test "vector wrap operators" {...@@ -28,6 +29,7 @@ test "vector wrap operators" {
28 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO29 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3133
32 const S = struct {34 const S = struct {
33 fn doTheTest() !void {35 fn doTheTest() !void {
...@@ -50,6 +52,7 @@ test "vector bin compares with mem.eql" {...@@ -50,6 +52,7 @@ test "vector bin compares with mem.eql" {
50 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO52 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5356
54 const S = struct {57 const S = struct {
55 fn doTheTest() !void {58 fn doTheTest() !void {
...@@ -73,6 +76,7 @@ test "vector int operators" {...@@ -73,6 +76,7 @@ test "vector int operators" {
73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO78 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7680
77 const S = struct {81 const S = struct {
78 fn doTheTest() !void {82 fn doTheTest() !void {
...@@ -94,6 +98,7 @@ test "vector float operators" {...@@ -94,6 +98,7 @@ test "vector float operators" {
94 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO98 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
97102
98 inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {103 inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {
99 const S = struct {104 const S = struct {
...@@ -117,6 +122,7 @@ test "vector bit operators" {...@@ -117,6 +122,7 @@ test "vector bit operators" {
117 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO122 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120126
121 const S = struct {127 const S = struct {
122 fn doTheTest() !void {128 fn doTheTest() !void {
...@@ -136,6 +142,7 @@ test "implicit cast vector to array" {...@@ -136,6 +142,7 @@ test "implicit cast vector to array" {
136 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
137 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
138 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
139146
140 const S = struct {147 const S = struct {
141 fn doTheTest() !void {148 fn doTheTest() !void {
...@@ -154,6 +161,7 @@ test "array to vector" {...@@ -154,6 +161,7 @@ test "array to vector" {
154 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157165
158 const S = struct {166 const S = struct {
159 fn doTheTest() !void {167 fn doTheTest() !void {
...@@ -173,6 +181,7 @@ test "tuple to vector" {...@@ -173,6 +181,7 @@ test "tuple to vector" {
173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO182 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
175 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO183 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176185
177 const S = struct {186 const S = struct {
178 fn doTheTest() !void {187 fn doTheTest() !void {
...@@ -195,6 +204,7 @@ test "vector casts of sizes not divisible by 8" {...@@ -195,6 +204,7 @@ test "vector casts of sizes not divisible by 8" {
195 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO204 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO206 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
207 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
198208
199 const S = struct {209 const S = struct {
200 fn doTheTest() !void {210 fn doTheTest() !void {
...@@ -230,6 +240,7 @@ test "vector @splat" {...@@ -230,6 +240,7 @@ test "vector @splat" {
230 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO240 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
233244
234 if (builtin.zig_backend == .stage2_llvm and245 if (builtin.zig_backend == .stage2_llvm and
235 builtin.os.tag == .macos)246 builtin.os.tag == .macos)
...@@ -277,6 +288,7 @@ test "load vector elements via comptime index" {...@@ -277,6 +288,7 @@ test "load vector elements via comptime index" {
277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO288 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO289 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
280292
281 const S = struct {293 const S = struct {
282 fn doTheTest() !void {294 fn doTheTest() !void {
...@@ -299,6 +311,7 @@ test "store vector elements via comptime index" {...@@ -299,6 +311,7 @@ test "store vector elements via comptime index" {
299 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO311 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
300 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
314 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
302315
303 const S = struct {316 const S = struct {
304 fn doTheTest() !void {317 fn doTheTest() !void {
...@@ -327,6 +340,7 @@ test "load vector elements via runtime index" {...@@ -327,6 +340,7 @@ test "load vector elements via runtime index" {
327 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO340 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
328 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
329 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
330344
331 const S = struct {345 const S = struct {
332 fn doTheTest() !void {346 fn doTheTest() !void {
...@@ -349,6 +363,7 @@ test "store vector elements via runtime index" {...@@ -349,6 +363,7 @@ test "store vector elements via runtime index" {
349 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO363 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
351 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
366 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352367
353 const S = struct {368 const S = struct {
354 fn doTheTest() !void {369 fn doTheTest() !void {
...@@ -372,6 +387,7 @@ test "initialize vector which is a struct field" {...@@ -372,6 +387,7 @@ test "initialize vector which is a struct field" {
372 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO387 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
373 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO388 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
374 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
375391
376 const Vec4Obj = struct {392 const Vec4Obj = struct {
377 data: @Vector(4, f32),393 data: @Vector(4, f32),
...@@ -395,6 +411,7 @@ test "vector comparison operators" {...@@ -395,6 +411,7 @@ test "vector comparison operators" {
395 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO411 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
398415
399 const S = struct {416 const S = struct {
400 fn doTheTest() !void {417 fn doTheTest() !void {
...@@ -435,6 +452,7 @@ test "vector division operators" {...@@ -435,6 +452,7 @@ test "vector division operators" {
435 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO452 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
436 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
437 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
438456
439 const S = struct {457 const S = struct {
440 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {458 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
...@@ -517,6 +535,7 @@ test "vector bitwise not operator" {...@@ -517,6 +535,7 @@ test "vector bitwise not operator" {
517 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO535 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
518 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
519 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO537 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
520539
521 const S = struct {540 const S = struct {
522 fn doTheTestNot(comptime T: type, x: @Vector(4, T)) !void {541 fn doTheTestNot(comptime T: type, x: @Vector(4, T)) !void {
...@@ -548,6 +567,7 @@ test "vector shift operators" {...@@ -548,6 +567,7 @@ test "vector shift operators" {
548 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO567 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
549 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO568 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
550 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO569 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
570 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
551571
552 const S = struct {572 const S = struct {
553 fn doTheTestShift(x: anytype, y: anytype) !void {573 fn doTheTestShift(x: anytype, y: anytype) !void {
...@@ -641,6 +661,7 @@ test "vector reduce operation" {...@@ -641,6 +661,7 @@ test "vector reduce operation" {
641 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO661 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
642 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO662 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
643 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO663 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
664 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
644665
645 const S = struct {666 const S = struct {
646 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {667 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {
...@@ -783,6 +804,7 @@ test "vector @reduce comptime" {...@@ -783,6 +804,7 @@ test "vector @reduce comptime" {
783 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO804 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
784 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO805 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
785 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO806 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
807 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
786808
787 const value = @Vector(4, i32){ 1, -1, 1, -1 };809 const value = @Vector(4, i32){ 1, -1, 1, -1 };
788 const result = value > @splat(4, @as(i32, 0));810 const result = value > @splat(4, @as(i32, 0));
...@@ -799,6 +821,7 @@ test "mask parameter of @shuffle is comptime scope" {...@@ -799,6 +821,7 @@ test "mask parameter of @shuffle is comptime scope" {
799 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO821 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
800 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO822 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
801 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO823 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
824 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
802825
803 const __v4hi = @Vector(4, i16);826 const __v4hi = @Vector(4, i16);
804 var v4_a = __v4hi{ 0, 0, 0, 0 };827 var v4_a = __v4hi{ 0, 0, 0, 0 };
...@@ -818,6 +841,7 @@ test "saturating add" {...@@ -818,6 +841,7 @@ test "saturating add" {
818 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO841 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
819 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO842 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO843 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
844 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
821845
822 const S = struct {846 const S = struct {
823 fn doTheTest() !void {847 fn doTheTest() !void {
...@@ -849,6 +873,7 @@ test "saturating subtraction" {...@@ -849,6 +873,7 @@ test "saturating subtraction" {
849 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO873 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
850 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO874 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
851 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO875 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
876 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
852877
853 const S = struct {878 const S = struct {
854 fn doTheTest() !void {879 fn doTheTest() !void {
...@@ -871,6 +896,7 @@ test "saturating multiplication" {...@@ -871,6 +896,7 @@ test "saturating multiplication" {
871 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO896 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
872 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO897 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
873 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO898 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
899 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
874900
875 // TODO: once #9660 has been solved, remove this line901 // TODO: once #9660 has been solved, remove this line
876 if (builtin.target.cpu.arch == .wasm32) return error.SkipZigTest;902 if (builtin.target.cpu.arch == .wasm32) return error.SkipZigTest;
...@@ -897,6 +923,7 @@ test "saturating shift-left" {...@@ -897,6 +923,7 @@ test "saturating shift-left" {
897 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO923 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
898 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO924 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
899 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO925 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
926 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
900927
901 const S = struct {928 const S = struct {
902 fn doTheTest() !void {929 fn doTheTest() !void {
...@@ -919,6 +946,7 @@ test "multiplication-assignment operator with an array operand" {...@@ -919,6 +946,7 @@ test "multiplication-assignment operator with an array operand" {
919 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO946 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
920 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO947 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
921 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO948 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
949 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
922950
923 const S = struct {951 const S = struct {
924 fn doTheTest() !void {952 fn doTheTest() !void {
...@@ -938,6 +966,7 @@ test "@addWithOverflow" {...@@ -938,6 +966,7 @@ test "@addWithOverflow" {
938 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO966 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
939 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO967 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
940 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO968 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
969 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
941970
942 const S = struct {971 const S = struct {
943 fn doTheTest() !void {972 fn doTheTest() !void {
...@@ -984,6 +1013,7 @@ test "@subWithOverflow" {...@@ -984,6 +1013,7 @@ test "@subWithOverflow" {
984 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1013 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
985 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1014 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
986 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1015 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1016 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9871017
988 const S = struct {1018 const S = struct {
989 fn doTheTest() !void {1019 fn doTheTest() !void {
...@@ -1014,6 +1044,7 @@ test "@mulWithOverflow" {...@@ -1014,6 +1044,7 @@ test "@mulWithOverflow" {
1014 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1044 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1015 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1045 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1016 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1046 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1047 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10171048
1018 const S = struct {1049 const S = struct {
1019 fn doTheTest() !void {1050 fn doTheTest() !void {
...@@ -1035,6 +1066,7 @@ test "@shlWithOverflow" {...@@ -1035,6 +1066,7 @@ test "@shlWithOverflow" {
1035 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1066 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1036 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1067 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1037 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1068 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1069 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10381070
1039 const S = struct {1071 const S = struct {
1040 fn doTheTest() !void {1072 fn doTheTest() !void {
...@@ -1062,6 +1094,7 @@ test "loading the second vector from a slice of vectors" {...@@ -1062,6 +1094,7 @@ test "loading the second vector from a slice of vectors" {
1062 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1094 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1063 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1095 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1064 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1096 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1097 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10651098
1066 @setRuntimeSafety(false);1099 @setRuntimeSafety(false);
1067 var small_bases = [2]@Vector(2, u8){1100 var small_bases = [2]@Vector(2, u8){
...@@ -1078,6 +1111,7 @@ test "array of vectors is copied" {...@@ -1078,6 +1111,7 @@ test "array of vectors is copied" {
1078 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1111 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1079 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1080 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_sparc64) return error.SkipZigTest; // TODO
10811115
1082 const Vec3 = @Vector(3, i32);1116 const Vec3 = @Vector(3, i32);
1083 var points = [_]Vec3{1117 var points = [_]Vec3{
...@@ -1131,6 +1165,7 @@ test "zero divisor" {...@@ -1131,6 +1165,7 @@ test "zero divisor" {
1131 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1165 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1133 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1167 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11341169
1135 const zeros = @Vector(2, f32){ 0.0, 0.0 };1170 const zeros = @Vector(2, f32){ 0.0, 0.0 };
1136 const ones = @Vector(2, f32){ 1.0, 1.0 };1171 const ones = @Vector(2, f32){ 1.0, 1.0 };
...@@ -1151,6 +1186,7 @@ test "zero multiplicand" {...@@ -1151,6 +1186,7 @@ test "zero multiplicand" {
1151 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1186 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1152 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11541190
1155 const zeros = @Vector(2, u32){ 0.0, 0.0 };1191 const zeros = @Vector(2, u32){ 0.0, 0.0 };
1156 var ones = @Vector(2, u32){ 1.0, 1.0 };1192 var ones = @Vector(2, u32){ 1.0, 1.0 };
...@@ -1174,6 +1210,7 @@ test "@intCast to u0" {...@@ -1174,6 +1210,7 @@ test "@intCast to u0" {
1174 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1210 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11771214
1178 var zeros = @Vector(2, u32){ 0, 0 };1215 var zeros = @Vector(2, u32){ 0, 0 };
1179 const casted = @intCast(@Vector(2, u0), zeros);1216 const casted = @intCast(@Vector(2, u0), zeros);
...@@ -1197,6 +1234,7 @@ test "array operands to shuffle are coerced to vectors" {...@@ -1197,6 +1234,7 @@ test "array operands to shuffle are coerced to vectors" {
1197 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1234 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1198 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12001238
1201 const mask = [5]i32{ -1, 0, 1, 2, 3 };1239 const mask = [5]i32{ -1, 0, 1, 2, 3 };
12021240
test/behavior/void.zig+2
...@@ -20,6 +20,7 @@ test "compare void with void compile time known" {...@@ -20,6 +20,7 @@ test "compare void with void compile time known" {
2020
21test "iterate over a void slice" {21test "iterate over a void slice" {
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
24 var j: usize = 0;25 var j: usize = 0;
25 for (times(10)) |_, i| {26 for (times(10)) |_, i| {
...@@ -36,6 +37,7 @@ test "void optional" {...@@ -36,6 +37,7 @@ test "void optional" {
36 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;37 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3941
40 var x: ?void = {};42 var x: ?void = {};
41 try expect(x != null);43 try expect(x != null);
test/behavior/while.zig+12
...@@ -5,6 +5,7 @@ const assert = std.debug.assert;...@@ -5,6 +5,7 @@ const assert = std.debug.assert;
55
6test "while loop" {6test "while loop" {
7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
9 var i: i32 = 0;10 var i: i32 = 0;
10 while (i < 4) {11 while (i < 4) {
...@@ -24,6 +25,7 @@ fn whileLoop2() i32 {...@@ -24,6 +25,7 @@ fn whileLoop2() i32 {
2425
25test "static eval while" {26test "static eval while" {
26 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;27 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
28 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2729
28 try expect(static_eval_while_number == 1);30 try expect(static_eval_while_number == 1);
29}31}
...@@ -107,6 +109,7 @@ test "while copies its payload" {...@@ -107,6 +109,7 @@ test "while copies its payload" {
107 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;109 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
108 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
112 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
110113
111 const S = struct {114 const S = struct {
112 fn doTheTest() !void {115 fn doTheTest() !void {
...@@ -146,6 +149,7 @@ test "while with optional as condition" {...@@ -146,6 +149,7 @@ test "while with optional as condition" {
146 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;149 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
148 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
149153
150 numbers_left = 10;154 numbers_left = 10;
151 var sum: i32 = 0;155 var sum: i32 = 0;
...@@ -159,6 +163,7 @@ test "while with optional as condition with else" {...@@ -159,6 +163,7 @@ test "while with optional as condition with else" {
159 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;163 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
162167
163 numbers_left = 10;168 numbers_left = 10;
164 var sum: i32 = 0;169 var sum: i32 = 0;
...@@ -176,6 +181,7 @@ test "while with optional as condition with else" {...@@ -176,6 +181,7 @@ test "while with optional as condition with else" {
176test "while with error union condition" {181test "while with error union condition" {
177 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;182 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179185
180 numbers_left = 10;186 numbers_left = 10;
181 var sum: i32 = 0;187 var sum: i32 = 0;
...@@ -208,6 +214,7 @@ test "while on optional with else result follow else prong" {...@@ -208,6 +214,7 @@ test "while on optional with else result follow else prong" {
208 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
211218
212 const result = while (returnNull()) |value| {219 const result = while (returnNull()) |value| {
213 break value;220 break value;
...@@ -219,6 +226,7 @@ test "while on optional with else result follow break prong" {...@@ -219,6 +226,7 @@ test "while on optional with else result follow break prong" {
219 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;226 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;227 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
229 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222230
223 const result = while (returnOptional(10)) |value| {231 const result = while (returnOptional(10)) |value| {
224 break value;232 break value;
...@@ -256,6 +264,7 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {...@@ -256,6 +264,7 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {
256264
257test "while on error union with else result follow else prong" {265test "while on error union with else result follow else prong" {
258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;266 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
259268
260 const result = while (returnError()) |value| {269 const result = while (returnError()) |value| {
261 break value;270 break value;
...@@ -265,6 +274,7 @@ test "while on error union with else result follow else prong" {...@@ -265,6 +274,7 @@ test "while on error union with else result follow else prong" {
265274
266test "while on error union with else result follow break prong" {275test "while on error union with else result follow break prong" {
267 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268278
269 const result = while (returnSuccess(10)) |value| {279 const result = while (returnSuccess(10)) |value| {
270 break value;280 break value;
...@@ -291,6 +301,7 @@ test "while optional 2 break statements and an else" {...@@ -291,6 +301,7 @@ test "while optional 2 break statements and an else" {
291 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO301 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
292 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
294305
295 const S = struct {306 const S = struct {
296 fn entry(opt_t: ?bool, f: bool) !void {307 fn entry(opt_t: ?bool, f: bool) !void {
...@@ -310,6 +321,7 @@ test "while error 2 break statements and an else" {...@@ -310,6 +321,7 @@ test "while error 2 break statements and an else" {
310 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO321 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
311 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
313325
314 const S = struct {326 const S = struct {
315 fn entry(opt_t: anyerror!bool, f: bool) !void {327 fn entry(opt_t: anyerror!bool, f: bool) !void {
test/behavior/widening.zig+5
...@@ -8,6 +8,7 @@ test "integer widening" {...@@ -8,6 +8,7 @@ test "integer widening" {
8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
12 var a: u8 = 250;13 var a: u8 = 250;
13 var b: u16 = a;14 var b: u16 = a;
...@@ -29,6 +30,7 @@ test "integer widening u0 to u8" {...@@ -29,6 +30,7 @@ test "integer widening u0 to u8" {
29test "implicit unsigned integer to signed integer" {30test "implicit unsigned integer to signed integer" {
30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3234
33 var a: u8 = 250;35 var a: u8 = 250;
34 var b: i16 = a;36 var b: i16 = a;
...@@ -40,6 +42,7 @@ test "float widening" {...@@ -40,6 +42,7 @@ test "float widening" {
40 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO44 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4346
44 var a: f16 = 12.34;47 var a: f16 = 12.34;
45 var b: f32 = a;48 var b: f32 = a;
...@@ -59,6 +62,7 @@ test "float widening f16 to f128" {...@@ -59,6 +62,7 @@ test "float widening f16 to f128" {
59 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO62 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO63 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO64 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6266
63 var x: f16 = 12.34;67 var x: f16 = 12.34;
64 var y: f128 = x;68 var y: f128 = x;
...@@ -68,6 +72,7 @@ test "float widening f16 to f128" {...@@ -68,6 +72,7 @@ test "float widening f16 to f128" {
68test "cast small unsigned to larger signed" {72test "cast small unsigned to larger signed" {
69 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO73 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7176
72 try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200));77 try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200));
73 try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999));78 try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999));