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) {
144144 memory: u64,
145145 /// The value is one of the stack variables.
146146 /// 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).
147148 stack_offset: u32,
148149 /// The value is a pointer to one of the stack variables (payload is stack offset).
149150 ptr_stack_offset: u32,
......@@ -274,6 +275,8 @@ pub fn generate(
274275 assert(fn_owner_decl.has_tv);
275276 const fn_type = fn_owner_decl.ty;
276277
278 log.debug("fn {s}", .{fn_owner_decl.name});
279
277280 var branch_stack = std.ArrayList(Branch).init(bin_file.allocator);
278281 defer {
279282 assert(branch_stack.items.len == 1);
......@@ -518,8 +521,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
518521 .sub_sat => try self.airSubSat(inst),
519522 .mul_sat => try self.airMulSat(inst),
520523 .shl_sat => try self.airShlSat(inst),
521 .min => @panic("TODO try self.airMin(inst)"),
522 .max => @panic("TODO try self.airMax(inst)"),
524 .min, .max => try self.airMinMax(inst),
523525 .rem => try self.airRem(inst),
524526 .mod => try self.airMod(inst),
525527 .slice => try self.airSlice(inst),
......@@ -573,7 +575,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
573575 .fptrunc => @panic("TODO try self.airFptrunc(inst)"),
574576 .fpext => @panic("TODO try self.airFpext(inst)"),
575577 .intcast => try self.airIntCast(inst),
576 .trunc => @panic("TODO try self.airTrunc(inst)"),
578 .trunc => try self.airTrunc(inst),
577579 .bool_to_int => try self.airBoolToInt(inst),
578580 .is_non_null => try self.airIsNonNull(inst),
579581 .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 {
595597 .array_to_slice => try self.airArrayToSlice(inst),
596598 .int_to_float => try self.airIntToFloat(inst),
597599 .float_to_int => try self.airFloatToInt(inst),
598 .cmpxchg_strong => @panic("TODO try self.airCmpxchg(inst)"),
599 .cmpxchg_weak => @panic("TODO try self.airCmpxchg(inst)"),
600 .atomic_rmw => @panic("TODO try self.airAtomicRmw(inst)"),
601 .atomic_load => @panic("TODO try self.airAtomicLoad(inst)"),
600 .cmpxchg_strong,
601 .cmpxchg_weak,
602 => try self.airCmpxchg(inst),
603 .atomic_rmw => try self.airAtomicRmw(inst),
604 .atomic_load => try self.airAtomicLoad(inst),
602605 .memcpy => @panic("TODO try self.airMemcpy(inst)"),
603606 .memset => try self.airMemset(inst),
604 .set_union_tag => @panic("TODO try self.airSetUnionTag(inst)"),
605 .get_union_tag => @panic("TODO try self.airGetUnionTag(inst)"),
607 .set_union_tag => try self.airSetUnionTag(inst),
608 .get_union_tag => try self.airGetUnionTag(inst),
606609 .clz => try self.airClz(inst),
607610 .ctz => try self.airCtz(inst),
608611 .popcount => try self.airPopcount(inst),
609612 .byte_swap => @panic("TODO try self.airByteSwap(inst)"),
610 .bit_reverse => @panic("TODO try self.airBitReverse(inst)"),
613 .bit_reverse => try self.airBitReverse(inst),
611614 .tag_name => try self.airTagName(inst),
612 .error_name => @panic("TODO try self.airErrorName(inst)"),
613 .splat => @panic("TODO try self.airSplat(inst)"),
615 .error_name => try self.airErrorName(inst),
616 .splat => try self.airSplat(inst),
614617 .select => @panic("TODO try self.airSelect(inst)"),
615618 .shuffle => @panic("TODO try self.airShuffle(inst)"),
616619 .reduce => @panic("TODO try self.airReduce(inst)"),
617620 .aggregate_init => try self.airAggregateInit(inst),
618 .union_init => @panic("TODO try self.airUnionInit(inst)"),
621 .union_init => try self.airUnionInit(inst),
619622 .prefetch => try self.airPrefetch(inst),
620623 .mul_add => @panic("TODO try self.airMulAdd(inst)"),
621624 .addrspace_cast => @panic("TODO try self.airAddrSpaceCast(int)"),
......@@ -682,7 +685,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
682685 .save_err_return_trace_index=> @panic("TODO try self.airSaveErrReturnTraceIndex(inst)"),
683686
684687 .wrap_optional => try self.airWrapOptional(inst),
685 .wrap_errunion_payload => @panic("TODO try self.airWrapErrUnionPayload(inst)"),
688 .wrap_errunion_payload => try self.airWrapErrUnionPayload(inst),
686689 .wrap_errunion_err => try self.airWrapErrUnionErr(inst),
687690
688691 .add_optimized,
......@@ -991,12 +994,21 @@ fn airArg(self: *Self, inst: Air.Inst.Index) !void {
991994 self.arg_index += 1;
992995
993996 const ty = self.air.typeOfIndex(inst);
994 _ = ty;
995997
996 const result = self.args[arg_index];
997 // TODO support stack-only arguments
998 // TODO Copy registers to the stack
999 const mcv = result;
998 const arg = self.args[arg_index];
999 const mcv = blk: {
1000 switch (arg) {
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
10011013 try self.genArgDbgInfo(inst, mcv, @intCast(u32, arg_index));
10021014
......@@ -1013,6 +1025,22 @@ fn airArg(self: *Self, inst: Air.Inst.Index) !void {
10131025 return self.finishAir(inst, mcv, .{ .none, .none, .none });
10141026}
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
10161044fn airBinOp(self: *Self, inst: Air.Inst.Index, tag: Air.Inst.Tag) !void {
10171045 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
10181046 const lhs = try self.resolveInst(bin_op.lhs);
......@@ -1061,6 +1089,12 @@ fn airBitCast(self: *Self, inst: Air.Inst.Index) !void {
10611089 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
10621090}
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
10641098fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
10651099 try self.blocks.putNoClobber(self.gpa, inst, .{
10661100 // 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 {
13221356 return self.finishAir(inst, result, .{ un_op, .none, .none });
13231357}
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
13251369fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
13261370 const pl_op = self.air.instructions.items(.data)[inst].pl_op;
13271371 const condition = try self.resolveInst(pl_op.operand);
......@@ -1406,6 +1450,7 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
14061450 const else_value = else_values[else_idx];
14071451 const canon_mcv = if (saved_then_branch.inst_table.fetchSwapRemove(else_key)) |then_entry| blk: {
14081452 // The instruction's MCValue is overridden in both branches.
1453 log.debug("condBr put branch table (key = %{d}, value = {})", .{ else_key, then_entry.value });
14091454 parent_branch.inst_table.putAssumeCapacity(else_key, then_entry.value);
14101455 if (else_value == .dead) {
14111456 assert(then_entry.value == .dead);
......@@ -1519,6 +1564,16 @@ fn airDiv(self: *Self, inst: Air.Inst.Index) !void {
15191564 return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none });
15201565}
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
15221577fn airErrUnionPayloadPtrSet(self: *Self, inst: Air.Inst.Index) !void {
15231578 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
15241579 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 {
15561611 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
15571612}
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
15591620fn airIntCast(self: *Self, inst: Air.Inst.Index) !void {
15601621 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
15611622 if (self.liveness.isUnused(inst))
......@@ -1675,6 +1736,22 @@ fn airMemset(self: *Self, inst: Air.Inst.Index) !void {
16751736 return self.fail("TODO implement airMemset for {}", .{self.target.cpu.arch});
16761737}
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
16781755fn airMod(self: *Self, inst: Air.Inst.Index) !void {
16791756 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
16801757 const lhs = try self.resolveInst(bin_op.lhs);
......@@ -2071,6 +2148,12 @@ fn airRetPtr(self: *Self, inst: Air.Inst.Index) !void {
20712148 return self.finishAir(inst, .{ .ptr_stack_offset = stack_offset }, .{ .none, .none, .none });
20722149}
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
20742157fn airShlSat(self: *Self, inst: Air.Inst.Index) !void {
20752158 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
20762159 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 {
22702353 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
22712354}
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
22732362fn airStore(self: *Self, inst: Air.Inst.Index) !void {
22742363 const bin_op = self.air.instructions.items(.data)[inst].bin_op;
22752364 const ptr = try self.resolveInst(bin_op.lhs);
......@@ -2378,6 +2467,19 @@ fn airTagName(self: *Self, inst: Air.Inst.Index) !void {
23782467 return self.finishAir(inst, result, .{ un_op, .none, .none });
23792468}
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
23812483fn airTry(self: *Self, inst: Air.Inst.Index) !void {
23822484 const pl_op = self.air.instructions.items(.data)[inst].pl_op;
23832485 const extra = self.air.extraData(Air.Try, pl_op.payload);
......@@ -2405,6 +2507,13 @@ fn airUnaryMath(self: *Self, inst: Air.Inst.Index) !void {
24052507 return self.finishAir(inst, result, .{ un_op, .none, .none });
24062508}
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
24082517fn airUnwrapErrErr(self: *Self, inst: Air.Inst.Index) !void {
24092518 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
24102519 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {
......@@ -2444,6 +2553,13 @@ fn airWrapErrUnionErr(self: *Self, inst: Air.Inst.Index) !void {
24442553 return self.finishAir(inst, result, .{ ty_op.operand, .none, .none });
24452554}
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
24472563fn airWrapOptional(self: *Self, inst: Air.Inst.Index) !void {
24482564 const ty_op = self.air.instructions.items(.data)[inst].ty_op;
24492565 const result: MCValue = if (self.liveness.isUnused(inst)) .dead else result: {
......@@ -2843,7 +2959,18 @@ fn binOpImmediate(
28432959
28442960 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
28482975 break :blk reg;
28492976 };
......@@ -2970,7 +3097,18 @@ fn binOpRegister(
29703097 } else null;
29713098
29723099 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
29753113 break :blk reg;
29763114 };
......@@ -2983,7 +3121,18 @@ fn binOpRegister(
29833121 } else null;
29843122
29853123 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
29883137 break :blk reg;
29893138 };
......@@ -3734,27 +3883,48 @@ fn genStore(self: *Self, value_reg: Register, addr_reg: Register, comptime off_t
37343883}
37353884
37363885fn 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())
37383894 return MCValue{ .undef = {} };
37393895
3740 if (typed_value.val.castTag(.decl_ref)) |payload| {
3741 return self.lowerDeclRef(typed_value, payload.data);
3896 if (tv.val.castTag(.decl_ref)) |payload| {
3897 return self.lowerDeclRef(tv, payload.data);
37423898 }
3743 if (typed_value.val.castTag(.decl_ref_mut)) |payload| {
3744 return self.lowerDeclRef(typed_value, payload.data.decl_index);
3899 if (tv.val.castTag(.decl_ref_mut)) |payload| {
3900 return self.lowerDeclRef(tv, payload.data.decl_index);
37453901 }
37463902 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 },
37493919 .Int => {
3750 const info = typed_value.ty.intInfo(self.target.*);
3920 const info = tv.ty.intInfo(self.target.*);
37513921 if (info.bits <= 64) {
37523922 const unsigned = switch (info.signedness) {
37533923 .signed => blk: {
3754 const signed = typed_value.val.toSignedInt(target);
3924 const signed = tv.val.toSignedInt(target);
37553925 break :blk @bitCast(u64, signed);
37563926 },
3757 .unsigned => typed_value.val.toUnsignedInt(target),
3927 .unsigned => tv.val.toUnsignedInt(target),
37583928 };
37593929
37603930 return MCValue{ .immediate = unsigned };
......@@ -3762,38 +3932,84 @@ fn genTypedValue(self: *Self, typed_value: TypedValue) InnerError!MCValue {
37623932 return self.fail("TODO implement int genTypedValue of > 64 bits", .{});
37633933 }
37643934 },
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 },
37653972 .ErrorSet => {
3766 const err_name = typed_value.val.castTag(.@"error").?.data.name;
3973 const err_name = tv.val.castTag(.@"error").?.data.name;
37673974 const module = self.bin_file.options.module.?;
37683975 const global_error_set = module.global_error_set;
37693976 const error_index = global_error_set.get(err_name).?;
37703977 return MCValue{ .immediate = error_index };
37713978 },
37723979 .ErrorUnion => {
3773 const error_type = typed_value.ty.errorUnionSet();
3774 const payload_type = typed_value.ty.errorUnionPayload();
3980 const error_type = tv.ty.errorUnionSet();
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| {
37773984 if (!payload_type.hasRuntimeBits()) {
37783985 // We use the error type directly as the type.
37793986 return MCValue{ .immediate = 0 };
37803987 }
37813988
37823989 _ = 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()});
37843991 } else {
37853992 if (!payload_type.hasRuntimeBits()) {
37863993 // 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 });
37883995 }
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()});
37913998 }
37923999 },
37934000 .ComptimeInt => unreachable, // semantic analysis prevents this
37944001 .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 => {},
37964010 }
4011
4012 return self.fail("TODO implement const of type '{}'", .{tv.ty.fmtDebug()});
37974013}
37984014
37994015fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) MCValue {
......@@ -3802,6 +4018,7 @@ fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) MCValue {
38024018 while (true) {
38034019 i -= 1;
38044020 if (self.branch_stack.items[i].inst_table.get(inst)) |mcv| {
4021 log.debug("getResolvedInstValue %{} => {}", .{ inst, mcv });
38054022 assert(mcv != .dead);
38064023 return mcv;
38074024 }
......@@ -3993,6 +4210,83 @@ fn lowerDeclRef(self: *Self, tv: TypedValue, decl_index: Module.Decl.Index) Inne
39934210 }
39944211}
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
39964290fn parseRegName(name: []const u8) ?Register {
39974291 if (@hasDecl(Register, "parseRegName")) {
39984292 return Register.parseRegName(name);
......@@ -4017,6 +4311,7 @@ fn processDeath(self: *Self, inst: Air.Inst.Index) void {
40174311 const prev_value = self.getResolvedInstValue(inst);
40184312 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
40194313 branch.inst_table.putAssumeCapacity(inst, .dead);
4314 log.debug("%{} death: {} -> .dead", .{ inst, prev_value });
40204315 switch (prev_value) {
40214316 .register => |reg| {
40224317 self.register_manager.freeReg(reg);
......@@ -4126,7 +4421,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {
41264421 const ref_int = @enumToInt(inst);
41274422 if (ref_int < Air.Inst.Ref.typed_value_map.len) {
41284423 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()) {
41304425 return MCValue{ .none = {} };
41314426 }
41324427 return self.genTypedValue(tv);
......@@ -4134,7 +4429,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {
41344429
41354430 // If the type has no codegen bits, no need to store it.
41364431 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())
41384433 return MCValue{ .none = {} };
41394434
41404435 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
43344629 };
43354630}
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
43374679fn truncRegister(
43384680 self: *Self,
43394681 operand_reg: Register,
test/behavior/align.zig+21
......@@ -18,6 +18,7 @@ test "global variable alignment" {
1818test "slicing array of length 1 can not assume runtime index is always zero" {
1919 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
2020 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2122
2223 var runtime_index: usize = 1;
2324 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" {
6263test "alignment and size of structs with 128-bit fields" {
6364 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6465 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6567
6668 const A = struct {
6769 x: u128,
......@@ -217,6 +219,7 @@ fn fnWithAlignedStack() i32 {
217219
218220test "implicitly decreasing slice alignment" {
219221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
220223
221224 const a: u32 align(4) = 3;
222225 const b: u32 align(8) = 4;
......@@ -228,6 +231,7 @@ fn addUnalignedSlice(a: []align(1) const u32, b: []align(1) const u32) u32 {
228231
229232test "specifying alignment allows pointer cast" {
230233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
231235
232236 try testBytesAlign(0x33);
233237}
......@@ -240,6 +244,7 @@ fn testBytesAlign(b: u8) !void {
240244test "@alignCast slices" {
241245 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
242246 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243248
244249 var array align(4) = [_]u32{ 1, 1 };
245250 const slice = array[0..];
......@@ -257,6 +262,7 @@ test "return error union with 128-bit integer" {
257262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
258263 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
259264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
260266
261267 try expect(3 == try give());
262268}
......@@ -268,6 +274,7 @@ test "page aligned array on stack" {
268274 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
269275 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
270276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
271278 // https://github.com/ziglang/zig/issues/13679
272279 if (builtin.zig_backend == .stage2_llvm and
273280 builtin.cpu.arch == .aarch64 and
......@@ -296,6 +303,7 @@ fn noop4() align(4) void {}
296303test "function alignment" {
297304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
298305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
299307
300308 // function alignment is a compile error on wasm32/wasm64
301309 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
......@@ -310,6 +318,7 @@ test "function alignment" {
310318test "implicitly decreasing fn alignment" {
311319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
312320 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
321 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
313322
314323 // function alignment is a compile error on wasm32/wasm64
315324 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
......@@ -332,6 +341,7 @@ fn alignedBig() align(16) i32 {
332341test "@alignCast functions" {
333342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
335345
336346 // function alignment is a compile error on wasm32/wasm64
337347 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
......@@ -352,6 +362,7 @@ fn simple4() align(4) i32 {
352362test "function align expression depends on generic parameter" {
353363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
354364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
365 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
355366
356367 // function alignment is a compile error on wasm32/wasm64
357368 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
......@@ -373,6 +384,8 @@ test "function align expression depends on generic parameter" {
373384}
374385
375386test "function callconv expression depends on generic parameter" {
387 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
388
376389 const S = struct {
377390 fn doTheTest() !void {
378391 try expect(foobar(.C, 1) == 2);
......@@ -388,6 +401,8 @@ test "function callconv expression depends on generic parameter" {
388401}
389402
390403test "runtime-known array index has best alignment possible" {
404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
405
391406 // take full advantage of over-alignment
392407 var array align(4) = [_]u8{ 1, 2, 3, 4 };
393408 comptime assert(@TypeOf(&array[0]) == *align(4) u8);
......@@ -443,6 +458,7 @@ test "read 128-bit field from default aligned struct in stack memory" {
443458 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
444459 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
445460 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
461 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
446462
447463 var default_aligned = DefaultAligned{
448464 .nevermind = 1,
......@@ -460,6 +476,7 @@ test "read 128-bit field from default aligned struct in global memory" {
460476 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
461477 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
462478 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
479 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
463480
464481 try expect(12 == default_aligned_global.badguy);
465482}
......@@ -468,6 +485,7 @@ test "struct field explicit alignment" {
468485 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
469486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
470487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
471489
472490 const S = struct {
473491 const Node = struct {
......@@ -511,6 +529,7 @@ test "align(N) on functions" {
511529 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
512530 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
513531 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
532 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
514533
515534 // function alignment is a compile error on wasm32/wasm64
516535 if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest;
......@@ -527,6 +546,7 @@ test "comptime alloc alignment" {
527546 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
528547 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
529548 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
549 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
530550
531551 comptime var bytes1 = [_]u8{0};
532552 _ = bytes1;
......@@ -538,6 +558,7 @@ test "comptime alloc alignment" {
538558
539559test "@alignCast null" {
540560 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
561 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
541562
542563 var ptr: ?*anyopaque = null;
543564 const aligned: ?*anyopaque = @alignCast(@alignOf(?*anyopaque), ptr);
test/behavior/array.zig+27
......@@ -20,6 +20,7 @@ test "array to slice" {
2020test "arrays" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
2425 var array: [5]u32 = undefined;
2526
......@@ -46,6 +47,7 @@ fn getArrayLen(a: []const u32) usize {
4647
4748test "array init with mult" {
4849 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4951
5052 const a = 'a';
5153 var i: [8]u8 = [2]u8{ a, 'b' } ** 4;
......@@ -85,6 +87,7 @@ const some_array = [_]u8{ 0, 1, 2, 3 };
8587test "array literal with specified size" {
8688 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8789 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
90 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8891
8992 var array = [2]u8{ 1, 2 };
9093 try expect(array[0] == 1);
......@@ -92,6 +95,8 @@ test "array literal with specified size" {
9295}
9396
9497test "array len field" {
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
99
95100 var arr = [4]u8{ 0, 0, 0, 0 };
96101 var ptr = &arr;
97102 try expect(arr.len == 4);
......@@ -103,6 +108,7 @@ test "array len field" {
103108
104109test "array with sentinels" {
105110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
106112
107113 const S = struct {
108114 fn doTheTest(is_ct: bool) !void {
......@@ -139,6 +145,7 @@ test "void arrays" {
139145test "nested arrays of strings" {
140146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
141147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
142149
143150 const array_of_strings = [_][]const u8{ "hello", "this", "is", "my", "thing" };
144151 for (array_of_strings) |s, i| {
......@@ -166,6 +173,7 @@ test "nested arrays of integers" {
166173
167174test "implicit comptime in array type size" {
168175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
176 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
169177
170178 var arr: [plusOne(10)]bool = undefined;
171179 try expect(arr.len == 11);
......@@ -177,6 +185,7 @@ fn plusOne(x: u32) u32 {
177185
178186test "single-item pointer to array indexing and slicing" {
179187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
180189
181190 try testSingleItemPtrArrayIndexSlice();
182191 comptime try testSingleItemPtrArrayIndexSlice();
......@@ -201,6 +210,8 @@ fn doSomeMangling(array: *[4]u8) void {
201210}
202211
203212test "implicit cast zero sized array ptr to slice" {
213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
214
204215 {
205216 var b = "".*;
206217 const c: []const u8 = &b;
......@@ -216,6 +227,7 @@ test "implicit cast zero sized array ptr to slice" {
216227test "anonymous list literal syntax" {
217228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
218229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
219231
220232 const S = struct {
221233 fn doTheTest() !void {
......@@ -235,6 +247,7 @@ const Sub = struct { b: u8 };
235247const Str = struct { a: []Sub };
236248test "set global var array via slice embedded in struct" {
237249 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
250 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238251
239252 var s = Str{ .a = s_array[0..] };
240253
......@@ -250,6 +263,7 @@ test "set global var array via slice embedded in struct" {
250263test "read/write through global variable array of struct fields initialized via array mult" {
251264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
252265 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
253267
254268 const S = struct {
255269 fn doTheTest() !void {
......@@ -269,6 +283,7 @@ test "read/write through global variable array of struct fields initialized via
269283
270284test "implicit cast single-item pointer" {
271285 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
272287
273288 try testImplicitCastSingleItemPtr();
274289 comptime try testImplicitCastSingleItemPtr();
......@@ -287,6 +302,7 @@ fn testArrayByValAtComptime(b: [2]u8) u8 {
287302
288303test "comptime evaluating function that takes array by value" {
289304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290306
291307 const arr = [_]u8{ 1, 2 };
292308 const x = comptime testArrayByValAtComptime(arr);
......@@ -297,6 +313,7 @@ test "comptime evaluating function that takes array by value" {
297313
298314test "runtime initialize array elem and then implicit cast to slice" {
299315 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
316 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
300317
301318 var two: i32 = 2;
302319 const x: []const i32 = &[_]i32{two};
......@@ -305,6 +322,7 @@ test "runtime initialize array elem and then implicit cast to slice" {
305322
306323test "array literal as argument to function" {
307324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
325 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
308326
309327 const S = struct {
310328 fn entry(two: i32) !void {
......@@ -332,6 +350,7 @@ test "array literal as argument to function" {
332350test "double nested array to const slice cast in array literal" {
333351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
335354
336355 const S = struct {
337356 fn entry(two: i32) !void {
......@@ -392,6 +411,7 @@ test "double nested array to const slice cast in array literal" {
392411test "anonymous literal in array" {
393412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
394413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
395415
396416 const S = struct {
397417 const Foo = struct {
......@@ -415,6 +435,7 @@ test "anonymous literal in array" {
415435
416436test "access the null element of a null terminated array" {
417437 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
438 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
418439
419440 const S = struct {
420441 fn doTheTest() !void {
......@@ -431,6 +452,7 @@ test "access the null element of a null terminated array" {
431452test "type deduction for array subscript expression" {
432453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
433454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
434456
435457 const S = struct {
436458 fn doTheTest() !void {
......@@ -448,6 +470,7 @@ test "type deduction for array subscript expression" {
448470test "sentinel element count towards the ABI size calculation" {
449471 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
450472 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
451474
452475 const S = struct {
453476 fn doTheTest() !void {
......@@ -470,6 +493,7 @@ test "sentinel element count towards the ABI size calculation" {
470493
471494test "zero-sized array with recursive type definition" {
472495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
496 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
473497
474498 const U = struct {
475499 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" {
524548 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
525549 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
526550 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
551 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
527552
528553 const S = struct {
529554 const U = union {
......@@ -561,6 +586,7 @@ test "array with comptime-only element type" {
561586test "tuple to array handles sentinel" {
562587 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
563588 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
589 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
564590
565591 const S = struct {
566592 const a = .{ 1, 2, 3 };
......@@ -573,6 +599,7 @@ test "array init of container level array variable" {
573599 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
574600 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
575601 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
602 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
576603
577604 const S = struct {
578605 var pair: [2]usize = .{ 1, 2 };
test/behavior/asm.zig+5
......@@ -22,6 +22,7 @@ test "module level assembly" {
2222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
2627 if (is_x86_64_linux) {
2728 try expect(this_is_my_alias() == 1234);
......@@ -33,6 +34,7 @@ test "output constraint modifiers" {
3334 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
3435 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
37 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3638
3739 // This is only testing compilation.
3840 var a: u32 = 3;
......@@ -53,6 +55,7 @@ test "alternative constraints" {
5355 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
5456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5557 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5659
5760 // Make sure we allow commas as a separator for alternative constraints.
5861 var a: u32 = 3;
......@@ -68,6 +71,7 @@ test "sized integer/float in asm input" {
6871 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6972 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7073 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7175
7276 asm volatile (""
7377 :
......@@ -116,6 +120,7 @@ test "struct/array/union types as input values" {
116120 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
117121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
118122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
119124
120125 asm volatile (""
121126 :
test/behavior/basic.zig+36
......@@ -45,6 +45,8 @@ const g1: i32 = 1233 + 1;
4545var g2: i32 = 0;
4646
4747test "global variables" {
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49
4850 try expect(g2 == 0);
4951 g2 = g1;
5052 try expect(g2 == 1234);
......@@ -112,18 +114,21 @@ fn first4KeysOfHomeRow() []const u8 {
112114
113115test "return string from function" {
114116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
115118
116119 try expect(mem.eql(u8, first4KeysOfHomeRow(), "aoeu"));
117120}
118121
119122test "hex escape" {
120123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
124 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121125
122126 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
123127}
124128
125129test "multiline string" {
126130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127132
128133 const s1 =
129134 \\one
......@@ -136,6 +141,7 @@ test "multiline string" {
136141
137142test "multiline string comments at start" {
138143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
139145
140146 const s1 =
141147 //\\one
......@@ -148,6 +154,7 @@ test "multiline string comments at start" {
148154
149155test "multiline string comments at end" {
150156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
151158
152159 const s1 =
153160 \\one
......@@ -160,6 +167,7 @@ test "multiline string comments at end" {
160167
161168test "multiline string comments in middle" {
162169 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163171
164172 const s1 =
165173 \\one
......@@ -172,6 +180,7 @@ test "multiline string comments in middle" {
172180
173181test "multiline string comments at multiple places" {
174182 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
175184
176185 const s1 =
177186 \\one
......@@ -190,6 +199,7 @@ test "string concatenation" {
190199
191200test "array mult operator" {
192201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
193203
194204 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
195205}
......@@ -199,6 +209,7 @@ const OpaqueB = opaque {};
199209
200210test "opaque types" {
201211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
212 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
202213
203214 try expect(*OpaqueA != *OpaqueB);
204215
......@@ -216,6 +227,7 @@ test "compile time global reinterpret" {
216227
217228test "cast undefined" {
218229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
219231
220232 const array: [100]u8 = undefined;
221233 const slice = @as([]const u8, &array);
......@@ -228,6 +240,7 @@ fn testCastUndefined(x: []const u8) void {
228240test "implicit cast after unreachable" {
229241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
230242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
231244
232245 try expect(outer() == 1234);
233246}
......@@ -285,6 +298,7 @@ fn fB() []const u8 {
285298
286299test "call function pointer in struct" {
287300 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
301 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
288302
289303 try expect(mem.eql(u8, f3(true), "a"));
290304 try expect(mem.eql(u8, f3(false), "b"));
......@@ -326,6 +340,7 @@ test "call result of if else expression" {
326340 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
327341 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
328342 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
329344
330345 try expect(mem.eql(u8, f2(true), "a"));
331346 try expect(mem.eql(u8, f2(false), "b"));
......@@ -337,6 +352,7 @@ fn f2(x: bool) []const u8 {
337352test "memcpy and memset intrinsics" {
338353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
339354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
340356
341357 try testMemcpyMemset();
342358 // TODO add comptime test coverage
......@@ -367,6 +383,7 @@ fn hereIsAnOpaqueType(ptr: *OpaqueA) *OpaqueA {
367383test "take address of parameter" {
368384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
369385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
386 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
370387
371388 try testTakeAddressOfParameter(12.34);
372389}
......@@ -443,6 +460,7 @@ fn testArray2DConstDoublePtr(ptr: *const f32) !void {
443460
444461test "double implicit cast in same expression" {
445462 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
463 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
446464
447465 var x = @as(i32, @as(u16, nine()));
448466 try expect(x == 9);
......@@ -453,6 +471,7 @@ fn nine() u8 {
453471
454472test "struct inside function" {
455473 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
474 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
456475
457476 try testStructInFn();
458477 comptime try testStructInFn();
......@@ -474,6 +493,7 @@ fn testStructInFn() !void {
474493
475494test "fn call returning scalar optional in equality expression" {
476495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
496 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
477497 try expect(getNull() == null);
478498}
479499
......@@ -484,6 +504,7 @@ fn getNull() ?*i32 {
484504test "global variable assignment with optional unwrapping with var initialized to undefined" {
485505 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
486506 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
487508
488509 const S = struct {
489510 var data: i32 = 1234;
......@@ -501,6 +522,7 @@ var global_foo: *i32 = undefined;
501522
502523test "peer result location with typed parent, runtime condition, comptime prongs" {
503524 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
525 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
504526
505527 const S = struct {
506528 fn doTheTest(arg: i32) i32 {
......@@ -592,6 +614,8 @@ test "self reference through fn ptr field" {
592614}
593615
594616test "global variable initialized to global variable array element" {
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618
595619 try expect(global_ptr == &gdt[0]);
596620}
597621const GDTEntry = struct {
......@@ -605,6 +629,7 @@ var global_ptr = &gdt[0];
605629
606630test "global constant is loaded with a runtime-known index" {
607631 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
632 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
608633
609634 const S = struct {
610635 fn doTheTest() !void {
......@@ -636,6 +661,7 @@ test "string escapes" {
636661 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
637662 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
638663 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
664 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
639665
640666 try expectEqualStrings("\"", "\x22");
641667 try expectEqualStrings("\'", "\x27");
......@@ -667,6 +693,7 @@ test "string concatenation" {
667693 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
668694 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
669695 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
696 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
670697
671698 const a = "OK" ++ " IT " ++ "WORKED";
672699 const b = "OK IT WORKED";
......@@ -694,6 +721,7 @@ test "comptime manyptr concatenation" {
694721 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
695722 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
696723 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
724 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
697725
698726 const s = "epic";
699727 const actual = manyptrConcat(s);
......@@ -714,6 +742,7 @@ test "comptime manyptr concatenation" {
714742test "result location is optional inside error union" {
715743 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
716744 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
745 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
717746
718747 const x = maybe(true) catch unreachable;
719748 try expect(x.? == 42);
......@@ -728,6 +757,7 @@ fn maybe(x: bool) anyerror!?u32 {
728757
729758test "auto created variables have correct alignment" {
730759 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
760 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
731761
732762 const S = struct {
733763 fn foo(str: [*]const u8) u32 {
......@@ -746,6 +776,7 @@ test "extern variable with non-pointer opaque type" {
746776 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
747777 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
748778 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
779 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
749780
750781 @export(var_to_export, .{ .name = "opaque_extern_var" });
751782 try expect(@ptrCast(*align(1) u32, &opaque_extern_var).* == 42);
......@@ -787,6 +818,7 @@ test "if expression type coercion" {
787818test "discarding the result of various expressions" {
788819 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
789820 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
821 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
790822
791823 const S = struct {
792824 fn foo() !u32 {
......@@ -826,6 +858,7 @@ test "labeled block implicitly ends in a break" {
826858
827859test "catch in block has correct result location" {
828860 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
861 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
829862
830863 const S = struct {
831864 fn open() error{A}!@This() {
......@@ -856,6 +889,7 @@ test "labeled block with runtime branch forwards its result location type to bre
856889
857890test "try in labeled block doesn't cast to wrong type" {
858891 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
892 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
859893
860894 const S = struct {
861895 a: u32,
......@@ -883,6 +917,7 @@ test "weird array and tuple initializations" {
883917 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
884918 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
885919 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
920 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
886921
887922 const E = enum { a, b };
888923 const S = struct { e: E };
......@@ -1000,6 +1035,7 @@ comptime {
10001035
10011036test "switch inside @as gets correct type" {
10021037 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1038 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10031039
10041040 var a: u32 = 0;
10051041 var b: [2]u32 = undefined;
test/behavior/bit_shifting.zig+2
......@@ -64,6 +64,8 @@ test "sharded table" {
6464 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6666 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68
6769 // realistic 16-way sharding
6870 try testShardedTable(u32, 4, 8);
6971
test/behavior/bitcast.zig+10
......@@ -21,6 +21,7 @@ test "@bitCast iX -> uX (8, 16, 128)" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
2323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2425
2526 const bit_values = [_]usize{ 8, 16, 128 };
2627
......@@ -36,6 +37,7 @@ test "@bitCast iX -> uX exotic integers" {
3637 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
3738 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3839 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3941
4042 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };
4143
......@@ -82,6 +84,7 @@ test "bitcast uX to bytes" {
8284 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8385 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8588
8689 const bit_values = [_]usize{ 1, 48, 27, 512, 493, 293, 125, 204, 112 };
8790 inline for (bit_values) |bits| {
......@@ -158,6 +161,7 @@ test "@bitCast packed structs at runtime and comptime" {
158161 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
159162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
160163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
161165
162166 const Full = packed struct {
163167 number: u16,
......@@ -182,6 +186,7 @@ test "@bitCast packed structs at runtime and comptime" {
182186
183187test "@bitCast extern structs at runtime and comptime" {
184188 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
185190
186191 const Full = extern struct {
187192 number: u16,
......@@ -214,6 +219,7 @@ test "bitcast packed struct to integer and back" {
214219 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
215220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
216221 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217223
218224 const LevelUpMove = packed struct {
219225 move_id: u9,
......@@ -235,6 +241,7 @@ test "bitcast packed struct to integer and back" {
235241test "implicit cast to error union by returning" {
236242 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237243 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
238245
239246 const S = struct {
240247 fn entry() !void {
......@@ -289,6 +296,7 @@ test "@bitCast packed struct of floats" {
289296 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
290297 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
291298 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
299 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
292300
293301 const Foo = packed struct {
294302 a: f16 = 0,
......@@ -324,6 +332,7 @@ test "comptime @bitCast packed struct to int and back" {
324332 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
325333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
326334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
335 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
327336
328337 const S = packed struct {
329338 void: void = {},
......@@ -362,6 +371,7 @@ test "comptime bitcast with fields following f80" {
362371 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
363372 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
364373 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
365375
366376 const FloatT = extern struct { f: f80, x: u128 align(16) };
367377 const x: FloatT = .{ .f = 0.5, .x = 123 };
test/behavior/bitreverse.zig+4
......@@ -14,6 +14,7 @@ test "@bitReverse" {
1414 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718
1819 comptime try testBitReverse();
1920 try testBitReverse();
......@@ -99,6 +100,7 @@ test "bitReverse vectors u8" {
99100 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
100101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
101102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102104
103105 comptime try vector8();
104106 try vector8();
......@@ -117,6 +119,7 @@ test "bitReverse vectors u16" {
117119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
118120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
119121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120123
121124 comptime try vector16();
122125 try vector16();
......@@ -135,6 +138,7 @@ test "bitReverse vectors u24" {
135138 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
136139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
137140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
141 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
138142
139143 comptime try vector24();
140144 try vector24();
test/behavior/bugs/10147.zig+1
......@@ -7,6 +7,7 @@ test "test calling @clz on both vector and scalar inputs" {
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
1112 var x: u32 = 0x1;
1213 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;
66test "comptime code should not modify constant data" {
77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
1011 try testCastPtrOfArrayToSliceAndPtr();
1112 comptime try testCastPtrOfArrayToSliceAndPtr();
test/behavior/bugs/10970.zig+1
......@@ -7,6 +7,7 @@ test "breaking from a loop in an if statement" {
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
1112 var cond = true;
1213 const opt = while (cond) {
test/behavior/bugs/11046.zig+1
......@@ -13,6 +13,7 @@ test "fixed" {
1313 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617
1718 bar() catch |err| switch (err) {
1819 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;
55test "store array of array of structs at comptime" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
910 try expect(storeArrayOfArrayOfStructs() == 15);
1011 comptime try expect(storeArrayOfArrayOfStructs() == 15);
test/behavior/bugs/11165.zig+4
......@@ -1,6 +1,8 @@
11const builtin = @import("builtin");
22
33test "bytes" {
4 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5
46 const S = struct {
57 a: u32,
68 c: [5]u8,
......@@ -20,6 +22,8 @@ test "bytes" {
2022}
2123
2224test "aggregate" {
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26
2327 const S = struct {
2428 a: u32,
2529 c: [5]u8,
test/behavior/bugs/11181.zig+2
......@@ -12,6 +12,8 @@ test "const inferred array of slices" {
1212}
1313
1414test "var inferred array of slices" {
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16
1517 const T = struct { v: bool };
1618
1719 var decls = [_][]const T{
test/behavior/bugs/11816.zig+1
......@@ -3,6 +3,7 @@ const builtin = @import("builtin");
33
44test {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67
78 var x: u32 = 3;
89 const val: usize = while (true) switch (x) {
test/behavior/bugs/12551.zig+1
......@@ -3,6 +3,7 @@ const builtin = @import("builtin");
33
44test {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
67
78 try std.testing.expect(for ([1]u8{0}) |x| {
89 if (x == 0) break true;
test/behavior/bugs/12680.zig+1
......@@ -10,6 +10,7 @@ test "export a function twice" {
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1111 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1212 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1314
1415 // If it exports the function correctly, `test_func` and `testFunc` will points to the same address.
1516 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
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
1920 try std.testing.expect(s.f.?() == 1234);
2021}
test/behavior/bugs/12776.zig+1
......@@ -32,6 +32,7 @@ test {
3232 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3434 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
3536
3637 var ram = try RAM.new();
3738 var cpu = try CPU.new(&ram);
test/behavior/bugs/12801-2.zig+1
......@@ -17,6 +17,7 @@ test {
1717 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1919 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2021
2122 const a: Auto = .{ .offset = 16, .capacity = Auto.capacity };
2223 try std.testing.expect(a.capacity() == 32);
test/behavior/bugs/12890.zig+1
......@@ -11,6 +11,7 @@ fn a(b: []u3, c: u3) void {
1111test {
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1415
1516 var arr: [8]u3 = undefined;
1617 a(&arr, 5);
test/behavior/bugs/12972.zig+1
......@@ -5,6 +5,7 @@ pub fn f(_: [:null]const ?u8) void {}
55test {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
910 const c: u8 = 42;
1011 f(&[_:null]?u8{c});
test/behavior/bugs/13063.zig+5
......@@ -1,8 +1,11 @@
11const std = @import("std");
2const builtin = @import("builtin");
23const expect = std.testing.expect;
34
45var pos = [2]f32{ 0.0, 0.0 };
56test "store to global array" {
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8
69 try expect(pos[1] == 0.0);
710 pos = [2]f32{ 0.0, 1.0 };
811 try expect(pos[1] == 1.0);
......@@ -10,6 +13,8 @@ test "store to global array" {
1013
1114var vpos = @Vector(2, f32){ 0.0, 0.0 };
1215test "store to global vector" {
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17
1318 try expect(vpos[1] == 0.0);
1419 vpos = @Vector(2, f32){ 0.0, 1.0 };
1520 try expect(vpos[1] == 1.0);
test/behavior/bugs/13064.zig+1
......@@ -5,6 +5,7 @@ const expect = std.testing.expect;
55test {
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
910 var x: [10][10]u32 = undefined;
1011
test/behavior/bugs/13065.zig+1
......@@ -10,6 +10,7 @@ const U = union(enum) {
1010test {
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1314
1415 var x = U{ .array = undefined };
1516
test/behavior/bugs/13068.zig+1
......@@ -9,6 +9,7 @@ test {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
1314 list.items.len = 0;
1415}
test/behavior/bugs/13069.zig+1
......@@ -6,6 +6,7 @@ test {
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
1011 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" {
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1920
2021 var x: u8 = 1;
2122 try foo(.{ .x = x });
test/behavior/bugs/13159.zig+2
......@@ -1,3 +1,4 @@
1const builtin = @import("builtin");
12const std = @import("std");
23const expect = std.testing.expect;
34
......@@ -9,6 +10,7 @@ const Bar = packed struct {
910};
1011
1112test {
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1214 var foo = Bar.Baz.fizz;
1315 try expect(foo == .fizz);
1416}
test/behavior/bugs/13164.zig+1
......@@ -11,6 +11,7 @@ test {
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1415
1516 var x: u32 = 42;
1617 try setLimits(x, null);
test/behavior/bugs/13285.zig+4
......@@ -1,8 +1,12 @@
1const builtin = @import("builtin");
2
13const Crasher = struct {
24 lets_crash: u64 = 0,
35};
46
57test {
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9
610 var a: Crasher = undefined;
711 var crasher_ptr = &a;
812 var crasher_local = crasher_ptr.*;
test/behavior/bugs/13664.zig+1
......@@ -17,6 +17,7 @@ test {
1717 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1919 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2021
2122 const timestamp: i64 = value();
2223 const id = ID{ .fields = Fields{
test/behavior/bugs/13785.zig+1
......@@ -6,6 +6,7 @@ test {
66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
1011 var a: u8 = 0;
1112 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" {
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1717 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1818 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1920
2021 var as = [_]A{
2122 A{ .B = B{ .D = 1 } },
test/behavior/bugs/1442.zig+1
......@@ -10,6 +10,7 @@ test "const error union field alignment" {
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1212 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1314 var union_or_err: anyerror!Union = Union{ .Color = 1234 };
1415 try std.testing.expect((union_or_err catch unreachable).Color == 1234);
1516}
test/behavior/bugs/1486.zig+1
......@@ -7,6 +7,7 @@ var global: usize = 123;
77
88test "constant pointer to global variable causes runtime load" {
99 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
1011 global = 1234;
1112 try expect(&global == ptr);
1213 try expect(ptr.* == 1234);
test/behavior/bugs/1607.zig+1
......@@ -14,6 +14,7 @@ test "slices pointing at the same address as global array." {
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718 try checkAddress(&a);
1819 comptime try checkAddress(&a);
1920}
test/behavior/bugs/1735.zig+1
......@@ -43,6 +43,7 @@ const a = struct {
4343
4444test "initialization" {
4545 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
46 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4647 var t = a.init();
4748 try std.testing.expect(t.foo.len == 0);
4849}
test/behavior/bugs/1851.zig+1
......@@ -7,6 +7,7 @@ test "allocation and looping over 3-byte integer" {
77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
1112 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .macos) {
1213 return error.SkipZigTest; // TODO
test/behavior/bugs/2006.zig+2
......@@ -6,6 +6,8 @@ const S = struct {
66 p: *S,
77};
88test "bug 2006" {
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10
911 var a: S = undefined;
1012 a = S{ .p = undefined };
1113 try expect(@sizeOf(S) != 0);
test/behavior/bugs/2114.zig+1
......@@ -12,6 +12,7 @@ test "fixed" {
1212 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1516
1617 try testCtz();
1718 comptime try testCtz();
test/behavior/bugs/2578.zig+1
......@@ -15,6 +15,7 @@ test "fixed" {
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
1920 bar(t);
2021}
test/behavior/bugs/2692.zig+1
......@@ -6,6 +6,7 @@ fn foo(a: []u8) void {
66
77test "address of 0 length array" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
1011 var pt: [0]u8 = undefined;
1112 foo(&pt);
test/behavior/bugs/2889.zig+1
......@@ -29,6 +29,7 @@ fn parseNote() ?i32 {
2929test "fixed" {
3030 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3233
3334 const result = parseNote();
3435 try std.testing.expect(result.? == 9);
test/behavior/bugs/3007.zig+1
......@@ -22,6 +22,7 @@ test "fixed" {
2222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
2627 default_foo = get_foo() catch null; // This Line
2728 try std.testing.expect(!default_foo.?.free);
test/behavior/bugs/3046.zig+1
......@@ -15,6 +15,7 @@ var some_struct: SomeStruct = undefined;
1515test "fixed" {
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1717 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
1920 some_struct = SomeStruct{
2021 .field = couldFail() catch @as(i32, 0),
test/behavior/bugs/3112.zig+1
......@@ -14,6 +14,7 @@ fn prev(p: ?State) void {
1414test "zig test crash" {
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718 var global: State = undefined;
1819 global.enter = prev;
1920 global.enter(null);
test/behavior/bugs/3586.zig+2
......@@ -7,6 +7,8 @@ const Container = struct {
77};
88
99test "fixed" {
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11
1012 var ctr = Container{
1113 .params = NoteParams{},
1214 };
test/behavior/bugs/3742.zig+1
......@@ -38,5 +38,6 @@ test "fixed" {
3838 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3939 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4040 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4142 ArgSerializer.serializeCommand(GET.init("banana"));
4243}
test/behavior/bugs/3779.zig+5
......@@ -7,6 +7,7 @@ const ptr_tag_name: [*:0]const u8 = tag_name;
77
88test "@tagName() returns a string literal" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
1112 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
1213 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
......@@ -19,6 +20,7 @@ const ptr_error_name: [*:0]const u8 = error_name;
1920
2021test "@errorName() returns a string literal" {
2122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2224
2325 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
2426 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
......@@ -31,6 +33,7 @@ const ptr_type_name: [*:0]const u8 = type_name;
3133
3234test "@typeName() returns a string literal" {
3335 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3437
3538 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
3639 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));
......@@ -43,6 +46,7 @@ const expected_contents = "hello zig\n";
4346
4447test "@embedFile() returns a string literal" {
4548 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4650
4751 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
4852 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
......@@ -56,6 +60,7 @@ fn testFnForSrc() std.builtin.SourceLocation {
5660
5761test "@src() returns a struct containing 0-terminated string slices" {
5862 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5964
6065 const src = testFnForSrc();
6166 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
test/behavior/bugs/421.zig+1
......@@ -5,6 +5,7 @@ test "bitCast to array" {
55 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
910 comptime try testBitCastArray();
1011 try testBitCastArray();
test/behavior/bugs/4328.zig+1
......@@ -53,6 +53,7 @@ test "Peer resolution of extern function calls in @TypeOf" {
5353
5454test "Extern function calls, dereferences and field access in @TypeOf" {
5555 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5657
5758 const Test = struct {
5859 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");
22const builtin = @import("builtin");
33
44test "fixed" {
5 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6
57 var s: S = .{
68 .a = 1,
79 .b = .{
test/behavior/bugs/4954.zig+1
......@@ -7,6 +7,7 @@ fn f(buf: []u8) void {
77test "crash" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
1112 var buf: [4096]u8 = undefined;
1213 f(&buf);
test/behavior/bugs/529.zig+1
......@@ -15,6 +15,7 @@ test "issue 529 fixed" {
1515 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
1920 @import("529_other_file.zig").issue529(null);
2021 issue529(null);
test/behavior/bugs/5398.zig+1
......@@ -22,6 +22,7 @@ test "assignment of field with padding" {
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
2627 renderable = Renderable{
2728 .mesh = Mesh{ .id = 0 },
test/behavior/bugs/5474.zig+4
......@@ -49,11 +49,15 @@ fn constant() !void {
4949}
5050
5151test "pointer-to-array constness for zero-size elements, var" {
52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
53
5254 try mutable();
5355 comptime try mutable();
5456}
5557
5658test "pointer-to-array constness for zero-size elements, const" {
59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
60
5761 try constant();
5862 comptime try constant();
5963}
test/behavior/bugs/5487.zig+1
......@@ -13,5 +13,6 @@ test "crash" {
1313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617 _ = io.multiWriter(.{writer()});
1718}
test/behavior/bugs/624.zig+1
......@@ -22,6 +22,7 @@ fn MemoryPool(comptime T: type) type {
2222test "foo" {
2323 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2424 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
2627 var allocator = ContextAllocator{ .n = 10 };
2728 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
1414 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718 try foo(false, true);
1819}
1920
test/behavior/bugs/6781.zig+1
......@@ -67,6 +67,7 @@ test "fixed" {
6767 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6868 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6969 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7071
7172 var buffer align(@alignOf(JournalHeader)) = [_]u8{0} ** 65536;
7273 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" {
1313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1515 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617
1718 @memset(@ptrCast([*]u8, &keys), 0, @sizeOf(@TypeOf(keys)));
1819 try expect(!keys.up);
test/behavior/bugs/726.zig+2
......@@ -5,6 +5,7 @@ test "@ptrCast from const to nullable" {
55 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
910 const c: u8 = 4;
1011 var x: ?*const u8 = @ptrCast(?*const u8, &c);
......@@ -15,6 +16,7 @@ test "@ptrCast from var in empty struct to nullable" {
1516 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1617 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1718 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1820
1921 const container = struct {
2022 var c: u8 = 4;
test/behavior/bugs/920.zig+1
......@@ -61,6 +61,7 @@ test "bug 920 fixed" {
6161 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6465
6566 const NormalDist1 = blk: {
6667 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" {
6666 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
6767 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6868 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6970
7071 comptime try vector8();
7172 try vector8();
......@@ -84,6 +85,7 @@ test "@byteSwap vectors u16" {
8485 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8586 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8687 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8789
8890 comptime try vector16();
8991 try vector16();
......@@ -102,6 +104,7 @@ test "@byteSwap vectors u24" {
102104 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
103105 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
104106 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
107 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105108
106109 comptime try vector24();
107110 try vector24();
test/behavior/byval_arg_var.zig+1
......@@ -6,6 +6,7 @@ var result: []const u8 = "wrong";
66test "pass string literal byvalue to a generic var param" {
77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
1011 start();
1112 blowUpStack(10);
test/behavior/call.zig+6
......@@ -24,6 +24,7 @@ test "basic invocations" {
2424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2626 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2728
2829 const foo = struct {
2930 fn foo() i32 {
......@@ -56,6 +57,7 @@ test "tuple parameters" {
5657 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5758 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5859 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5961
6062 const add = struct {
6163 fn add(a: i32, b: i32) i32 {
......@@ -87,6 +89,7 @@ test "tuple parameters" {
8789test "result location of function call argument through runtime condition and struct init" {
8890 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8991 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9093
9194 const E = enum { a, b };
9295 const S = struct {
......@@ -105,6 +108,7 @@ test "result location of function call argument through runtime condition and st
105108
106109test "function call with 40 arguments" {
107110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
108112
109113 const S = struct {
110114 fn doTheTest(thirty_nine: i32) !void {
......@@ -263,6 +267,7 @@ test "forced tail call" {
263267 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
264268 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
265269 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
266271
267272 if (builtin.zig_backend == .stage2_llvm) {
268273 // Only attempt this test on targets we know have tail call support in LLVM.
......@@ -295,6 +300,7 @@ test "inline call preserves tail call" {
295300 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
296301 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
297302 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
298304
299305 if (builtin.zig_backend == .stage2_llvm) {
300306 // 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" {
2020test "peer type resolution: ?T and T" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
2425 try expect(peerTypeTAndOptionalT(true, false).? == 0);
2526 try expect(peerTypeTAndOptionalT(false, false).? == 3);
......@@ -96,6 +97,7 @@ test "@intToFloat" {
9697 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9798 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9899 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
99101
100102 const S = struct {
101103 fn doTheTest() !void {
......@@ -117,6 +119,7 @@ test "@intToFloat(f80)" {
117119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
118120 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
119121 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120123
121124 const S = struct {
122125 fn doTheTest(comptime Int: type) !void {
......@@ -151,6 +154,7 @@ test "@floatToInt" {
151154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
152155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
153156 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154158
155159 try testFloatToInts();
156160 comptime try testFloatToInts();
......@@ -173,6 +177,7 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {
173177test "implicitly cast indirect pointer to maybe-indirect pointer" {
174178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
175179 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
177182 const S = struct {
178183 const Self = @This();
......@@ -232,6 +237,7 @@ test "@floatCast comptime_int and comptime_float" {
232237test "coerce undefined to optional" {
233238 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
234239 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
240 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
235241
236242 try expect(MakeType(void).getNull() == null);
237243 try expect(MakeType(void).getNonNull() != null);
......@@ -251,6 +257,7 @@ fn MakeType(comptime T: type) type {
251257
252258test "implicit cast from *[N]T to [*c]T" {
253259 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
254261
255262 var x: [4]u16 = [4]u16{ 0, 1, 2, 3 };
256263 var y: [*c]u16 = &x;
......@@ -287,6 +294,7 @@ test "@intCast to u0 and use the result" {
287294test "peer result null and comptime_int" {
288295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
289296 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290298
291299 const S = struct {
292300 fn blah(n: i32) ?i32 {
......@@ -311,6 +319,7 @@ test "peer result null and comptime_int" {
311319test "*const ?[*]const T to [*c]const [*c]const T" {
312320 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
313321 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
315324 var array = [_]u8{ 'o', 'k' };
316325 const opt_array_ptr: ?[*]const u8 = &array;
......@@ -322,6 +331,7 @@ test "*const ?[*]const T to [*c]const [*c]const T" {
322331
323332test "array coersion to undefined at runtime" {
324333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
325335
326336 @setRuntimeSafety(true);
327337
......@@ -351,6 +361,7 @@ fn implicitIntLitToOptional() void {
351361test "return u8 coercing into ?u32 return type" {
352362 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
353363 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
364 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
354365
355366 const S = struct {
356367 fn doTheTest() !void {
......@@ -371,6 +382,7 @@ test "cast from ?[*]T to ??[*]T" {
371382
372383test "peer type unsigned int to signed" {
373384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
374386
375387 var w: u31 = 5;
376388 var x: u8 = 7;
......@@ -382,6 +394,7 @@ test "peer type unsigned int to signed" {
382394
383395test "expected [*c]const u8, found [*:0]const u8" {
384396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
397 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
385398
386399 var a: [*:0]const u8 = "hello";
387400 var b: [*c]const u8 = a;
......@@ -394,6 +407,7 @@ test "explicit cast from integer to error type" {
394407 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
395408 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
396409 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397411
398412 try testCastIntToErr(error.ItBroke);
399413 comptime try testCastIntToErr(error.ItBroke);
......@@ -408,6 +422,7 @@ test "peer resolve array and const slice" {
408422 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
409423 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
410424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411426
412427 try testPeerResolveArrayConstSlice(true);
413428 comptime try testPeerResolveArrayConstSlice(true);
......@@ -422,6 +437,7 @@ fn testPeerResolveArrayConstSlice(b: bool) !void {
422437test "implicitly cast from T to anyerror!?T" {
423438 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
424439 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
440 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
425441
426442 try castToOptionalTypeError(1);
427443 comptime try castToOptionalTypeError(1);
......@@ -446,6 +462,7 @@ fn castToOptionalTypeError(z: i32) !void {
446462
447463test "implicitly cast from [0]T to anyerror![]T" {
448464 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
465 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
449466
450467 try testCastZeroArrayToErrSliceMut();
451468 comptime try testCastZeroArrayToErrSliceMut();
......@@ -462,6 +479,7 @@ fn gimmeErrOrSlice() anyerror![]u8 {
462479test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {
463480 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
464481 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
465483
466484 const S = struct {
467485 fn doTheTest() anyerror!void {
......@@ -492,6 +510,7 @@ fn peerTypeEmptyArrayAndSliceAndError(a: bool, slice: []u8) anyerror![]u8 {
492510
493511test "implicit cast from *const [N]T to []const T" {
494512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
513 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
495514
496515 try testCastConstArrayRefToConstSlice();
497516 comptime try testCastConstArrayRefToConstSlice();
......@@ -516,6 +535,7 @@ fn testCastConstArrayRefToConstSlice() !void {
516535
517536test "peer type resolution: error and [N]T" {
518537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
519539
520540 try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
521541 comptime try expect(mem.eql(u8, try testPeerErrorAndArray(0), "OK"));
......@@ -539,6 +559,7 @@ fn testPeerErrorAndArray2(x: u8) anyerror![]const u8 {
539559
540560test "single-item pointer of array to slice to unknown length pointer" {
541561 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
562 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
542563
543564 try testCastPtrOfArrayToSliceAndPtr();
544565 comptime try testCastPtrOfArrayToSliceAndPtr();
......@@ -568,6 +589,7 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {
568589test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
569590 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
570591 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
571593
572594 const window_name = [1][*]const u8{"window name"};
573595 const x: [*]const ?[*]const u8 = &window_name;
......@@ -580,6 +602,7 @@ test "vector casts" {
580602 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
581603 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
582604 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
605 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
583606
584607 const S = struct {
585608 fn doTheTest() !void {
......@@ -621,6 +644,7 @@ test "@floatCast cast down" {
621644 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
622645 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
623646 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
624648
625649 {
626650 var double: f64 = 0.001534;
......@@ -637,6 +661,7 @@ test "@floatCast cast down" {
637661test "peer type resolution: unreachable, error set, unreachable" {
638662 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
639663 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
664 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
640665
641666 const Error = error{
642667 FileDescriptorAlreadyPresentInSet,
......@@ -671,6 +696,7 @@ test "peer type resolution: error set supersets" {
671696 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
672697 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
673698 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
699 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
674700
675701 const a: error{ One, Two } = undefined;
676702 const b: error{One} = undefined;
......@@ -700,6 +726,7 @@ test "peer type resolution: disjoint error sets" {
700726 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
701727 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
702728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
729 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
703730
704731 const a: error{ One, Two } = undefined;
705732 const b: error{Three} = undefined;
......@@ -729,6 +756,7 @@ test "peer type resolution: error union and error set" {
729756 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
730757 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
731758 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
759 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
732760
733761 const a: error{Three} = undefined;
734762 const b: error{ One, Two }!u32 = undefined;
......@@ -762,6 +790,7 @@ test "peer type resolution: error union after non-error" {
762790 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
763791 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
764792 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
793 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
765794
766795 const a: u32 = undefined;
767796 const b: error{ One, Two }!u32 = undefined;
......@@ -795,6 +824,7 @@ test "peer cast *[0]T to E![]const T" {
795824 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
796825 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
797826 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
827 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
798828
799829 var buffer: [5]u8 = "abcde".*;
800830 var buf: anyerror![]const u8 = buffer[0..];
......@@ -809,6 +839,7 @@ test "peer cast *[0]T to []const T" {
809839 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
810840 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
811841 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
842 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
812843
813844 var buffer: [5]u8 = "abcde".*;
814845 var buf: []const u8 = buffer[0..];
......@@ -818,6 +849,8 @@ test "peer cast *[0]T to []const T" {
818849}
819850
820851test "peer cast *[N]T to [*]T" {
852 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
853
821854 var array = [4:99]i32{ 1, 2, 3, 4 };
822855 var dest: [*]i32 = undefined;
823856 try expect(@TypeOf(&array, dest) == [*]i32);
......@@ -828,6 +861,7 @@ test "peer resolution of string literals" {
828861 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
829862 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
830863 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
831865
832866 const S = struct {
833867 const E = enum { a, b, c, d };
......@@ -848,6 +882,7 @@ test "peer resolution of string literals" {
848882
849883test "peer cast [:x]T to []T" {
850884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
885 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
851886
852887 const S = struct {
853888 fn doTheTest() !void {
......@@ -863,6 +898,7 @@ test "peer cast [:x]T to []T" {
863898
864899test "peer cast [N:x]T to [N]T" {
865900 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
901 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
866902
867903 const S = struct {
868904 fn doTheTest() !void {
......@@ -877,6 +913,7 @@ test "peer cast [N:x]T to [N]T" {
877913
878914test "peer cast *[N:x]T to *[N]T" {
879915 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
916 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
880917
881918 const S = struct {
882919 fn doTheTest() !void {
......@@ -892,6 +929,7 @@ test "peer cast *[N:x]T to *[N]T" {
892929test "peer cast [*:x]T to [*]T" {
893930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
894931 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
932 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
895933
896934 const S = struct {
897935 fn doTheTest() !void {
......@@ -912,6 +950,7 @@ test "peer cast [:x]T to [*:x]T" {
912950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
913951 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
914952 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
953 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
915954
916955 const S = struct {
917956 fn doTheTest() !void {
......@@ -931,6 +970,7 @@ test "peer cast [:x]T to [*:x]T" {
931970
932971test "peer type resolution implicit cast to return type" {
933972 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
973 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
934974
935975 const S = struct {
936976 fn doTheTest() !void {
......@@ -951,6 +991,7 @@ test "peer type resolution implicit cast to return type" {
951991test "peer type resolution implicit cast to variable type" {
952992 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
953993 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
994 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
954995
955996 const S = struct {
956997 fn doTheTest() !void {
......@@ -974,6 +1015,7 @@ test "variable initialization uses result locations properly with regards to the
9741015
9751016test "cast between C pointer with different but compatible types" {
9761017 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1018 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9771019
9781020 const S = struct {
9791021 fn foo(arg: [*]c_ushort) u16 {
......@@ -990,6 +1032,7 @@ test "cast between C pointer with different but compatible types" {
9901032
9911033test "peer type resolve string lit with sentinel-terminated mutable slice" {
9921034 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1035 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9931036
9941037 var array: [4:0]u8 = undefined;
9951038 array[4] = 0; // TODO remove this when #4372 is solved
......@@ -1038,6 +1081,7 @@ test "comptime float casts" {
10381081
10391082test "pointer reinterpret const float to int" {
10401083 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1084 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10411085
10421086 // The hex representation is 0x3fe3333333333303.
10431087 const float: f64 = 5.99999999999994648725e-01;
......@@ -1053,6 +1097,7 @@ test "pointer reinterpret const float to int" {
10531097test "implicit cast from [*]T to ?*anyopaque" {
10541098 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10551099 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10561101
10571102 var a = [_]u8{ 3, 2, 1 };
10581103 var runtime_zero: usize = 0;
......@@ -1085,6 +1130,7 @@ fn foobar(func: PFN_void) !void {
10851130test "implicit ptr to *anyopaque" {
10861131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10871132 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1133 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10881134
10891135 var a: u32 = 1;
10901136 var ptr: *align(@alignOf(u32)) anyopaque = &a;
......@@ -1097,6 +1143,7 @@ test "implicit ptr to *anyopaque" {
10971143
10981144test "return null from fn() anyerror!?&T" {
10991145 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1146 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11001147
11011148 const a = returnNullFromOptionalTypeErrorRef();
11021149 const b = returnNullLitFromOptionalTypeErrorRef();
......@@ -1112,6 +1159,7 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {
11121159
11131160test "peer type resolution: [0]u8 and []const u8" {
11141161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11151163
11161164 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
11171165 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
......@@ -1132,6 +1180,7 @@ test "implicitly cast from [N]T to ?[]const T" {
11321180 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11331181 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11341182 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11351184
11361185 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
11371186 comptime try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
......@@ -1146,6 +1195,7 @@ test "cast u128 to f128 and back" {
11461195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11471196 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11481197 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1198 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11491199
11501200 comptime try testCast128();
11511201 try testCast128();
......@@ -1167,6 +1217,7 @@ test "implicit cast from *[N]T to ?[*]T" {
11671217 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11681218 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11691219 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1220 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11701221
11711222 var x: ?[*]u16 = null;
11721223 var y: [4]u16 = [4]u16{ 0, 1, 2, 3 };
......@@ -1181,6 +1232,7 @@ test "implicit cast from *[N]T to ?[*]T" {
11811232test "implicit cast from *T to ?*anyopaque" {
11821233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11831234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1235 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11841236
11851237 var a: u8 = 1;
11861238 incrementVoidPtrValue(&a);
......@@ -1193,6 +1245,7 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {
11931245
11941246test "implicit cast *[0]T to E![]const u8" {
11951247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11961249
11971250 var x = @as(anyerror![]const u8, &[0]u8{});
11981251 try expect((x catch unreachable).len == 0);
......@@ -1212,6 +1265,7 @@ test "*const [N]null u8 to ?[]const u8" {
12121265 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12131266 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12141267 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1268 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12151269
12161270 const S = struct {
12171271 fn doTheTest() !void {
......@@ -1246,6 +1300,7 @@ var global_struct: struct { f0: usize } = undefined;
12461300test "assignment to optional pointer result loc" {
12471301 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12481302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1303 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12491304
12501305 var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
12511306 try expect(foo.ptr.? == @ptrCast(*anyopaque, &global_struct));
......@@ -1259,6 +1314,7 @@ test "cast between *[N]void and []void" {
12591314
12601315test "peer resolve arrays of different size to const slice" {
12611316 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1317 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12621318
12631319 try expect(mem.eql(u8, boolToStr(true), "true"));
12641320 try expect(mem.eql(u8, boolToStr(false), "false"));
......@@ -1274,6 +1330,7 @@ test "cast f16 to wider types" {
12741330 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12751331 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12761332 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1333 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12771334
12781335 const S = struct {
12791336 fn doTheTest() !void {
......@@ -1292,6 +1349,7 @@ test "cast f128 to narrower types" {
12921349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12931350 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12941351 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1352 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12951353
12961354 const S = struct {
12971355 fn doTheTest() !void {
......@@ -1309,6 +1367,7 @@ test "peer type resolution: unreachable, null, slice" {
13091367 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13101368 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13111369 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13121371
13131372 const S = struct {
13141373 fn doTheTest(num: usize, word: []const u8) !void {
......@@ -1325,6 +1384,7 @@ test "peer type resolution: unreachable, null, slice" {
13251384
13261385test "cast i8 fn call peers to i32 result" {
13271386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1387 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13281388
13291389 const S = struct {
13301390 fn doTheTest() !void {
......@@ -1347,6 +1407,7 @@ test "cast compatible optional types" {
13471407 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13481408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13491409 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13501411
13511412 var a: ?[:0]const u8 = null;
13521413 var b: ?[]const u8 = a;
......@@ -1355,6 +1416,7 @@ test "cast compatible optional types" {
13551416
13561417test "coerce undefined single-item pointer of array to error union of slice" {
13571418 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13581420
13591421 const a = @as([*]u8, undefined)[0..0];
13601422 var b: error{a}![]const u8 = a;
......@@ -1363,6 +1425,8 @@ test "coerce undefined single-item pointer of array to error union of slice" {
13631425}
13641426
13651427test "pointer to empty struct literal to mutable slice" {
1428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1429
13661430 var x: []i32 = &.{};
13671431 try expect(x.len == 0);
13681432}
......@@ -1372,6 +1436,7 @@ test "coerce between pointers of compatible differently-named floats" {
13721436 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13731437 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13741438 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1439 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13751440
13761441 if (builtin.os.tag == .windows) {
13771442 // https://github.com/ziglang/zig/issues/12396
......@@ -1402,6 +1467,7 @@ test "peer type resolution of const and non-const pointer to array" {
14021467test "floatToInt to zero-bit int" {
14031468 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14041469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1470 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14051471
14061472 var a: f32 = 0.0;
14071473 comptime try std.testing.expect(@floatToInt(u0, a) == 0);
test/behavior/cast_int.zig+1
......@@ -8,6 +8,7 @@ test "@intCast i32 to u7" {
88 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
1213 var x: u128 = maxInt(u128);
1314 var y: i32 = 120;
test/behavior/const_slice_child.zig+1
......@@ -9,6 +9,7 @@ var argv: [*]const [*]const u8 = undefined;
99test "const slice child" {
1010 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
1314 const strs = [_][*]const u8{ "one", "two", "three" };
1415 argv = &strs;
test/behavior/defer.zig+5
......@@ -33,6 +33,7 @@ test "defer and labeled break" {
3333
3434test "errdefer does not apply to fn inside fn" {
3535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3637
3738 if (testNestedFnErrDefer()) |_| @panic("expected error") else |e| try expect(e == error.Bad);
3839}
......@@ -52,6 +53,7 @@ test "return variable while defer expression in scope to modify it" {
5253 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
5354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5557
5658 const S = struct {
5759 fn doTheTest() !void {
......@@ -92,6 +94,7 @@ fn runSomeErrorDefers(x: bool) !bool {
9294test "mixing normal and error defers" {
9395 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9598
9699 try expect(runSomeErrorDefers(true) catch unreachable);
97100 try expect(result[0] == 'c');
......@@ -111,6 +114,7 @@ test "errdefer with payload" {
111114 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
112115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
113116 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
117 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
114118
115119 const S = struct {
116120 fn foo() !i32 {
......@@ -129,6 +133,7 @@ test "errdefer with payload" {
129133
130134test "simple else prong doesn't emit an error for unreachable else prong" {
131135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
132137
133138 const S = struct {
134139 fn foo() error{Foo}!void {
test/behavior/enum.zig+17
......@@ -26,6 +26,7 @@ const IntToEnumNumber = enum { Zero, One, Two, Three, Four };
2626
2727test "int to enum" {
2828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2930
3031 try testIntToEnumEval(3);
3132}
......@@ -607,6 +608,7 @@ fn testEnumWithSpecifiedTagValues(x: MultipleChoice) !void {
607608
608609test "enum with specified tag values" {
609610 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
611 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
610612
611613 try testEnumWithSpecifiedTagValues(MultipleChoice.C);
612614 comptime try testEnumWithSpecifiedTagValues(MultipleChoice.C);
......@@ -614,6 +616,7 @@ test "enum with specified tag values" {
614616
615617test "non-exhaustive enum" {
616618 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
619 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
617620
618621 const S = struct {
619622 const E = enum(u8) { a, b, _ };
......@@ -676,6 +679,7 @@ test "empty non-exhaustive enum" {
676679
677680test "single field non-exhaustive enum" {
678681 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
682 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
679683
680684 const S = struct {
681685 const E = enum(u8) { a, _ };
......@@ -739,6 +743,7 @@ test "cast integer literal to enum" {
739743
740744test "enum with specified and unspecified tag values" {
741745 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
746 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
742747
743748 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2.D);
744749 comptime try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2.D);
......@@ -898,6 +903,7 @@ test "enum value allocation" {
898903test "enum literal casting to tagged union" {
899904 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
900905 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
906 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
901907
902908 const Arch = union(enum) {
903909 x86_64,
......@@ -922,6 +928,7 @@ const Bar = enum { A, B, C, D };
922928
923929test "enum literal casting to error union with payload enum" {
924930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
931 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
925932
926933 var bar: error{B}!Bar = undefined;
927934 bar = .B; // should never cast to the error set
......@@ -933,6 +940,7 @@ test "constant enum initialization with differing sizes" {
933940 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
934941 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
935942 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
943 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
936944
937945 try test3_1(test3_foo);
938946 try test3_2(test3_bar);
......@@ -976,6 +984,7 @@ test "@tagName" {
976984 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
977985 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
978986 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
987 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
979988
980989 try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
981990 comptime try expect(mem.eql(u8, testEnumTagNameBare(BareNumber.Three), "Three"));
......@@ -992,6 +1001,7 @@ test "@tagName non-exhaustive enum" {
9921001 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
9931002 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9941003 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1004 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9951005
9961006 try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
9971007 comptime try expect(mem.eql(u8, testEnumTagNameBare(NonExhaustive.B), "B"));
......@@ -1003,6 +1013,7 @@ test "@tagName is null-terminated" {
10031013 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
10041014 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10051015 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1016 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10061017
10071018 const S = struct {
10081019 fn doTheTest(n: BareNumber) !void {
......@@ -1018,6 +1029,7 @@ test "tag name with assigned enum values" {
10181029 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
10191030 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10201031 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1032 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10211033
10221034 const LocalFoo = enum(u8) {
10231035 A = 1,
......@@ -1029,6 +1041,7 @@ test "tag name with assigned enum values" {
10291041
10301042test "@tagName on enum literals" {
10311043 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1044 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10321045
10331046 try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
10341047 comptime try expect(mem.eql(u8, @tagName(.FooBar), "FooBar"));
......@@ -1037,6 +1050,7 @@ test "@tagName on enum literals" {
10371050test "enum literal casting to optional" {
10381051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10391052 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1053 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10401054
10411055 var bar: ?Bar = undefined;
10421056 bar = .B;
......@@ -1065,6 +1079,7 @@ test "bit field access with enum fields" {
10651079 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
10661080 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10671081 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1082 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10681083
10691084 var data = bit_field_1;
10701085 try expect(getA(&data) == A.Two);
......@@ -1105,6 +1120,7 @@ test "tag name functions are unique" {
11051120 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
11061121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11071122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11081124
11091125 {
11101126 const E = enum { a, b };
......@@ -1123,6 +1139,7 @@ test "tag name functions are unique" {
11231139test "size of enum with only one tag which has explicit integer tag type" {
11241140 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
11251141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11261143
11271144 const E = enum(u8) { nope = 10 };
11281145 const S0 = struct { e: E };
test/behavior/error.zig+31
......@@ -30,6 +30,7 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void {
3030
3131test "error binary operator" {
3232 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3334
3435 const a = errBinaryOperatorG(true) catch 3;
3536 const b = errBinaryOperatorG(false) catch 3;
......@@ -61,12 +62,14 @@ pub fn baz() anyerror!i32 {
6162
6263test "error wrapping" {
6364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6466
6567 try expect((baz() catch unreachable) == 15);
6668}
6769
6870test "unwrap simple value from error" {
6971 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7073
7174 const i = unwrapSimpleValueFromErrorDo() catch unreachable;
7275 try expect(i == 13);
......@@ -77,6 +80,7 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize {
7780
7881test "error return in assignment" {
7982 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8084
8185 doErrReturnInAssignment() catch unreachable;
8286}
......@@ -99,6 +103,7 @@ test "syntax: optional operator in front of error union operator" {
99103test "widen cast integer payload of error union function call" {
100104 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
101105 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102107
103108 const S = struct {
104109 fn errorable() !u64 {
......@@ -115,6 +120,7 @@ test "widen cast integer payload of error union function call" {
115120
116121test "debug info for optional error set" {
117122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
118124
119125 const SomeError = error{ Hello, Hello2 };
120126 var a_local_variable: ?SomeError = null;
......@@ -123,6 +129,7 @@ test "debug info for optional error set" {
123129
124130test "implicit cast to optional to error union to return result loc" {
125131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
126133
127134 const S = struct {
128135 fn entry() !void {
......@@ -242,6 +249,7 @@ fn testExplicitErrorSetCast(set1: Set1) !void {
242249test "comptime test error for empty error set" {
243250 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
244251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
252 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
245253
246254 try testComptimeTestErrorEmptySet(1234);
247255 comptime try testComptimeTestErrorEmptySet(1234);
......@@ -281,6 +289,7 @@ test "inferred empty error set comptime catch" {
281289
282290test "error union peer type resolution" {
283291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
284293
285294 try testErrorUnionPeerTypeResolution(1);
286295}
......@@ -312,6 +321,7 @@ fn quux_1() !i32 {
312321
313322test "error: Zero sized error set returned with value payload crash" {
314323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
315325
316326 _ = try foo3(0);
317327 _ = comptime try foo3(0);
......@@ -324,6 +334,7 @@ fn foo3(b: usize) Error!usize {
324334
325335test "error: Infer error set from literals" {
326336 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
337 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
327338
328339 _ = nullLiteral("n") catch |err| handleErrors(err);
329340 _ = floatLiteral("n") catch |err| handleErrors(err);
......@@ -363,6 +374,7 @@ test "nested error union function call in optional unwrap" {
363374 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
364375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
365376 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
377 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
366378
367379 const S = struct {
368380 const Foo = struct {
......@@ -409,6 +421,7 @@ test "nested error union function call in optional unwrap" {
409421test "return function call to error set from error union function" {
410422 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
411423 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
424 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
412425
413426 const S = struct {
414427 fn errorable() anyerror!i32 {
......@@ -426,6 +439,7 @@ test "return function call to error set from error union function" {
426439test "optional error set is the same size as error set" {
427440 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
428441 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
442 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
429443
430444 comptime try expect(@sizeOf(?anyerror) == @sizeOf(anyerror));
431445 comptime try expect(@alignOf(?anyerror) == @alignOf(anyerror));
......@@ -441,6 +455,7 @@ test "optional error set is the same size as error set" {
441455test "nested catch" {
442456 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
443457 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
458 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
444459
445460 const S = struct {
446461 fn entry() !void {
......@@ -466,6 +481,7 @@ test "nested catch" {
466481test "function pointer with return type that is error union with payload which is pointer of parent struct" {
467482 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
468483 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
484 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
469485
470486 const S = struct {
471487 const Foo = struct {
......@@ -491,6 +507,7 @@ test "return result loc as peer result loc in inferred error set function" {
491507 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
492508 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
493509 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
510 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
494511
495512 const S = struct {
496513 fn doTheTest() !void {
......@@ -522,6 +539,7 @@ test "error payload type is correctly resolved" {
522539 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
523540 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
524541 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
542 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
525543
526544 const MyIntWrapper = struct {
527545 const Self = @This();
......@@ -551,6 +569,7 @@ test "@errorName" {
551569 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
552570 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
553571 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
572 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
554573
555574 try expect(mem.eql(u8, @errorName(error.AnError), "AnError"));
556575 try expect(mem.eql(u8, @errorName(error.ALongerErrorName), "ALongerErrorName"));
......@@ -564,6 +583,7 @@ test "@errorName sentinel length matches slice length" {
564583 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
565584 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
566585 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
586 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
567587
568588 const name = testBuiltinErrorName(error.FooBar);
569589 const length: usize = 6;
......@@ -592,6 +612,7 @@ test "error set equality" {
592612
593613test "inferred error set equality" {
594614 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
615 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
595616
596617 const S = struct {
597618 fn foo() !void {
......@@ -655,6 +676,7 @@ test "error union payload is properly aligned" {
655676 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
656677 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
657678 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
679 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
658680
659681 const S = struct {
660682 a: u128,
......@@ -670,6 +692,7 @@ test "error union payload is properly aligned" {
670692
671693test "ret_ptr doesn't cause own inferred error set to be resolved" {
672694 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
673696
674697 const S = struct {
675698 fn foo() !void {}
......@@ -686,6 +709,7 @@ test "ret_ptr doesn't cause own inferred error set to be resolved" {
686709test "simple else prong allowed even when all errors handled" {
687710 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
688711 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
712 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
689713
690714 const S = struct {
691715 fn foo() !u8 {
......@@ -714,6 +738,7 @@ test "pointer to error union payload" {
714738 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715739 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
716740 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
741 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
717742
718743 var err_union: anyerror!u8 = 15;
719744
......@@ -747,6 +772,7 @@ test "error union of noreturn used with if" {
747772 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
748773 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
749774 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
775 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
750776
751777 NoReturn.a = 64;
752778 if (NoReturn.loop()) {
......@@ -761,6 +787,7 @@ test "error union of noreturn used with try" {
761787 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
762788 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
763789 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
790 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
764791
765792 NoReturn.a = 64;
766793 const err = NoReturn.testTry();
......@@ -772,6 +799,7 @@ test "error union of noreturn used with catch" {
772799 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
773800 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
774801 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
802 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
775803
776804 NoReturn.a = 64;
777805 const err = NoReturn.testCatch();
......@@ -782,6 +810,7 @@ test "alignment of wrapping an error union payload" {
782810 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
783811 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
784812 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
813 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
785814
786815 const S = struct {
787816 const I = extern struct { x: i128 };
......@@ -796,6 +825,7 @@ test "alignment of wrapping an error union payload" {
796825
797826test "compare error union and error set" {
798827 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
828 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
799829
800830 var a: anyerror = error.Foo;
801831 var b: anyerror!u32 = error.Bar;
......@@ -831,6 +861,7 @@ test "error from comptime string" {
831861 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
832862 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
833863 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
834865
835866 const name = "Weird error name!";
836867 const S = struct {
test/behavior/eval.zig+44
......@@ -20,6 +20,7 @@ const should_be_1235 = unwrapAndAddOne(1234);
2020test "static add one" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
2425 try expect(should_be_1235 == 1235);
2526}
......@@ -70,6 +71,7 @@ fn constExprEvalOnSingleExprBlocksFn(x: i32, b: bool) i32 {
7071
7172test "constant expressions" {
7273 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7375
7476 var array: [array_size]u8 = undefined;
7577 try expect(@sizeOf(@TypeOf(array)) == 20);
......@@ -90,6 +92,7 @@ fn letsTryToCompareBools(a: bool, b: bool) bool {
9092}
9193test "inlined block and runtime block phi" {
9294 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9396
9497 try expect(letsTryToCompareBools(true, true));
9598 try expect(letsTryToCompareBools(true, false));
......@@ -137,6 +140,7 @@ test "pointer to type" {
137140test "a type constructed in a global expression" {
138141 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
139142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
140144
141145 var l: List = undefined;
142146 l.array[0] = 10;
......@@ -232,6 +236,7 @@ const vertices = [_]Vertex{
232236
233237test "statically initialized list" {
234238 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
235240
236241 try expect(static_point_list[0].x == 1);
237242 try expect(static_point_list[0].y == 2);
......@@ -337,6 +342,7 @@ fn doesAlotT(comptime T: type, value: usize) T {
337342
338343test "@setEvalBranchQuota at same scope as generic function call" {
339344 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
340346
341347 try expect(doesAlotT(u32, 2) == 2);
342348}
......@@ -387,6 +393,7 @@ test "return 0 from function that has u0 return type" {
387393
388394test "statically initialized struct" {
389395 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
396 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
390397
391398 st_init_str_foo.x += 1;
392399 try expect(st_init_str_foo.x == 14);
......@@ -435,6 +442,7 @@ fn copyWithPartialInline(s: []u32, b: []u8) void {
435442test "binary math operator in partially inlined function" {
436443 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
437444 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
445 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
438446
439447 var s: [4]u32 = undefined;
440448 var b: [16]u8 = undefined;
......@@ -454,6 +462,7 @@ test "comptime shl" {
454462 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
455463 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
456464 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
465 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
457466
458467 var a: u128 = 3;
459468 var b: u7 = 63;
......@@ -498,6 +507,7 @@ test "comptime shlWithOverflow" {
498507
499508test "const ptr to variable data changes at runtime" {
500509 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
510 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
501511
502512 try expect(foo_ref.name[0] == 'a');
503513 foo_ref.name = "b";
......@@ -516,6 +526,7 @@ test "runtime 128 bit integer division" {
516526 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
517527 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
518528 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
519530
520531 var a: u128 = 152313999999999991610955792383;
521532 var b: u128 = 10000000000000000000;
......@@ -525,6 +536,7 @@ test "runtime 128 bit integer division" {
525536
526537test "@tagName of @typeInfo" {
527538 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
528540
529541 const str = @tagName(@typeInfo(u8));
530542 try expect(std.mem.eql(u8, str, "Int"));
......@@ -534,6 +546,7 @@ test "static eval list init" {
534546 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
535547 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
536548 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
549 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
537550
538551 try expect(static_vec3.data[2] == 1.0);
539552 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 {
549562}
550563
551564test "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
552567 var runtime = [1]i32{3};
553568 comptime var i: usize = 0;
554569 inline while (i < 2) : (i += 1) {
......@@ -562,6 +577,7 @@ test "inlined loop has array literal with elided runtime scope on first iteratio
562577
563578test "ptr to local array argument at comptime" {
564579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
580 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
565581
566582 comptime {
567583 var bytes: [10]u8 = undefined;
......@@ -597,6 +613,8 @@ fn testCompTimeUIntComparisons(x: u32) void {
597613const hi1 = "hi";
598614const hi2 = hi1;
599615test "const global shares pointer with other same one" {
616 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
617
600618 try assertEqualPtrs(&hi1[0], &hi2[0]);
601619 comptime try expect(&hi1[0] == &hi2[0]);
602620}
......@@ -721,6 +739,7 @@ test "*align(1) u16 is the same as *align(1:0:2) u16" {
721739test "array concatenation of function calls" {
722740 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
723741 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
742 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
724743
725744 var a = oneItem(3) ++ oneItem(4);
726745 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 4 }));
......@@ -729,6 +748,7 @@ test "array concatenation of function calls" {
729748test "array multiplication of function calls" {
730749 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
731750 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
751 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
732752
733753 var a = oneItem(3) ** scalar(2);
734754 try expect(std.mem.eql(i32, &a, &[_]i32{ 3, 3 }));
......@@ -745,6 +765,7 @@ fn scalar(x: u32) u32 {
745765test "array concatenation peer resolves element types - value" {
746766 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
747767 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
768 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
748769
749770 var a = [2]u3{ 1, 7 };
750771 var b = [3]u8{ 200, 225, 255 };
......@@ -760,6 +781,7 @@ test "array concatenation peer resolves element types - value" {
760781test "array concatenation peer resolves element types - pointer" {
761782 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
762783 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
784 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
763785
764786 var a = [2]u3{ 1, 7 };
765787 var b = [3]u8{ 200, 225, 255 };
......@@ -777,6 +799,7 @@ test "array concatenation sets the sentinel - value" {
777799 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
778800 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
779801 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
802 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
780803
781804 var a = [2]u3{ 1, 7 };
782805 var b = [3:69]u8{ 200, 225, 255 };
......@@ -793,6 +816,7 @@ test "array concatenation sets the sentinel - value" {
793816
794817test "array concatenation sets the sentinel - pointer" {
795818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
819 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
796820
797821 var a = [2]u3{ 1, 7 };
798822 var b = [3:69]u8{ 200, 225, 255 };
......@@ -812,6 +836,7 @@ test "array multiplication sets the sentinel - value" {
812836 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
813837 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
814838 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
839 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
815840
816841 var a = [2:7]u3{ 1, 6 };
817842 var b = a ** 2;
......@@ -827,6 +852,7 @@ test "array multiplication sets the sentinel - value" {
827852test "array multiplication sets the sentinel - pointer" {
828853 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
829854 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
855 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
830856
831857 var a = [2:7]u3{ 1, 6 };
832858 var b = &a ** 2;
......@@ -851,6 +877,7 @@ test "comptime assign int to optional int" {
851877test "two comptime calls with array default initialized to undefined" {
852878 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
853879 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
880 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
854881
855882 const S = struct {
856883 const CrossTarget = struct {
......@@ -935,6 +962,7 @@ test "const local with comptime init through array init" {
935962
936963test "closure capture type of runtime-known parameter" {
937964 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
965 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
938966
939967 const S = struct {
940968 fn b(c: anytype) !void {
......@@ -949,6 +977,7 @@ test "closure capture type of runtime-known parameter" {
949977
950978test "comptime break passing through runtime condition converted to runtime break" {
951979 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
980 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
952981
953982 const S = struct {
954983 fn doTheTest() !void {
......@@ -982,6 +1011,7 @@ test "comptime break to outer loop passing through runtime condition converted t
9821011 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9831012 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9841013 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1014 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9851015
9861016 const S = struct {
9871017 fn doTheTest() !void {
......@@ -1032,6 +1062,7 @@ test "comptime break operand passing through runtime condition converted to runt
10321062
10331063test "comptime break operand passing through runtime switch converted to runtime break" {
10341064 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1065 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10351066
10361067 const S = struct {
10371068 fn doTheTest(runtime: u8) !void {
......@@ -1051,6 +1082,7 @@ test "comptime break operand passing through runtime switch converted to runtime
10511082
10521083test "no dependency loop for alignment of self struct" {
10531084 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1085 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10541086
10551087 const S = struct {
10561088 fn doTheTest() !void {
......@@ -1087,6 +1119,7 @@ test "no dependency loop for alignment of self struct" {
10871119
10881120test "no dependency loop for alignment of self bare union" {
10891121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10901123
10911124 const S = struct {
10921125 fn doTheTest() !void {
......@@ -1123,6 +1156,7 @@ test "no dependency loop for alignment of self bare union" {
11231156
11241157test "no dependency loop for alignment of self tagged union" {
11251158 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1159 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11261160
11271161 const S = struct {
11281162 fn doTheTest() !void {
......@@ -1166,6 +1200,7 @@ test "storing an array of type in a field" {
11661200 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11671201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11681202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1203 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11691204
11701205 const S = struct {
11711206 fn doTheTest() void {
......@@ -1194,6 +1229,7 @@ test "storing an array of type in a field" {
11941229test "pass pointer to field of comptime-only type as a runtime parameter" {
11951230 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11961231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1232 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11971233
11981234 const S = struct {
11991235 const Mixed = struct {
......@@ -1309,6 +1345,7 @@ test "lazy sizeof is resolved in division" {
13091345
13101346test "lazy value is resolved as slice operand" {
13111347 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13121349
13131350 const A = struct { a: u32 };
13141351 var a: [512]u64 = undefined;
......@@ -1365,6 +1402,8 @@ test "inline for inside a runtime condition" {
13651402}
13661403
13671404test "continue in inline for inside a comptime switch" {
1405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1406
13681407 const arr = .{ 1, 2, 3 };
13691408 var count: u8 = 0;
13701409 switch (arr[1]) {
......@@ -1428,6 +1467,8 @@ test "continue nested inline for loop in named block expr" {
14281467}
14291468
14301469test "x and false is comptime-known false" {
1470 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1471
14311472 const T = struct {
14321473 var x: u32 = 0;
14331474
......@@ -1453,6 +1494,8 @@ test "x and false is comptime-known false" {
14531494}
14541495
14551496test "x or true is comptime-known true" {
1497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1498
14561499 const T = struct {
14571500 var x: u32 = 0;
14581501
......@@ -1482,6 +1525,7 @@ test "non-optional and optional array elements concatenated" {
14821525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14831526 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14841527 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14851529
14861530 const array = [1]u8{'A'} ++ [1]?u8{null};
14871531 var index: usize = 0;
test/behavior/export.zig+2
......@@ -22,6 +22,8 @@ const PackedUnion = packed union {
2222};
2323
2424test "packed struct, enum, union parameters in extern function" {
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26
2527 testPackedStuff(&(PackedStruct{
2628 .a = 1,
2729 .b = 2,
test/behavior/field_parent_ptr.zig+2
......@@ -4,6 +4,7 @@ const builtin = @import("builtin");
44test "@fieldParentPtr non-first field" {
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
78 try testParentFieldPtr(&foo.c);
89 comptime try testParentFieldPtr(&foo.c);
910}
......@@ -11,6 +12,7 @@ test "@fieldParentPtr non-first field" {
1112test "@fieldParentPtr first field" {
1213 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1314 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1416 try testParentFieldPtrFirst(&foo.a);
1517 comptime try testParentFieldPtrFirst(&foo.a);
1618}
test/behavior/floatop.zig+30
......@@ -22,6 +22,7 @@ fn epsForType(comptime T: type) T {
2222test "floating point comparisons" {
2323 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2526
2627 try testFloatComparisons();
2728 comptime try testFloatComparisons();
......@@ -57,6 +58,7 @@ test "different sized float comparisons" {
5758 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
5859 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5960 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6062
6163 try testDifferentSizedFloatComparisons();
6264 comptime try testDifferentSizedFloatComparisons();
......@@ -91,6 +93,7 @@ test "negative f128 floatToInt at compile-time" {
9193 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9294 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9395 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9497
9598 const a: f128 = -2;
9699 var b = @floatToInt(i64, a);
......@@ -102,6 +105,7 @@ test "@sqrt" {
102105 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
103106 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
104107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
108 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
105109
106110 comptime try testSqrt();
107111 try testSqrt();
......@@ -160,6 +164,7 @@ test "more @sqrt f16 tests" {
160164 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
161165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163168
164169 // TODO these are not all passing at comptime
165170 try expect(@sqrt(@as(f16, 0.0)) == 0.0);
......@@ -185,6 +190,7 @@ test "@sin" {
185190 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
186191 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
187192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188194
189195 comptime try testSin();
190196 try testSin();
......@@ -225,6 +231,7 @@ test "@cos" {
225231 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
226232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
227233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228235
229236 comptime try testCos();
230237 try testCos();
......@@ -265,6 +272,7 @@ test "@exp" {
265272 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
266273 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
267274 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
275 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268276
269277 comptime try testExp();
270278 try testExp();
......@@ -304,6 +312,7 @@ test "@exp2" {
304312 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
305313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
306314 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
315 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
307316
308317 comptime try testExp2();
309318 try testExp2();
......@@ -343,6 +352,7 @@ test "@log" {
343352 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
344353 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
345354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
346356
347357 comptime try testLog();
348358 try testLog();
......@@ -374,6 +384,7 @@ test "@log with @vectors" {
374384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
375385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
376386 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
387 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
377388
378389 {
379390 var v: @Vector(4, f32) = [_]f32{ 1.1, 2.2, 0.3, 0.4 };
......@@ -390,6 +401,7 @@ test "@log2" {
390401 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
391402 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
392403 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
404 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
393405
394406 comptime try testLog2();
395407 try testLog2();
......@@ -433,6 +445,7 @@ test "@log10" {
433445 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
434446 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
435447 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
448 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
436449
437450 comptime try testLog10();
438451 try testLog10();
......@@ -472,6 +485,7 @@ test "@fabs" {
472485 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
473486 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
474487 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
488 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
475489
476490 comptime try testFabs();
477491 try testFabs();
......@@ -520,6 +534,7 @@ test "@floor" {
520534 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
521535 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
522536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
537 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
523538
524539 comptime try testFloor();
525540 try testFloor();
......@@ -563,6 +578,7 @@ test "@ceil" {
563578 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
564579 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
565580 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
581 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
566582
567583 comptime try testCeil();
568584 try testCeil();
......@@ -606,6 +622,7 @@ test "@trunc" {
606622 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
607623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
608624 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
625 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
609626
610627 comptime try testTrunc();
611628 try testTrunc();
......@@ -649,6 +666,7 @@ test "negation f16" {
649666 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
650667 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
651668 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
669 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
652670
653671 if (builtin.os.tag == .freebsd) {
654672 // TODO file issue to track this failure
......@@ -674,6 +692,7 @@ test "negation f32" {
674692 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
675693 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
676694 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
695 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
677696
678697 const S = struct {
679698 fn doTheTest() !void {
......@@ -694,6 +713,7 @@ test "negation f64" {
694713 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
695714 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
696715 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
716 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
697717
698718 const S = struct {
699719 fn doTheTest() !void {
......@@ -714,6 +734,7 @@ test "negation f80" {
714734 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715735 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
716736 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
737 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
717738
718739 const S = struct {
719740 fn doTheTest() !void {
......@@ -734,6 +755,7 @@ test "negation f128" {
734755 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
735756 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
736757 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
758 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
737759
738760 const S = struct {
739761 fn doTheTest() !void {
......@@ -751,6 +773,7 @@ test "negation f128" {
751773
752774test "eval @setFloatMode at compile-time" {
753775 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
776 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
754777
755778 const result = comptime fnWithFloatMode();
756779 try expect(result == 1234.0);
......@@ -775,6 +798,7 @@ test "comptime fixed-width float zero divided by zero produces NaN" {
775798 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
776799 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
777800 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
801 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
778802
779803 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
780804 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" {
786810 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
787811 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
788812 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
813 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
789814
790815 inline for (.{ f16, f32, f64, f80, f128 }) |F| {
791816 const pos = @as(F, 1) / @as(F, 0);
......@@ -806,6 +831,7 @@ test "nan negation f16" {
806831 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
807832 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
808833 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
834 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
809835
810836 const nan_comptime = comptime math.nan(f16);
811837 const neg_nan_comptime = -nan_comptime;
......@@ -825,6 +851,7 @@ test "nan negation f32" {
825851 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
826852 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
827853 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
854 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
828855
829856 const nan_comptime = comptime math.nan(f32);
830857 const neg_nan_comptime = -nan_comptime;
......@@ -844,6 +871,7 @@ test "nan negation f64" {
844871 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
845872 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
846873 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
874 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
847875
848876 const nan_comptime = comptime math.nan(f64);
849877 const neg_nan_comptime = -nan_comptime;
......@@ -863,6 +891,7 @@ test "nan negation f128" {
863891 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
864892 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
865893 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
894 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
866895
867896 const nan_comptime = comptime math.nan(f128);
868897 const neg_nan_comptime = -nan_comptime;
......@@ -882,6 +911,7 @@ test "nan negation f80" {
882911 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
883912 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
884913 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
914 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
885915
886916 const nan_comptime = comptime math.nan(f80);
887917 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
7575test "discard the result of a function that returns a struct" {
7676 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7777 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
78 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7879
7980 const S = struct {
8081 fn entry() void {
......@@ -98,6 +99,7 @@ test "inline function call that calls optional function pointer, return pointer
9899 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
99100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
100101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
101103
102104 const S = struct {
103105 field: u32,
......@@ -173,11 +175,14 @@ fn fComplexCallconvRet(x: u32) callconv(blk: {
173175test "function with complex callconv and return type expressions" {
174176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
175177 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176179
177180 try expect(fComplexCallconvRet(3).x == 9);
178181}
179182
180183test "pass by non-copying value" {
184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
185
181186 try expect(addPointCoords(Point{ .x = 1, .y = 2 }) == 3);
182187}
183188
......@@ -192,6 +197,7 @@ fn addPointCoords(pt: Point) i32 {
192197
193198test "pass by non-copying value through var arg" {
194199 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
195201
196202 try expect((try addPointCoordsVar(Point{ .x = 1, .y = 2 })) == 3);
197203}
......@@ -202,6 +208,8 @@ fn addPointCoordsVar(pt: anytype) !i32 {
202208}
203209
204210test "pass by non-copying value as method" {
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212
205213 var pt = Point2{ .x = 1, .y = 2 };
206214 try expect(pt.addPointCoords() == 3);
207215}
......@@ -216,6 +224,8 @@ const Point2 = struct {
216224};
217225
218226test "pass by non-copying value as method, which is generic" {
227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228
219229 var pt = Point3{ .x = 1, .y = 2 };
220230 try expect(pt.addPointCoords(i32) == 3);
221231}
......@@ -231,6 +241,8 @@ const Point3 = struct {
231241};
232242
233243test "pass by non-copying value as method, at comptime" {
244 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
245
234246 comptime {
235247 var pt = Point2{ .x = 1, .y = 2 };
236248 try expect(pt.addPointCoords() == 3);
......@@ -240,6 +252,7 @@ test "pass by non-copying value as method, at comptime" {
240252test "implicit cast fn call result to optional in field result" {
241253 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
242254 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243256
244257 const S = struct {
245258 fn entry() !void {
......@@ -280,6 +293,7 @@ fn voidFun(a: i32, b: void, c: i32, d: void) !void {
280293
281294test "call function with empty string" {
282295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
283297
284298 acceptsString("");
285299}
......@@ -292,6 +306,7 @@ test "function pointers" {
292306 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
293307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
294308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
309 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
295310
296311 const fns = [_]*const @TypeOf(fn1){
297312 &fn1,
......@@ -329,6 +344,7 @@ test "function call with anon list literal" {
329344 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
330345 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
331346 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
347 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
332348
333349 const S = struct {
334350 fn doTheTest() !void {
......@@ -349,6 +365,7 @@ test "function call with anon list literal - 2D" {
349365 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
350366 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
351367 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352369
353370 const S = struct {
354371 fn doTheTest() !void {
......@@ -394,6 +411,7 @@ test "function with inferred error set but returning no error" {
394411
395412test "import passed byref to function in return type" {
396413 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397415
398416 const S = struct {
399417 fn get() @import("std").ArrayListUnmanaged(i32) {
......@@ -428,6 +446,7 @@ test "implicit cast function to function ptr" {
428446test "method call with optional and error union first param" {
429447 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
430448 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
449 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
431450
432451 const S = struct {
433452 x: i32 = 1234,
test/behavior/fn_delegation.zig+1
......@@ -33,6 +33,7 @@ fn custom(comptime T: type, comptime num: u64) fn (T) u64 {
3333
3434test "fn delegation" {
3535 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3637
3738 const foo = Foo{};
3839 try expect(foo.one() == 11);
test/behavior/for.zig+8
......@@ -6,6 +6,7 @@ const mem = std.mem;
66
77test "continue in for loop" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
1011 const array = [_]i32{ 1, 2, 3, 4, 5 };
1112 var sum: i32 = 0;
......@@ -68,6 +69,7 @@ test "basic for loop" {
6869 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
6970 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7173
7274 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" {
111113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
112114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
113115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
114117
115118 const S = struct {
116119 fn doTheTest(slice: []const u8) !void {
......@@ -130,6 +133,7 @@ test "for with null and T peer types and inferred result location type" {
130133
131134test "2 break statements and an else" {
132135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
133137
134138 const S = struct {
135139 fn entry(t: bool, f: bool) !void {
......@@ -151,6 +155,7 @@ test "for loop with pointer elem var" {
151155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
152156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
153157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154159
155160 const source = "abcdefg";
156161 var target: [source.len]u8 = undefined;
......@@ -176,6 +181,7 @@ fn mangleString(s: []u8) void {
176181
177182test "for copies its payload" {
178183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179185
180186 const S = struct {
181187 fn doTheTest() !void {
......@@ -195,6 +201,7 @@ test "for on slice with allowzero ptr" {
195201 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
196202 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
197203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
198205
199206 const S = struct {
200207 fn doTheTest(slice: []const u8) !void {
......@@ -209,6 +216,7 @@ test "for on slice with allowzero ptr" {
209216
210217test "else continue outer for" {
211218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
219 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
212220
213221 var i: usize = 6;
214222 var buf: [5]u8 = undefined;
test/behavior/generics.zig+16
......@@ -18,6 +18,7 @@ fn checkSize(comptime T: type) usize {
1818
1919test "simple generic fn" {
2020 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2122
2223 try expect(max(i32, 3, -1) == 3);
2324 try expect(max(u8, 1, 100) == 100);
......@@ -58,6 +59,7 @@ test "fn with comptime args" {
5859 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
5960 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6061 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6163
6264 try expect(gimmeTheBigOne(1234, 5678) == 5678);
6365 try expect(shouldCallSameInstance(34, 12) == 34);
......@@ -68,6 +70,7 @@ test "anytype params" {
6870 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
6971 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7072 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7174
7275 try expect(max_i32(12, 34) == 34);
7376 try expect(max_f64(1.2, 3.4) == 3.4);
......@@ -92,6 +95,7 @@ fn max_f64(a: f64, b: f64) f64 {
9295test "type constructed by comptime function call" {
9396 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
9497 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9599
96100 var l: SimpleList(10) = undefined;
97101 l.array[0] = 10;
......@@ -114,6 +118,7 @@ fn SimpleList(comptime L: usize) type {
114118test "function with return type type" {
115119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
116120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
117122
118123 var list: List(i32) = undefined;
119124 var list2: List(i32) = undefined;
......@@ -154,6 +159,7 @@ fn aGenericFn(comptime T: type, comptime a: T, b: T) T {
154159test "generic fn with implicit cast" {
155160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
156161 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
162 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157163
158164 try expect(getFirstByte(u8, &[_]u8{13}) == 13);
159165 try expect(getFirstByte(u16, &[_]u16{
......@@ -171,6 +177,7 @@ fn getFirstByte(comptime T: type, mem: []const T) u8 {
171177test "generic fn keeps non-generic parameter types" {
172178 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
173179 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174181
175182 const A = 128;
176183
......@@ -204,6 +211,8 @@ fn foo2(arg: anytype) bool {
204211}
205212
206213test "generic struct" {
214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215
207216 var a1 = GenNode(i32){
208217 .value = 13,
209218 .next = null,
......@@ -243,6 +252,7 @@ test "generic function instantiation turns into comptime call" {
243252 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
244253 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
245254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
246256
247257 const S = struct {
248258 fn doTheTest() !void {
......@@ -276,6 +286,8 @@ test "generic function instantiation turns into comptime call" {
276286}
277287
278288test "generic function with void and comptime parameter" {
289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
290
279291 const S = struct { x: i32 };
280292 const namespace = struct {
281293 fn foo(v: void, s: *S, comptime T: type) !void {
......@@ -290,6 +302,7 @@ test "generic function with void and comptime parameter" {
290302
291303test "anonymous struct return type referencing comptime parameter" {
292304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
293306
294307 const S = struct {
295308 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" {
307320test "generic function instantiation non-duplicates" {
308321 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
309322 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
310324 if (builtin.os.tag == .wasi) return error.SkipZigTest;
311325
312326 const S = struct {
......@@ -369,6 +383,8 @@ test "extern function used as generic parameter" {
369383}
370384
371385test "generic struct as parameter type" {
386 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
387
372388 const S = struct {
373389 fn doTheTest(comptime Int: type, thing: struct { int: Int }) !void {
374390 try expect(thing.int == 123);
test/behavior/if.zig+5
......@@ -45,6 +45,7 @@ var global_with_err: anyerror!u32 = error.SomeError;
4545
4646test "unwrap mutable global var" {
4747 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4849
4950 if (global_with_val) |v| {
5051 try expect(v == 0);
......@@ -81,6 +82,7 @@ test "if copies its payload" {
8182 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8283 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8486
8587 const S = struct {
8688 fn doTheTest() !void {
......@@ -116,6 +118,7 @@ test "if peer expressions inferred optional type" {
116118 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
117119 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
118120 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
121 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
119122
120123 var self: []const u8 = "abcdef";
121124 var index: usize = 0;
......@@ -133,6 +136,7 @@ test "if-else expression with runtime condition result location is inferred opti
133136 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
134137 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
135138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
136140
137141 const A = struct { b: u64, c: u64 };
138142 var d: bool = true;
......@@ -145,6 +149,7 @@ test "result location with inferred type ends up being pointer to comptime_int"
145149 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
146150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
147151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
148153
149154 var a: ?u32 = 1234;
150155 var b: u32 = 2000;
test/behavior/incomplete_struct_param_tld.zig+2
......@@ -22,6 +22,8 @@ fn foo(a: A) i32 {
2222}
2323
2424test "incomplete struct param top level declaration" {
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
26
2527 const a = A{
2628 .b = B{
2729 .c = C{ .x = 13 },
test/behavior/inline_switch.zig+9
......@@ -4,6 +4,7 @@ const builtin = @import("builtin");
44
55test "inline scalar prongs" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
78
89 var x: usize = 0;
910 switch (x) {
......@@ -18,6 +19,7 @@ test "inline scalar prongs" {
1819
1920test "inline prong ranges" {
2021 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2123
2224 var x: usize = 0;
2325 switch (x) {
......@@ -31,6 +33,7 @@ test "inline prong ranges" {
3133const E = enum { a, b, c, d };
3234test "inline switch enums" {
3335 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3437
3538 var x: E = .a;
3639 switch (x) {
......@@ -44,6 +47,7 @@ test "inline switch unions" {
4447 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4548 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4649 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4751
4852 var x: U = .a;
4953 switch (x) {
......@@ -68,6 +72,7 @@ test "inline switch unions" {
6872
6973test "inline else bool" {
7074 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7176
7277 var a = true;
7378 switch (a) {
......@@ -78,6 +83,7 @@ test "inline else bool" {
7883
7984test "inline else error" {
8085 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8187
8288 const Err = error{ a, b, c };
8389 var a = Err.a;
......@@ -90,6 +96,7 @@ test "inline else error" {
9096test "inline else enum" {
9197 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9298 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
93100
94101 const E2 = enum(u8) { a = 2, b = 3, c = 4, d = 5 };
95102 var a: E2 = .a;
......@@ -101,6 +108,7 @@ test "inline else enum" {
101108
102109test "inline else int with gaps" {
103110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
104112
105113 var a: u8 = 0;
106114 switch (a) {
......@@ -117,6 +125,7 @@ test "inline else int with gaps" {
117125
118126test "inline else int all values" {
119127 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120129
121130 var a: u2 = 0;
122131 switch (a) {
test/behavior/int128.zig+4
......@@ -8,6 +8,7 @@ test "uint128" {
88 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
1213 var buff: u128 = maxInt(u128);
1314 try expect(buff == maxInt(u128));
......@@ -26,6 +27,7 @@ test "undefined 128 bit int" {
2627 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2728 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2931
3032 @setRuntimeSafety(true);
3133
......@@ -43,6 +45,7 @@ test "int128" {
4345 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
4446 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4547 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4649
4750 var buff: i128 = -1;
4851 try expect(buff < 0 and (buff + 1) == 0);
......@@ -64,6 +67,7 @@ test "truncate int128" {
6467 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6568 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6669 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6771
6872 var buff: u128 = maxInt(u128);
6973 try expect(@truncate(u64, buff) == maxInt(u64));
test/behavior/int_div.zig+1
......@@ -6,6 +6,7 @@ test "integer division" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
1011 try testDivision();
1112 comptime try testDivision();
test/behavior/inttoptr.zig+1
......@@ -14,6 +14,7 @@ test "mutate through ptr initialized with constant intToPtr value" {
1414 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718
1819 forceCompilerAnalyzeBranchHardCodedPtrDereference(false);
1920}
test/behavior/ir_block_deps.zig+1
......@@ -20,6 +20,7 @@ fn getErrInt() anyerror!i32 {
2020test "ir block deps" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
2425 try expect((foo(1) catch unreachable) == 0);
2526 try expect((foo(2) catch unreachable) == 0);
test/behavior/math.zig+43
......@@ -11,6 +11,7 @@ const math = std.math;
1111test "assignment operators" {
1212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1415
1516 var i: u32 = 0;
1617 i += 5;
......@@ -63,6 +64,7 @@ test "@clz" {
6364 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6465 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6668
6769 try testClz();
6870 comptime try testClz();
......@@ -79,6 +81,7 @@ test "@clz big ints" {
7981 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8082 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8285
8386 try testClzBigInts();
8487 comptime try testClzBigInts();
......@@ -99,6 +102,7 @@ test "@clz vectors" {
99102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
100103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
101104 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
102106
103107 try testClzVectors();
104108 comptime try testClzVectors();
......@@ -138,6 +142,7 @@ test "@ctz" {
138142 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
139143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
140144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
141146
142147 try testCtz();
143148 comptime try testCtz();
......@@ -160,6 +165,7 @@ test "@ctz vectors" {
160165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
161166 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162167 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163169
164170 try testCtzVectors();
165171 comptime try testCtzVectors();
......@@ -193,6 +199,7 @@ const ten = 10;
193199test "float equality" {
194200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
195201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196203
197204 const x: f64 = 0.012;
198205 const y: f64 = x + 1.0;
......@@ -370,6 +377,7 @@ test "division" {
370377 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
371378 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
372379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
380 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
373381
374382 try testDivision();
375383 comptime try testDivision();
......@@ -446,6 +454,7 @@ test "division half-precision floats" {
446454 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
447455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
448456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
457 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
449458
450459 try testDivisionFP16();
451460 comptime try testDivisionFP16();
......@@ -526,6 +535,7 @@ fn testUnsignedNegationWrappingEval(x: u16) !void {
526535test "unsigned 64-bit division" {
527536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
528537 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
529539
530540 try test_u64_div();
531541 comptime try test_u64_div();
......@@ -566,6 +576,7 @@ test "f128" {
566576 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
567577 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
568578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
579 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
569580
570581 try test_f128();
571582 comptime try test_f128();
......@@ -594,6 +605,7 @@ test "128-bit multiplication" {
594605 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
595606 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
596607 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
608 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
597609
598610 var a: i128 = 3;
599611 var b: i128 = 2;
......@@ -602,6 +614,8 @@ test "128-bit multiplication" {
602614}
603615
604616test "@addWithOverflow" {
617 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
618
605619 {
606620 var result: u8 = undefined;
607621 try expect(@addWithOverflow(u8, 250, 100, &result));
......@@ -636,6 +650,8 @@ test "@addWithOverflow" {
636650}
637651
638652test "small int addition" {
653 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
654
639655 var x: u2 = 0;
640656 try expect(x == 0);
641657
......@@ -824,6 +840,7 @@ test "extensive @mulWithOverflow" {
824840test "@mulWithOverflow bitsize > 32" {
825841 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
826842 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
843 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
827844
828845 {
829846 var a: u62 = 3;
......@@ -875,6 +892,8 @@ test "@mulWithOverflow bitsize > 32" {
875892}
876893
877894test "@subWithOverflow" {
895 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
896
878897 {
879898 var result: u8 = undefined;
880899 try expect(@subWithOverflow(u8, 1, 2, &result));
......@@ -981,6 +1000,7 @@ test "quad hex float literal parsing accurate" {
9811000 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9821001 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9831002 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1003 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9841004
9851005 const a: f128 = 0x1.1111222233334444555566667777p+0;
9861006
......@@ -1204,6 +1224,7 @@ test "float modulo division using @mod" {
12041224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12051225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12061226 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1227 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12071228 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
12081229
12091230 comptime try fmod(f16);
......@@ -1246,6 +1267,7 @@ test "@sqrt" {
12461267 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12471268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12481269 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12491271
12501272 try testSqrt(f64, 12.0);
12511273 comptime try testSqrt(f64, 12.0);
......@@ -1272,6 +1294,7 @@ test "@fabs" {
12721294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12731295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12741296 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12751298
12761299 try testFabs(f128, 12.0);
12771300 comptime try testFabs(f128, 12.0);
......@@ -1293,6 +1316,7 @@ test "@fabs f80" {
12931316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12941317 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12951318 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12961320
12971321 try testFabs(f80, 12.0);
12981322 comptime try testFabs(f80, 12.0);
......@@ -1309,6 +1333,7 @@ test "@floor" {
13091333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13101334 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13111335 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1336 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13121337
13131338 try testFloor(f64, 12.0);
13141339 comptime try testFloor(f64, 12.0);
......@@ -1328,6 +1353,7 @@ test "@floor f80" {
13281353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13291354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13301355 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1356 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13311357 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
13321358
13331359 try testFloor(f80, 12.0);
......@@ -1339,6 +1365,7 @@ test "@floor f128" {
13391365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13401366 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13411367 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13421369
13431370 try testFloor(f128, 12.0);
13441371 comptime try testFloor(f128, 12.0);
......@@ -1355,6 +1382,7 @@ test "@ceil" {
13551382 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13561383 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13571384 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13581386
13591387 try testCeil(f64, 12.0);
13601388 comptime try testCeil(f64, 12.0);
......@@ -1374,6 +1402,7 @@ test "@ceil f80" {
13741402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13751403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13761404 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1405 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13771406 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
13781407
13791408 try testCeil(f80, 12.0);
......@@ -1385,6 +1414,7 @@ test "@ceil f128" {
13851414 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13861415 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13871416 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13881418
13891419 try testCeil(f128, 12.0);
13901420 comptime try testCeil(f128, 12.0);
......@@ -1401,6 +1431,7 @@ test "@trunc" {
14011431 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14021432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14031433 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1434 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14041435
14051436 try testTrunc(f64, 12.0);
14061437 comptime try testTrunc(f64, 12.0);
......@@ -1420,6 +1451,7 @@ test "@trunc f80" {
14201451 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14211452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14221453 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14231455 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
14241456
14251457 try testTrunc(f80, 12.0);
......@@ -1437,6 +1469,7 @@ test "@trunc f128" {
14371469 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14381470 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14391471 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1472 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14401473
14411474 try testTrunc(f128, 12.0);
14421475 comptime try testTrunc(f128, 12.0);
......@@ -1461,6 +1494,7 @@ test "@round" {
14611494 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14621495 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14631496 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1497 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14641498
14651499 try testRound(f64, 12.0);
14661500 comptime try testRound(f64, 12.0);
......@@ -1480,6 +1514,7 @@ test "@round f80" {
14801514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14811515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14821516 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1517 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14831518 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
14841519
14851520 try testRound(f80, 12.0);
......@@ -1491,6 +1526,7 @@ test "@round f128" {
14911526 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
14921527 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14931528 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1529 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
14941530
14951531 try testRound(f128, 12.0);
14961532 comptime try testRound(f128, 12.0);
......@@ -1508,6 +1544,7 @@ test "vector integer addition" {
15081544 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15091545 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
15101546 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1547 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15111548
15121549 const S = struct {
15131550 fn doTheTest() !void {
......@@ -1528,6 +1565,7 @@ test "NaN comparison" {
15281565 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15291566 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15301567 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1568 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15311569
15321570 try testNanEqNan(f16);
15331571 try testNanEqNan(f32);
......@@ -1544,6 +1582,7 @@ test "NaN comparison f80" {
15441582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15451583 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15461584 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1585 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15471586
15481587 try testNanEqNan(f80);
15491588 comptime try testNanEqNan(f80);
......@@ -1566,6 +1605,7 @@ test "vector comparison" {
15661605 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15671606 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15681607 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1608 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15691609
15701610 const S = struct {
15711611 fn doTheTest() !void {
......@@ -1595,6 +1635,7 @@ test "signed zeros are represented properly" {
15951635 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15961636 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15971637 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1638 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
15981639
15991640 const S = struct {
16001641 fn doTheTest() !void {
......@@ -1631,6 +1672,7 @@ test "fabs" {
16311672 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16321673 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16331674 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1675 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16341676
16351677 inline for ([_]type{ f16, f32, f64, f80, f128, c_longdouble }) |T| {
16361678 // normals
......@@ -1659,6 +1701,7 @@ test "absFloat" {
16591701 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16601702 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16611703 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1704 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16621705
16631706 try testAbsFloat();
16641707 comptime try testAbsFloat();
test/behavior/maximum_minimum.zig+4
......@@ -8,6 +8,7 @@ test "@max" {
88 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
1213 const S = struct {
1314 fn doTheTest() !void {
......@@ -27,6 +28,7 @@ test "@max on vectors" {
2728 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
2829 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3032
3133 const S = struct {
3234 fn doTheTest() !void {
......@@ -54,6 +56,7 @@ test "@min" {
5456 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
5557 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5658 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5760
5861 const S = struct {
5962 fn doTheTest() !void {
......@@ -73,6 +76,7 @@ test "@min for vectors" {
7376 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7477 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7578 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7680
7781 const S = struct {
7882 fn doTheTest() !void {
test/behavior/member_func.zig+2
......@@ -30,6 +30,7 @@ test "standard field calls" {
3030 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
3131 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3232 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3334
3435 try expect(HasFuncs.one(0) == 1);
3536 try expect(HasFuncs.two(0) == 2);
......@@ -73,6 +74,7 @@ test "@field field calls" {
7374 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
7475 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7576 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7678
7779 try expect(@field(HasFuncs, "one")(0) == 1);
7880 try expect(@field(HasFuncs, "two")(0) == 2);
test/behavior/merge_error_sets.zig+2
......@@ -14,6 +14,8 @@ fn foo() C!void {
1414test "merge error sets" {
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18
1719 if (foo()) {
1820 @panic("unexpected");
1921 } else |err| switch (err) {
test/behavior/muladd.zig+9
......@@ -5,6 +5,7 @@ test "@mulAdd" {
55 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
910 comptime try testMulAdd();
1011 try testMulAdd();
......@@ -30,6 +31,7 @@ test "@mulAdd f16" {
3031 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
3132 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
34 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3335
3436 comptime try testMulAdd16();
3537 try testMulAdd16();
......@@ -47,6 +49,7 @@ test "@mulAdd f80" {
4749 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
4850 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4951 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5053 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
5154
5255 comptime try testMulAdd80();
......@@ -65,6 +68,7 @@ test "@mulAdd f128" {
6568 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6669 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6770 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6872
6973 comptime try testMulAdd128();
7074 try testMulAdd128();
......@@ -95,6 +99,7 @@ test "vector f16" {
9599 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
96100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
97101 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
98103
99104 comptime try vector16();
100105 try vector16();
......@@ -118,6 +123,7 @@ test "vector f32" {
118123 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
119124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
120125 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121127
122128 comptime try vector32();
123129 try vector32();
......@@ -141,6 +147,7 @@ test "vector f64" {
141147 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
142148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
143149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144151
145152 comptime try vector64();
146153 try vector64();
......@@ -163,6 +170,7 @@ test "vector f80" {
163170 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
164171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
165172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166174 if (builtin.zig_backend == .stage2_llvm and builtin.os.tag == .windows) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/12602
167175
168176 comptime try vector80();
......@@ -187,6 +195,7 @@ test "vector f128" {
187195 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
188196 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
189197 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
198 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
190199
191200 comptime try vector128();
192201 try vector128();
test/behavior/null.zig+8
......@@ -32,6 +32,7 @@ test "test maybe object and get a pointer to the inner value" {
3232 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
3333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3434 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
35 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3536
3637 var maybe_bool: ?bool = true;
3738
......@@ -52,6 +53,7 @@ test "maybe return" {
5253 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
5354 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5557
5658 try maybeReturnImpl();
5759 comptime try maybeReturnImpl();
......@@ -72,6 +74,7 @@ test "test null runtime" {
7274 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
7375 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7476 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7578
7679 try testTestNullRuntime(null);
7780}
......@@ -83,6 +86,7 @@ fn testTestNullRuntime(x: ?i32) !void {
8386test "optional void" {
8487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
8588 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
89 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8690
8791 try optionalVoidImpl();
8892 comptime try optionalVoidImpl();
......@@ -106,6 +110,7 @@ const Empty = struct {};
106110test "optional struct{}" {
107111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
108112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
109114
110115 _ = try optionalEmptyStructImpl();
111116 _ = comptime try optionalEmptyStructImpl();
......@@ -131,6 +136,7 @@ test "null with default unwrap" {
131136
132137test "optional pointer to 0 bit type null value at runtime" {
133138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
134140
135141 const EmptyStruct = struct {};
136142 var x: ?*EmptyStruct = null;
......@@ -141,6 +147,7 @@ test "if var maybe pointer" {
141147 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
142148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
143149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144151
145152 try expect(shouldBeAPlus1(Particle{
146153 .a = 14,
......@@ -184,6 +191,7 @@ test "unwrap optional which is field of global var" {
184191 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
185192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
186193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
187195
188196 struct_with_optional.field = null;
189197 if (struct_with_optional.field) |payload| {
test/behavior/optional.zig+22
......@@ -7,6 +7,7 @@ const expectEqualStrings = std.testing.expectEqualStrings;
77
88test "passing an optional integer as a parameter" {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
1112 const S = struct {
1213 fn entry() bool {
......@@ -25,6 +26,8 @@ test "passing an optional integer as a parameter" {
2526pub const EmptyStruct = struct {};
2627
2728test "optional pointer to size zero struct" {
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
30
2831 var e = EmptyStruct{};
2932 var o: ?*EmptyStruct = &e;
3033 try expect(o != null);
......@@ -54,6 +57,7 @@ fn testNullPtrsEql() !void {
5457test "optional with void type" {
5558 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5659 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5761
5862 const Foo = struct {
5963 x: ?void,
......@@ -66,6 +70,7 @@ test "address of unwrap optional" {
6670 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6771 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6872 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6974
7075 const S = struct {
7176 const Foo = struct {
......@@ -87,6 +92,7 @@ test "nested optional field in struct" {
8792 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8893 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8994 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9096
9197 const S2 = struct {
9298 y: u8,
......@@ -104,6 +110,7 @@ test "equality compare optional with non-optional" {
104110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
105111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
106112 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
107114
108115 try test_cmp_optional_non_optional();
109116 comptime try test_cmp_optional_non_optional();
......@@ -140,6 +147,7 @@ fn test_cmp_optional_non_optional() !void {
140147
141148test "unwrap function call with optional pointer return value" {
142149 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143151
144152 const S = struct {
145153 fn entry() !void {
......@@ -160,6 +168,7 @@ test "unwrap function call with optional pointer return value" {
160168
161169test "nested orelse" {
162170 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163172
164173 const S = struct {
165174 fn entry() !void {
......@@ -185,6 +194,7 @@ test "nested orelse" {
185194
186195test "self-referential struct through a slice of optional" {
187196 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
188198
189199 const S = struct {
190200 const Node = struct {
......@@ -220,6 +230,7 @@ test "coerce an anon struct literal to optional struct" {
220230 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
221231 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
222232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
233 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
223234
224235 const S = struct {
225236 const Struct = struct {
......@@ -239,6 +250,7 @@ test "0-bit child type coerced to optional return ptr result location" {
239250 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
240251 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
241252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
253 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242254
243255 const S = struct {
244256 fn doTheTest() !void {
......@@ -263,6 +275,7 @@ test "0-bit child type coerced to optional return ptr result location" {
263275
264276test "0-bit child type coerced to optional" {
265277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
266279
267280 const S = struct {
268281 fn doTheTest() !void {
......@@ -290,6 +303,7 @@ test "array of optional unaligned types" {
290303 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
291304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
292305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
293307
294308 const Enum = enum { one, two, three };
295309
......@@ -326,6 +340,7 @@ test "optional pointer to zero bit optional payload" {
326340 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
327341 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
328342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
329344
330345 const B = struct {
331346 fn foo(_: *@This()) void {}
......@@ -345,6 +360,7 @@ test "optional pointer to zero bit error union payload" {
345360 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
346361 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
347362 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
363 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
348364
349365 const B = struct {
350366 fn foo(_: *@This()) void {}
......@@ -377,6 +393,8 @@ const NoReturn = struct {
377393};
378394
379395test "optional of noreturn used with if" {
396 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397
380398 NoReturn.a = 64;
381399 if (NoReturn.loop()) |_| {
382400 @compileError("bad");
......@@ -386,6 +404,8 @@ test "optional of noreturn used with if" {
386404}
387405
388406test "optional of noreturn used with orelse" {
407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408
389409 NoReturn.a = 64;
390410 const val = NoReturn.testOrelse();
391411 try expect(val == 123);
......@@ -402,6 +422,7 @@ test "alignment of wrapping an optional payload" {
402422 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
403423 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
404424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
425 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
405426
406427 const S = struct {
407428 const I = extern struct { x: i128 };
......@@ -419,6 +440,7 @@ test "Optional slice size is optimized" {
419440 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
420441 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
421442 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
443 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
422444
423445 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
424446 var a: ?[]const u8 = null;
test/behavior/packed-struct.zig+10
......@@ -6,6 +6,8 @@ const expectEqual = std.testing.expectEqual;
66const native_endian = builtin.cpu.arch.endian();
77
88test "flags in packed structs" {
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10
911 const Flags1 = packed struct {
1012 // first 8 bits
1113 b0_0: u1,
......@@ -90,6 +92,8 @@ test "flags in packed structs" {
9092}
9193
9294test "consistent size of packed structs" {
95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
96
9397 const TxData1 = packed struct { data: u8, _23: u23, full: bool = false };
9498 const TxData2 = packed struct { data: u9, _22: u22, full: bool = false };
9599
......@@ -354,6 +358,7 @@ test "load pointer from packed struct" {
354358 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
355359 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
356360 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
361 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
357362
358363 const A = struct {
359364 index: u16,
......@@ -374,6 +379,7 @@ test "@ptrToInt on a packed struct field" {
374379 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
375380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
376381 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
377383
378384 const S = struct {
379385 const P = packed struct {
......@@ -394,6 +400,7 @@ test "optional pointer in packed struct" {
394400 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
395401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
396402 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
403 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397404
398405 const T = packed struct { ptr: ?*const u8 };
399406 var n: u8 = 0;
......@@ -407,6 +414,7 @@ test "nested packed struct field access test" {
407414 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
408415 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
409416 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
410418 //
411419 const Vec2 = packed struct {
412420 x: f32,
......@@ -523,6 +531,7 @@ test "runtime init of unnamed packed struct type" {
523531 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
524532 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
525533 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
534 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
526535
527536 var z: u8 = 123;
528537 try (packed struct {
......@@ -537,6 +546,7 @@ test "packed struct passed to callconv(.C) function" {
537546 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
538547 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
539548 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
549 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
540550
541551 const S = struct {
542552 const Packed = packed struct {
test/behavior/packed_struct_explicit_backing_int.zig+1
......@@ -9,6 +9,7 @@ test "packed struct explicit backing integer" {
99 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
1314 const S1 = packed struct { a: u8, b: u8, c: u8 };
1415
test/behavior/pointers.zig+21
......@@ -18,6 +18,7 @@ fn testDerefPtr() !void {
1818
1919test "pointer arithmetic" {
2020 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2122
2223 var ptr: [*]const u8 = "abcd";
2324
......@@ -49,6 +50,8 @@ fn PtrOf(comptime T: type) type {
4950}
5051
5152test "implicit cast single item pointer to C pointer and back" {
53 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
54
5255 var y: u8 = 11;
5356 var x: [*c]u8 = &y;
5457 var z: *u8 = x;
......@@ -64,6 +67,7 @@ test "initialize const optional C pointer to null" {
6467
6568test "assigning integer to C pointer" {
6669 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6771
6872 var x: i32 = 0;
6973 var y: i32 = 1;
......@@ -79,6 +83,8 @@ test "assigning integer to C pointer" {
7983}
8084
8185test "C pointer comparison and arithmetic" {
86 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
87
8288 const S = struct {
8389 fn doTheTest() !void {
8490 var ptr1: [*c]u32 = 0;
......@@ -143,6 +149,7 @@ test "peer type resolution with C pointer and const pointer" {
143149test "implicit casting between C pointer and optional non-C pointer" {
144150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
145151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
146153
147154 var slice: []const u8 = "aoeu";
148155 const opt_many_ptr: ?[*]const u8 = slice.ptr;
......@@ -157,6 +164,7 @@ test "implicit cast error unions with non-optional to optional pointer" {
157164 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
158165 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
159166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
167 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
160168
161169 const S = struct {
162170 fn doTheTest() !void {
......@@ -186,6 +194,7 @@ test "allowzero pointer and slice" {
186194 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
187195 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
188196 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
189198
190199 var ptr = @intToPtr([*]allowzero i32, 0);
191200 var opt_ptr: ?[*]allowzero i32 = ptr;
......@@ -204,6 +213,7 @@ test "assign null directly to C pointer and test null equality" {
204213 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
205214 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206215 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
216 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
207217
208218 var x: [*c]i32 = null;
209219 try expect(x == null);
......@@ -269,6 +279,7 @@ test "array initialization types" {
269279
270280test "null terminated pointer" {
271281 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
282 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
272283
273284 const S = struct {
274285 fn doTheTest() !void {
......@@ -285,6 +296,7 @@ test "null terminated pointer" {
285296
286297test "allow any sentinel" {
287298 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
299 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
288300
289301 const S = struct {
290302 fn doTheTest() !void {
......@@ -299,6 +311,7 @@ test "allow any sentinel" {
299311
300312test "pointer sentinel with enums" {
301313 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
314 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
302315
303316 const S = struct {
304317 const Number = enum {
......@@ -319,6 +332,7 @@ test "pointer sentinel with enums" {
319332test "pointer sentinel with optional element" {
320333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
321334 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
335 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
322336
323337 const S = struct {
324338 fn doTheTest() !void {
......@@ -335,6 +349,7 @@ test "pointer sentinel with +inf" {
335349 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
336350 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
337351 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
352 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
338353
339354 const S = struct {
340355 fn doTheTest() !void {
......@@ -401,6 +416,7 @@ test "indexing array with sentinel returns correct type" {
401416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
402417 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
403418 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
419 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
404420
405421 var s: [:0]const u8 = "abc";
406422 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
......@@ -408,6 +424,7 @@ test "indexing array with sentinel returns correct type" {
408424
409425test "element pointer to slice" {
410426 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
427 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411428
412429 const S = struct {
413430 fn doTheTest() !void {
......@@ -429,6 +446,7 @@ test "element pointer to slice" {
429446
430447test "element pointer arithmetic to slice" {
431448 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
449 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
432450
433451 const S = struct {
434452 fn doTheTest() !void {
......@@ -452,6 +470,8 @@ test "element pointer arithmetic to slice" {
452470}
453471
454472test "array slicing to slice" {
473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
474
455475 const S = struct {
456476 fn doTheTest() !void {
457477 var str: [5]i32 = [_]i32{ 1, 2, 3, 4, 5 };
......@@ -481,6 +501,7 @@ test "ptrCast comptime known slice to C pointer" {
481501 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
482502 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
483503 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
504 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
484505
485506 const s: [:0]const u8 = "foo";
486507 var p = @ptrCast([*c]const u8, s);
test/behavior/popcount.zig+3
......@@ -7,6 +7,7 @@ test "@popCount integers" {
77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1011
1112 comptime try testPopCountIntegers();
1213 try testPopCountIntegers();
......@@ -16,6 +17,7 @@ test "@popCount 128bit integer" {
1617 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1718 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1819 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1921
2022 comptime {
2123 try expect(@popCount(@as(u128, 0b11111111000110001100010000100001000011000011100101010001)) == 24);
......@@ -70,6 +72,7 @@ test "@popCount vectors" {
7072 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
7173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7376
7477 comptime try testPopCountVectors();
7578 try testPopCountVectors();
test/behavior/ptrcast.zig+8
......@@ -23,6 +23,7 @@ test "reinterpret an array over multiple elements, with no well-defined layout"
2323 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2627
2728 try testReinterpretWithOffsetAndNoWellDefinedLayout();
2829 comptime try testReinterpretWithOffsetAndNoWellDefinedLayout();
......@@ -38,6 +39,7 @@ fn testReinterpretWithOffsetAndNoWellDefinedLayout() !void {
3839
3940test "reinterpret bytes inside auto-layout struct as integer with nonzero offset" {
4041 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4143
4244 try testReinterpretStructWrappedBytesAsInteger();
4345 comptime try testReinterpretStructWrappedBytesAsInteger();
......@@ -56,6 +58,7 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {
5658test "reinterpret bytes of an array into an extern struct" {
5759 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
5860 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5962
6063 try testReinterpretBytesAsExternStruct();
6164 comptime try testReinterpretBytesAsExternStruct();
......@@ -126,6 +129,7 @@ test "lower reinterpreted comptime field ptr (with under-aligned fields)" {
126129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
127130 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
128131 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
129133
130134 // Test lowering a field ptr
131135 comptime var bytes align(2) = [_]u8{ 1, 2, 3, 4, 5, 6 };
......@@ -149,6 +153,7 @@ test "lower reinterpreted comptime field ptr" {
149153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
150154 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
151155 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
152157
153158 // Test lowering a field ptr
154159 comptime var bytes align(4) = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
......@@ -169,6 +174,7 @@ test "lower reinterpreted comptime field ptr" {
169174
170175test "reinterpret struct field at comptime" {
171176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
177 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
172178
173179 const numNative = comptime Bytes.init(0x12345678);
174180 if (native_endian != .Little) {
......@@ -200,6 +206,7 @@ test "comptime ptrcast keeps larger alignment" {
200206test "implicit optional pointer to optional anyopaque pointer" {
201207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
202208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
203210
204211 var buf: [4]u8 = "aoeu".*;
205212 var x: ?[*]u8 = &buf;
......@@ -211,6 +218,7 @@ test "implicit optional pointer to optional anyopaque pointer" {
211218test "@ptrCast slice to slice" {
212219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
213220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
214222
215223 const S = struct {
216224 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" {
88 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
1213 try foo(true, Num.Two, false, "aoeu");
1314 try expect(!ok);
test/behavior/reflection.zig+1
......@@ -28,6 +28,7 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
2828test "reflection: @field" {
2929 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3030 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3132
3233 var f = Foo{
3334 .one = 42,
test/behavior/saturating_arithmetic.zig+8
......@@ -8,6 +8,7 @@ test "saturating add" {
88 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
1213 const S = struct {
1314 fn doTheTest() !void {
......@@ -54,6 +55,8 @@ test "saturating add 128bit" {
5455 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
5556 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5657 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
59
5760 const S = struct {
5861 fn doTheTest() !void {
5962 try testSatAdd(i128, maxInt(i128), -maxInt(i128), 0);
......@@ -77,6 +80,7 @@ test "saturating subtraction" {
7780 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
7881 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7982 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8084
8185 const S = struct {
8286 fn doTheTest() !void {
......@@ -122,6 +126,7 @@ test "saturating subtraction 128bit" {
122126 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
123127 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
124128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
125130
126131 const S = struct {
127132 fn doTheTest() !void {
......@@ -148,6 +153,7 @@ test "saturating multiplication" {
148153 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
149154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
150155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
151157
152158 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .wasm32) {
153159 // https://github.com/ziglang/zig/issues/9660
......@@ -191,6 +197,7 @@ test "saturating shift-left" {
191197 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
192198 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
193199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
200 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
194201
195202 const S = struct {
196203 fn doTheTest() !void {
......@@ -229,6 +236,7 @@ test "saturating shl uses the LHS type" {
229236 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
230237 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
231238 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
232240
233241 const lhs_const: u8 = 1;
234242 var lhs_var: u8 = 1;
test/behavior/select.zig+2
......@@ -9,6 +9,7 @@ test "@select vectors" {
99 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
1314 comptime try selectVectors();
1415 try selectVectors();
......@@ -37,6 +38,7 @@ test "@select arrays" {
3738 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
3839 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
3940 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4042
4143 comptime try selectArrays();
4244 try selectArrays();
test/behavior/shuffle.zig+3
......@@ -9,6 +9,7 @@ test "@shuffle int" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1213
1314 const S = struct {
1415 fn doTheTest() !void {
......@@ -50,6 +51,7 @@ test "@shuffle bool 1" {
5051 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5152 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5253 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
54 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5355
5456 const S = struct {
5557 fn doTheTest() !void {
......@@ -70,6 +72,7 @@ test "@shuffle bool 2" {
7072 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7173 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7274 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7376
7477 if (builtin.zig_backend == .stage2_llvm) {
7578 // https://github.com/ziglang/zig/issues/3246
test/behavior/sizeof_and_typeof.zig+4
......@@ -76,6 +76,7 @@ const P = packed struct {
7676
7777test "@offsetOf" {
7878 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7980
8081 // Packed structs have fixed memory layout
8182 try expect(@offsetOf(P, "a") == 0);
......@@ -102,6 +103,8 @@ test "@offsetOf" {
102103}
103104
104105test "@bitOffsetOf" {
106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
107
105108 // Packed structs have fixed memory layout
106109 try expect(@bitOffsetOf(P, "a") == 0);
107110 try expect(@bitOffsetOf(P, "b") == 8);
......@@ -264,6 +267,7 @@ test "bitSizeOf comptime_int" {
264267test "runtime instructions inside typeof in comptime only scope" {
265268 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
266269 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
267271
268272 {
269273 var y: i8 = 2;
test/behavior/slice.zig+24
......@@ -29,6 +29,7 @@ comptime {
2929
3030test "slicing" {
3131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3233
3334 var array: [20]i32 = undefined;
3435
......@@ -64,6 +65,7 @@ test "comptime slice of undefined pointer of length 0" {
6465
6566test "implicitly cast array of size 0 to slice" {
6667 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6769
6870 var msg = [_]u8{};
6971 try assertLenIsZero(&msg);
......@@ -74,6 +76,8 @@ fn assertLenIsZero(msg: []const u8) !void {
7476}
7577
7678test "access len index of sentinel-terminated slice" {
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
80
7781 const S = struct {
7882 fn doTheTest() !void {
7983 var slice: [:0]const u8 = "hello";
......@@ -119,6 +123,7 @@ test "slice of type" {
119123test "generic malloc free" {
120124 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
121125 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
122127
123128 const a = memAlloc(u8, 10) catch unreachable;
124129 memFree(u8, a);
......@@ -170,6 +175,7 @@ test "comptime pointer cast array and then slice" {
170175test "slicing zero length array" {
171176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
172177 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
173179
174180 const s1 = ""[0..];
175181 const s2 = ([_]u32{})[0..];
......@@ -204,6 +210,8 @@ test "slice string literal has correct type" {
204210}
205211
206212test "result location zero sized array inside struct field implicit cast to slice" {
213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
214
207215 const E = struct {
208216 entries: []u32,
209217 };
......@@ -214,6 +222,7 @@ test "result location zero sized array inside struct field implicit cast to slic
214222test "runtime safety lets us slice from len..len" {
215223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
216224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217226
218227 var an_array = [_]u8{ 1, 2, 3 };
219228 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 {
225234
226235test "C pointer" {
227236 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
228238
229239 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
230240 var len: u32 = 10;
......@@ -236,6 +246,7 @@ test "C pointer slice access" {
236246 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
237247 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
238248 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
249 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
239250
240251 var buf: [10]u32 = [1]u32{42} ** 10;
241252 const c_ptr = @ptrCast([*c]const u32, &buf);
......@@ -264,6 +275,7 @@ fn sliceSum(comptime q: []const u8) i32 {
264275
265276test "slice type with custom alignment" {
266277 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
267279
268280 const LazilyResolvedType = struct {
269281 anything: i32,
......@@ -277,6 +289,7 @@ test "slice type with custom alignment" {
277289
278290test "obtaining a null terminated slice" {
279291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
280293
281294 // here we have a normal array
282295 var buf: [50]u8 = undefined;
......@@ -318,6 +331,7 @@ test "empty array to slice" {
318331
319332test "@ptrCast slice to pointer" {
320333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
321335
322336 const S = struct {
323337 fn doTheTest() !void {
......@@ -336,6 +350,7 @@ test "slice syntax resulting in pointer-to-array" {
336350 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
337351 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
338352 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
353 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
339354
340355 const S = struct {
341356 fn doTheTest() !void {
......@@ -469,6 +484,7 @@ test "slice syntax resulting in pointer-to-array" {
469484test "slice pointer-to-array null terminated" {
470485 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
471486 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
487 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
472488
473489 comptime {
474490 var array = [5:0]u8{ 1, 2, 3, 4, 5 };
......@@ -487,6 +503,7 @@ test "slice pointer-to-array null terminated" {
487503
488504test "slice pointer-to-array zero length" {
489505 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
490507
491508 comptime {
492509 {
......@@ -521,6 +538,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {
521538 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
522539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
523540 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
541 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
524542
525543 const S = struct {
526544 const U = union {
......@@ -573,6 +591,7 @@ test "array mult of slice gives ptr to array" {
573591
574592test "slice bounds in comptime concatenation" {
575593 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
594 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
576595
577596 const bs = comptime blk: {
578597 const b = "........1........";
......@@ -607,6 +626,7 @@ test "slice sentinel access at comptime" {
607626
608627test "slicing array with sentinel as end index" {
609628 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
629 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
610630
611631 const S = struct {
612632 fn do() !void {
......@@ -624,6 +644,7 @@ test "slicing array with sentinel as end index" {
624644
625645test "slicing slice with sentinel as end index" {
626646 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
627648
628649 const S = struct {
629650 fn do() !void {
......@@ -664,6 +685,8 @@ test "slice field ptr const" {
664685}
665686
666687test "slice field ptr var" {
688 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
689
667690 var var_slice: []const u8 = "string";
668691
669692 var var_ptr_var_slice = &var_slice;
......@@ -679,6 +702,7 @@ test "global slice field access" {
679702 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
680703 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
681704 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
705 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
682706
683707 const S = struct {
684708 var slice: []const u8 = undefined;
test/behavior/src.zig+1
......@@ -16,6 +16,7 @@ const expect = std.testing.expect;
1616test "@src" {
1717 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1920 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2021
2122 try doTheTest();
test/behavior/struct.zig+11
......@@ -66,6 +66,8 @@ const SmallStruct = struct {
6666};
6767
6868test "lower unnamed constants" {
69 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
70
6971 var foo = SmallStruct{ .a = 1, .b = 255 };
7072 try expect(foo.first() == 1);
7173 try expect(foo.second() == 255);
......@@ -170,12 +172,16 @@ const MemberFnTestFoo = struct {
170172};
171173
172174test "call member function directly" {
175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176
173177 const instance = MemberFnTestFoo{ .x = 1234 };
174178 const result = MemberFnTestFoo.member(instance);
175179 try expect(result == 1234);
176180}
177181
178182test "store member function in variable" {
183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
184
179185 const instance = MemberFnTestFoo{ .x = 1234 };
180186 const memberFn = MemberFnTestFoo.member;
181187 const result = memberFn(instance);
......@@ -782,6 +788,7 @@ test "packed struct with fp fields" {
782788test "fn with C calling convention returns struct by value" {
783789 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
784790 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
791 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
785792
786793 const S = struct {
787794 fn entry() !void {
......@@ -807,6 +814,7 @@ test "non-packed struct with u128 entry in union" {
807814 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
808815 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
809816 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
817 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
810818
811819 const U = union(enum) {
812820 Num: u128,
......@@ -853,6 +861,7 @@ test "packed struct field passed to generic function" {
853861
854862test "anonymous struct literal syntax" {
855863 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
856865
857866 const S = struct {
858867 const Point = struct {
......@@ -959,6 +968,7 @@ test "tuple element initialized with fn call" {
959968test "struct with union field" {
960969 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
961970 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
971 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
962972
963973 const Value = struct {
964974 ref: u32 = 2,
......@@ -1331,6 +1341,7 @@ test "under-aligned struct field" {
13311341 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13321342 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13331343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13341345
13351346 const U = extern union {
13361347 fd: i32,
test/behavior/struct_contains_null_ptr_itself.zig+2
......@@ -5,6 +5,8 @@ const builtin = @import("builtin");
55test "struct contains null pointer which contains original struct" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9
810 var x: ?*NodeLineComment = null;
911 try expect(x == null);
1012}
test/behavior/struct_contains_slice_of_itself.zig+2
......@@ -13,6 +13,7 @@ const NodeAligned = struct {
1313
1414test "struct contains slice of itself" {
1515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1617
1718 var other_nodes = [_]Node{
1819 Node{
......@@ -52,6 +53,7 @@ test "struct contains slice of itself" {
5253
5354test "struct contains aligned slice of itself" {
5455 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5557
5658 var other_nodes = [_]NodeAligned{
5759 NodeAligned{
test/behavior/switch.zig+37
......@@ -5,6 +5,8 @@ const expectError = std.testing.expectError;
55const expectEqual = std.testing.expectEqual;
66
77test "switch with numbers" {
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9
810 try testSwitchWithNumbers(13);
911}
1012
......@@ -18,6 +20,8 @@ fn testSwitchWithNumbers(x: u32) !void {
1820}
1921
2022test "switch with all ranges" {
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24
2125 try expect(testSwitchWithAllRanges(50, 3) == 1);
2226 try expect(testSwitchWithAllRanges(101, 0) == 2);
2327 try expect(testSwitchWithAllRanges(300, 5) == 3);
......@@ -49,6 +53,8 @@ test "implicit comptime switch" {
4953}
5054
5155test "switch on enum" {
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
57
5258 const fruit = Fruit.Orange;
5359 nonConstSwitchOnEnum(fruit);
5460}
......@@ -66,6 +72,8 @@ fn nonConstSwitchOnEnum(fruit: Fruit) void {
6672}
6773
6874test "switch statement" {
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76
6977 try nonConstSwitch(SwitchStatementFoo.C);
7078}
7179fn nonConstSwitch(foo: SwitchStatementFoo) !void {
......@@ -81,6 +89,7 @@ const SwitchStatementFoo = enum { A, B, C, D };
8189
8290test "switch with multiple expressions" {
8391 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8493
8594 const x = switch (returnsFive()) {
8695 1, 2, 3 => 1,
......@@ -94,6 +103,8 @@ fn returnsFive() i32 {
94103}
95104
96105test "switch on type" {
106 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
107
97108 try expect(trueIfBoolFalseOtherwise(bool));
98109 try expect(!trueIfBoolFalseOtherwise(i32));
99110}
......@@ -106,6 +117,8 @@ fn trueIfBoolFalseOtherwise(comptime T: type) bool {
106117}
107118
108119test "switching on booleans" {
120 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
121
109122 try testSwitchOnBools();
110123 comptime try testSwitchOnBools();
111124}
......@@ -157,6 +170,8 @@ test "undefined.u0" {
157170}
158171
159172test "switch with disjoint range" {
173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174
160175 var q: u8 = 0;
161176 switch (q) {
162177 0...125 => {},
......@@ -199,6 +214,8 @@ fn poll() void {
199214}
200215
201216test "switch on global mutable var isn't constant-folded" {
217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
218
202219 while (state < 2) {
203220 poll();
204221 }
......@@ -214,6 +231,7 @@ test "switch prong with variable" {
214231 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
215232 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
216233 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
234 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
217235
218236 try switchProngWithVarFn(SwitchProngWithVarEnum{ .One = 13 });
219237 try switchProngWithVarFn(SwitchProngWithVarEnum{ .Two = 13.0 });
......@@ -237,6 +255,7 @@ fn switchProngWithVarFn(a: SwitchProngWithVarEnum) !void {
237255test "switch on enum using pointer capture" {
238256 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
239257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
258 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
240259
241260 try testSwitchEnumPtrCapture();
242261 comptime try testSwitchEnumPtrCapture();
......@@ -256,6 +275,7 @@ fn testSwitchEnumPtrCapture() !void {
256275
257276test "switch handles all cases of number" {
258277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
259279
260280 try testSwitchHandleAllCases();
261281 comptime try testSwitchHandleAllCases();
......@@ -296,6 +316,7 @@ fn testSwitchHandleAllCasesRange(x: u8) u8 {
296316test "switch on union with some prongs capturing" {
297317 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
298318 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
319 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
299320
300321 const X = union(enum) {
301322 a,
......@@ -331,6 +352,7 @@ test "switch on const enum with var" {
331352
332353test "anon enum literal used in switch on union enum" {
333354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
334356
335357 const Foo = union(enum) {
336358 a: i32,
......@@ -345,6 +367,8 @@ test "anon enum literal used in switch on union enum" {
345367}
346368
347369test "switch all prongs unreachable" {
370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
371
348372 try testAllProngsUnreachable();
349373 comptime try testAllProngsUnreachable();
350374}
......@@ -367,6 +391,7 @@ fn switchWithUnreachable(x: i32) i32 {
367391
368392test "capture value of switch with all unreachable prongs" {
369393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
370395
371396 const x = return_a_number() catch |err| switch (err) {
372397 else => unreachable,
......@@ -380,6 +405,7 @@ fn return_a_number() anyerror!i32 {
380405
381406test "switch on integer with else capturing expr" {
382407 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
383409
384410 const S = struct {
385411 fn doTheTest() !void {
......@@ -399,6 +425,7 @@ test "else prong of switch on error set excludes other cases" {
399425 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
400426 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
401427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
428 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
402429
403430 const S = struct {
404431 fn doTheTest() !void {
......@@ -433,6 +460,7 @@ test "switch prongs with error set cases make a new error set type for capture v
433460 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
434461 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
435462 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
463 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
436464
437465 const S = struct {
438466 fn doTheTest() !void {
......@@ -467,6 +495,7 @@ test "switch prongs with error set cases make a new error set type for capture v
467495
468496test "return result loc and then switch with range implicit casted to error union" {
469497 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
498 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
470499
471500 const S = struct {
472501 fn doTheTest() !void {
......@@ -487,6 +516,7 @@ test "switch with null and T peer types and inferred result location type" {
487516 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
488517 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
489518 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
519 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
490520
491521 const S = struct {
492522 fn doTheTest(c: u8) !void {
......@@ -507,6 +537,7 @@ test "switch prongs with cases with identical payload types" {
507537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
508538 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
509539 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
510541
511542 const Union = union(enum) {
512543 A: usize,
......@@ -550,6 +581,7 @@ test "switch prongs with cases with identical payload types" {
550581test "switch on pointer type" {
551582 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
552583 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
584 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
553585
554586 const S = struct {
555587 const X = struct {
......@@ -597,6 +629,7 @@ test "switch capture copies its payload" {
597629 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
598630 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
599631 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
632 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
600633
601634 const S = struct {
602635 fn doTheTest() !void {
......@@ -619,6 +652,8 @@ test "switch capture copies its payload" {
619652}
620653
621654test "capture of integer forwards the switch condition directly" {
655 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
656
622657 const S = struct {
623658 fn foo(x: u8) !void {
624659 switch (x) {
......@@ -638,6 +673,8 @@ test "capture of integer forwards the switch condition directly" {
638673}
639674
640675test "enum value without tag name used as switch item" {
676 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
677
641678 const E = enum(u32) {
642679 a = 1,
643680 b = 2,
test/behavior/switch_prong_err_enum.zig+2
......@@ -24,6 +24,8 @@ test "switch prong returns error enum" {
2424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2626 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
28
2729 switch (doThing(17) catch unreachable) {
2830 FormValue.Address => |payload| {
2931 try expect(payload == 1);
test/behavior/switch_prong_implicit_cast.zig+2
......@@ -18,6 +18,8 @@ test "switch prong implicit cast" {
1818 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1919 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2020 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
21 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22
2123 const result = switch (foo(2) catch unreachable) {
2224 FormValue.One => false,
2325 FormValue.Two => |x| x,
test/behavior/this.zig+1
......@@ -26,6 +26,7 @@ test "this refer to module call private fn" {
2626
2727test "this refer to container" {
2828 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2930
3031 var pt: Point(i32) = undefined;
3132 pt.x = 12;
test/behavior/threadlocal.zig+3
......@@ -9,6 +9,7 @@ test "thread local variable" {
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO
1111 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
1314 const S = struct {
1415 threadlocal var t: i32 = 1234;
......@@ -24,6 +25,7 @@ test "pointer to thread local array" {
2425 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2526 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO
2627 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
2830 const s = "Hello world";
2931 std.mem.copy(u8, buffer[0..], s);
......@@ -39,6 +41,7 @@ test "reference a global threadlocal variable" {
3941 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4042 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch != .x86_64) return error.SkipZigTest; // TODO
4143 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
4346 _ = nrfx_uart_rx(&g_uart0);
4447}
test/behavior/translate_c_macros.zig+16
......@@ -8,6 +8,8 @@ const h = @cImport(@cInclude("behavior/translate_c_macros.h"));
88const latin1 = @cImport(@cInclude("behavior/translate_c_macros_not_utf8.h"));
99
1010test "casting to void with a macro" {
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12
1113 h.IGNORE_ME_1(42);
1214 h.IGNORE_ME_2(42);
1315 h.IGNORE_ME_3(42);
......@@ -24,6 +26,7 @@ test "initializer list expression" {
2426 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2628 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
29 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2730
2831 try expectEqual(h.Color{
2932 .r = 200,
......@@ -35,12 +38,15 @@ test "initializer list expression" {
3538
3639test "sizeof in macros" {
3740 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3842
3943 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF(u32));
4044 try expect(@as(c_int, @sizeOf(u32)) == h.MY_SIZEOF2(u32));
4145}
4246
4347test "reference to a struct type" {
48 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
49
4450 try expect(@sizeOf(h.struct_Foo) == h.SIZE_OF_FOO);
4551}
4652
......@@ -49,6 +55,7 @@ test "cast negative integer to pointer" {
4955 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
5056 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5157 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5259
5360 try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);
5461}
......@@ -58,6 +65,7 @@ test "casting to union with a macro" {
5865 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
5966 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6067 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6169
6270 const l: c_long = 42;
6371 const d: f64 = 2.0;
......@@ -74,6 +82,7 @@ test "casting or calling a value with a paren-surrounded macro" {
7482 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
7583 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7684 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7786
7887 const l: c_long = 42;
7988 const casted = h.CAST_OR_CALL_WITH_PARENS(c_int, l);
......@@ -93,6 +102,7 @@ test "nested comma operator" {
93102 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
94103 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
95104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
96106
97107 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR);
98108 try expectEqual(@as(c_int, 3), h.NESTED_COMMA_OPERATOR_LHS);
......@@ -103,6 +113,7 @@ test "cast functions" {
103113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
104114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
105115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
106117
107118 const S = struct {
108119 fn foo() void {}
......@@ -116,6 +127,7 @@ test "large integer macro" {
116127 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
117128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
118129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
130 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
119131
120132 try expectEqual(@as(c_ulonglong, 18446744073709550592), h.LARGE_INT);
121133}
......@@ -125,6 +137,7 @@ test "string literal macro with embedded tab character" {
125137 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
126138 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
127139 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
128141
129142 try expectEqualStrings("hello\t", h.EMBEDDED_TAB);
130143}
......@@ -134,6 +147,7 @@ test "string and char literals that are not UTF-8 encoded. Issue #12784" {
134147 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
135148 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
136149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
150 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
137151
138152 try expectEqual(@as(u8, '\xA9'), latin1.UNPRINTABLE_CHAR);
139153 try expectEqualStrings("\xA9\xA9\xA9", latin1.UNPRINTABLE_STRING);
......@@ -144,6 +158,7 @@ test "Macro that uses division operator. Issue #13162" {
144158 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
145159 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
146160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
147162
148163 try expectEqual(@as(c_int, 42), h.DIVIDE_CONSTANT(@as(c_int, 42_000)));
149164 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" {
177192 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
178193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
179194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
180196
181197 try expectEqual(@as(c_int, 2_010), h.REMAINDER_CONSTANT(@as(c_int, 42_010)));
182198 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" {
6565 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
6666 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
6767 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
68 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6869
6970 const S = struct {
7071 fn doTheTest() !void {
test/behavior/try.zig+1
......@@ -4,6 +4,7 @@ const expect = std.testing.expect;
44
55test "try on error union" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
78
89 try tryOnErrorUnionImpl();
910 comptime try tryOnErrorUnionImpl();
test/behavior/tuple.zig+7
......@@ -6,6 +6,7 @@ const expect = testing.expect;
66test "tuple concatenation" {
77 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910
1011 const S = struct {
1112 fn doTheTest() !void {
......@@ -48,6 +49,7 @@ test "tuple multiplication" {
4849test "more tuple concatenation" {
4950 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5051 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5153
5254 const T = struct {
5355 fn consume_tuple(tuple: anytype, len: usize) !void {
......@@ -124,6 +126,7 @@ test "tuple initializer for var" {
124126test "array-like initializer for tuple types" {
125127 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
126128 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127130
128131 const T = @Type(.{
129132 .Struct = .{
......@@ -208,6 +211,7 @@ test "fieldParentPtr of tuple" {
208211 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
209212 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
210213 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
214 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
211215
212216 var x: u32 = 0;
213217 const tuple = .{ x, x };
......@@ -218,6 +222,7 @@ test "fieldParentPtr of anon struct" {
218222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
219223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
220224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
221226
222227 var x: u32 = 0;
223228 const anon_st = .{ .foo = x, .bar = x };
......@@ -258,6 +263,7 @@ test "tuple in tuple passed to generic function" {
258263 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
259264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
260265 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
261267
262268 const S = struct {
263269 fn pair(x: f32, y: f32) std.meta.Tuple(&.{ f32, f32 }) {
......@@ -277,6 +283,7 @@ test "coerce tuple to tuple" {
277283 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
278284 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
279285 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
286 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
280287
281288 const T = std.meta.Tuple(&.{u8});
282289 const S = struct {
test/behavior/type.zig+2
......@@ -203,6 +203,7 @@ test "Type.Opaque" {
203203 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
204204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
205205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206207
207208 const Opaque = @Type(.{
208209 .Opaque = .{
......@@ -261,6 +262,7 @@ test "Type.Struct" {
261262 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
262263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
263264 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
265 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
264266
265267 const A = @Type(@typeInfo(struct { x: u8, y: u32 }));
266268 const infoA = @typeInfo(A).Struct;
test/behavior/type_info.zig+7
......@@ -160,6 +160,7 @@ test "type info: error set, error union info, anyerror" {
160160 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
161161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
162162 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
163164
164165 try testErrorSet();
165166 comptime try testErrorSet();
......@@ -191,6 +192,7 @@ test "type info: error set single value" {
191192 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
193194 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
194196
195197 const TestSet = error.One;
196198
......@@ -204,6 +206,7 @@ test "type info: error set merged" {
204206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
205207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206208 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
207210
208211 const TestSet = error{ One, Two } || error{Three};
209212
......@@ -219,6 +222,7 @@ test "type info: enum info" {
219222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
220223 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
221224 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222226
223227 try testEnum();
224228 comptime try testEnum();
......@@ -282,6 +286,7 @@ fn testUnion() !void {
282286
283287test "type info: struct info" {
284288 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
285290
286291 try testStruct();
287292 comptime try testStruct();
......@@ -508,6 +513,7 @@ test "type info for async frames" {
508513test "Declarations are returned in declaration order" {
509514 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
510515 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
516 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
511517
512518 const S = struct {
513519 const a = 1;
......@@ -531,6 +537,7 @@ test "Struct.is_tuple for anon list literal" {
531537test "Struct.is_tuple for anon struct literal" {
532538 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
533539 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
534541
535542 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
536543 try expect(!info.Struct.is_tuple);
test/behavior/typename.zig+8
......@@ -15,6 +15,7 @@ test "anon fn param" {
1515 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
18 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1819
1920 // https://github.com/ziglang/zig/issues/9339
2021 try expectEqualStringsIgnoreDigits(
......@@ -40,6 +41,7 @@ test "anon field init" {
4041 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
4142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4243 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4345
4446 const Foo = .{
4547 .T1 = struct {},
......@@ -65,6 +67,7 @@ test "basic" {
6567 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6668 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6769 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
70 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6871
6972 try expectEqualStrings(@typeName(i64), "i64");
7073 try expectEqualStrings(@typeName(*usize), "*usize");
......@@ -75,6 +78,7 @@ test "top level decl" {
7578 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
7679 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7780 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
81 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7882
7983 try expectEqualStrings(
8084 "behavior.typename.A_Struct",
......@@ -124,6 +128,7 @@ test "fn param" {
124128 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
125129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
126130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127132
128133 // https://github.com/ziglang/zig/issues/675
129134 try expectEqualStrings(
......@@ -194,6 +199,7 @@ test "local variable" {
194199 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
195200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
196201 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
202 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
197203
198204 const Foo = struct { a: u32 };
199205 const Bar = union { a: u32 };
......@@ -212,6 +218,7 @@ test "comptime parameters not converted to anytype in function type" {
212218 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
213219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
214220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215222
216223 const T = fn (fn (type) void, void) void;
217224 try expectEqualStrings("fn(comptime fn(comptime type) void, void) void", @typeName(T));
......@@ -221,6 +228,7 @@ test "anon name strategy used in sub expression" {
221228 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
222229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
223230 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224232
225233 const S = struct {
226234 fn getTheName() []const u8 {
test/behavior/undefined.zig+4
......@@ -17,6 +17,7 @@ test "init static array to undefined" {
1717 // C backend does not yet support returning arrays, so it fails
1818 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1919 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
20 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2021
2122 try expect(static_array[0] == 1);
2223 try expect(static_array[4] == 2);
......@@ -46,6 +47,7 @@ fn setFooX(foo: *Foo) void {
4647test "assign undefined to struct" {
4748 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
4849 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4951
5052 comptime {
5153 var foo: Foo = undefined;
......@@ -62,6 +64,7 @@ test "assign undefined to struct" {
6264test "assign undefined to struct with method" {
6365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
6466 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6568
6669 comptime {
6770 var foo: Foo = undefined;
......@@ -77,6 +80,7 @@ test "assign undefined to struct with method" {
7780
7881test "type name of undefined" {
7982 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8084
8185 const x = undefined;
8286 try expect(mem.eql(u8, @typeName(@TypeOf(x)), "@TypeOf(undefined)"));
test/behavior/underscore.zig+1
......@@ -8,6 +8,7 @@ test "ignore lval with underscore" {
88
99test "ignore lval with underscore (while loop)" {
1010 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
1213 while (optionalReturnError()) |_| {
1314 while (optionalReturnError()) |_| {
test/behavior/union.zig+54
......@@ -14,6 +14,7 @@ test "basic unions with floats" {
1414 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1718
1819 var foo = FooWithFloats{ .int = 1 };
1920 try expect(foo.int == 1);
......@@ -29,6 +30,7 @@ test "init union with runtime value - floats" {
2930 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
3031 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3234
3335 var foo: FooWithFloats = undefined;
3436
......@@ -39,6 +41,7 @@ test "init union with runtime value - floats" {
3941test "basic unions" {
4042 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
4143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4245
4346 var foo = Foo{ .int = 1 };
4447 try expect(foo.int == 1);
......@@ -56,6 +59,7 @@ const Foo = union {
5659test "init union with runtime value" {
5760 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5861 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5963
6064 var foo: Foo = undefined;
6165
......@@ -93,6 +97,7 @@ const FooExtern = extern union {
9397
9498test "basic extern unions" {
9599 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
100 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
96101
97102 var foo = FooExtern{ .int = 1 };
98103 try expect(foo.int == 1);
......@@ -163,6 +168,7 @@ test "access a member of tagged union with conflicting enum tag name" {
163168test "constant tagged union with payload" {
164169 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
165170 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
171 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
166172
167173 var empty = TaggedUnionWithPayload{ .Empty = {} };
168174 var full = TaggedUnionWithPayload{ .Full = 13 };
......@@ -212,6 +218,7 @@ test "union with specified enum tag" {
212218 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
213219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
214220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
215222
216223 try doTest();
217224 comptime try doTest();
......@@ -221,6 +228,7 @@ test "packed union generates correctly aligned type" {
221228 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
222229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
223230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224232
225233 const U = packed union {
226234 f1: *const fn () error{TestUnexpectedResult}!void,
......@@ -259,6 +267,7 @@ fn testComparison() !void {
259267test "comparison between union and enum literal" {
260268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
261269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
270 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262271
263272 try testComparison();
264273 comptime try testComparison();
......@@ -273,6 +282,7 @@ const TheUnion = union(TheTag) {
273282test "cast union to tag type of union" {
274283 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
275284 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
285 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
276286
277287 try testCastUnionToTag();
278288 comptime try testCastUnionToTag();
......@@ -292,6 +302,7 @@ test "union field access gives the enum values" {
292302test "cast tag type of union to union" {
293303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
294304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
305 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
295306
296307 var x: Value2 = Letter2.B;
297308 try expect(@as(Letter2, x) == Letter2.B);
......@@ -306,6 +317,7 @@ const Value2 = union(Letter2) {
306317test "implicit cast union to its tag type" {
307318 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
308319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
309321
310322 var x: Value2 = Letter2.B;
311323 try expect(x == Letter2.B);
......@@ -325,6 +337,7 @@ pub const PackThis = union(enum) {
325337test "constant packed union" {
326338 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
327339 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
340 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
328341
329342 try testConstPackedUnion(&[_]PackThis{PackThis{ .StringLiteral = 1 }});
330343}
......@@ -343,6 +356,7 @@ test "simple union(enum(u32))" {
343356 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
344357 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
345358 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
359 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
346360
347361 var x = MultipleChoice.C;
348362 try expect(x == MultipleChoice.C);
......@@ -368,6 +382,7 @@ test "tagged union initialization with runtime void" {
368382 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
369383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
370384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
371386
372387 try expect(testTaggedUnionInit({}));
373388}
......@@ -388,6 +403,7 @@ test "tagged union with no payloads" {
388403 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
389404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
390405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
391407
392408 const a = UnionEnumNoPayloads{ .B = {} };
393409 switch (a) {
......@@ -398,6 +414,7 @@ test "tagged union with no payloads" {
398414
399415test "union with only 1 field casted to its enum type" {
400416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
417 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
401418
402419 const Literal = union(enum) {
403420 Number: f64,
......@@ -434,6 +451,7 @@ test "global union with single field is correctly initialized" {
434451 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
435452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
436453 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
454 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
437455
438456 glbl = Foo1{
439457 .f = @typeInfo(Foo1).Union.fields[0].field_type{ .x = 123 },
......@@ -452,6 +470,7 @@ test "initialize global array of union" {
452470 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
453471 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
454472 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
473 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
455474
456475 glbl_array[1] = FooUnion{ .U1 = 2 };
457476 glbl_array[0] = FooUnion{ .U0 = 1 };
......@@ -462,6 +481,7 @@ test "initialize global array of union" {
462481test "update the tag value for zero-sized unions" {
463482 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
464483 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
484 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
465485
466486 const S = union(enum) {
467487 U0: void,
......@@ -478,6 +498,7 @@ test "union initializer generates padding only if needed" {
478498 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
479499 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
480500 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
481502
482503 const U = union(enum) {
483504 A: u24,
......@@ -489,6 +510,7 @@ test "union initializer generates padding only if needed" {
489510
490511test "runtime tag name with single field" {
491512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
513 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
492514
493515 const U = union(enum) {
494516 A: i32,
......@@ -501,6 +523,7 @@ test "runtime tag name with single field" {
501523test "method call on an empty union" {
502524 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
503525 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
526 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
504527
505528 const S = struct {
506529 const MyUnion = union(MyUnionTag) {
......@@ -541,6 +564,7 @@ const Baz = enum { A, B, C, D };
541564test "tagged union type" {
542565 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
543566 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
544568
545569 const foo1 = TaggedFoo{ .One = 13 };
546570 const foo2 = TaggedFoo{
......@@ -563,6 +587,7 @@ test "tagged union type" {
563587test "tagged union as return value" {
564588 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
565589 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
590 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
566591
567592 switch (returnAnInt(13)) {
568593 TaggedFoo.One => |value| try expect(value == 13),
......@@ -578,6 +603,7 @@ test "tagged union with all void fields but a meaningful tag" {
578603 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
579604 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
580605 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
606 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
581607
582608 const S = struct {
583609 const B = union(enum) {
......@@ -606,6 +632,7 @@ test "union(enum(u32)) with specified and unspecified tag values" {
606632 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
607633 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
608634 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
635 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
609636
610637 comptime try expect(Tag(Tag(MultipleChoice2)) == u32);
611638 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
......@@ -642,6 +669,7 @@ fn testEnumWithSpecifiedAndUnspecifiedTagValues(x: MultipleChoice2) !void {
642669test "switch on union with only 1 field" {
643670 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
644671 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
672 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
645673
646674 var r: PartialInst = undefined;
647675 r = PartialInst.Compiled;
......@@ -670,6 +698,7 @@ const PartialInstWithPayload = union(enum) {
670698
671699test "union with only 1 field casted to its enum type which has enum value specified" {
672700 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
701 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
673702
674703 const Literal = union(enum) {
675704 Number: f64,
......@@ -695,6 +724,7 @@ test "union with only 1 field casted to its enum type which has enum value speci
695724test "@enumToInt works on unions" {
696725 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
697726 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
727 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
698728
699729 const Bar = union(enum) {
700730 A: bool,
......@@ -754,6 +784,7 @@ test "return union init with void payload" {
754784 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
755785 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
756786 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
787 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
757788
758789 const S = struct {
759790 fn entry() !void {
......@@ -779,6 +810,7 @@ test "@unionInit stored to a const" {
779810 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
780811 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
781812 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
813 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
782814
783815 const S = struct {
784816 const U = union(enum) {
......@@ -806,6 +838,7 @@ test "@unionInit stored to a const" {
806838test "@unionInit can modify a union type" {
807839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
808840 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
841 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
809842
810843 const UnionInitEnum = union(enum) {
811844 Boolean: bool,
......@@ -828,6 +861,7 @@ test "@unionInit can modify a union type" {
828861test "@unionInit can modify a pointer value" {
829862 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
830863 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
864 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
831865
832866 const UnionInitEnum = union(enum) {
833867 Boolean: bool,
......@@ -847,6 +881,7 @@ test "@unionInit can modify a pointer value" {
847881test "union no tag with struct member" {
848882 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
849883 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
884 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
850885
851886 const Struct = struct {};
852887 const Union = union {
......@@ -882,6 +917,7 @@ test "anonymous union literal syntax" {
882917 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
883918 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
884919 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
920 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
885921
886922 const S = struct {
887923 const Number = union {
......@@ -907,6 +943,7 @@ test "anonymous union literal syntax" {
907943test "function call result coerces from tagged union to the tag" {
908944 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
909945 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
946 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910947
911948 const S = struct {
912949 const Arch = union(enum) {
......@@ -941,6 +978,7 @@ test "cast from anonymous struct to union" {
941978 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
942979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
943980 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
981 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
944982
945983 const S = struct {
946984 const U = union(enum) {
......@@ -973,6 +1011,7 @@ test "cast from pointer to anonymous struct to pointer to union" {
9731011 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9741012 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9751013 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1014 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9761015
9771016 const S = struct {
9781017 const U = union(enum) {
......@@ -1003,6 +1042,7 @@ test "cast from pointer to anonymous struct to pointer to union" {
10031042test "switching on non exhaustive union" {
10041043 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10051044 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1045 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10061046
10071047 const S = struct {
10081048 const E = enum(u8) {
......@@ -1029,6 +1069,7 @@ test "switching on non exhaustive union" {
10291069test "containers with single-field enums" {
10301070 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10311071 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1072 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10321073
10331074 const S = struct {
10341075 const A = union(enum) { f1 };
......@@ -1058,6 +1099,7 @@ test "@unionInit on union with tag but no fields" {
10581099 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10591100 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10601101 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1102 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10611103
10621104 const S = struct {
10631105 const Type = enum(u8) { no_op = 105 };
......@@ -1106,6 +1148,7 @@ test "global variable struct contains union initialized to non-most-aligned fiel
11061148 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11071149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11081150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1151 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11091152
11101153 const T = struct {
11111154 const U = union(enum) {
......@@ -1132,6 +1175,7 @@ test "union with no result loc initiated with a runtime value" {
11321175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11331176 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11341177 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11351179
11361180 const U = union {
11371181 a: u32,
......@@ -1148,6 +1192,7 @@ test "union with a large struct field" {
11481192 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11491193 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11501194 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11511196
11521197 const S = struct {
11531198 a: [8]usize,
......@@ -1180,6 +1225,7 @@ test "comptime equality of extern unions with same tag" {
11801225test "union tag is set when initiated as a temporary value at runtime" {
11811226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11821227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11831229
11841230 const U = union(enum) {
11851231 a,
......@@ -1198,6 +1244,7 @@ test "extern union most-aligned field is smaller" {
11981244 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11991245 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12001246 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1247 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12011248
12021249 const U = extern union {
12031250 in6: extern struct {
......@@ -1216,6 +1263,7 @@ test "return an extern union from C calling convention" {
12161263 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12171264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12181265 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1266 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12191267
12201268 const namespace = struct {
12211269 const S = extern struct {
......@@ -1246,6 +1294,7 @@ test "noreturn field in union" {
12461294 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12471295 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12481296 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1297 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12491298
12501299 const U = union(enum) {
12511300 a: u32,
......@@ -1296,6 +1345,7 @@ test "noreturn field in union" {
12961345test "union and enum field order doesn't match" {
12971346 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12981347 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1348 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12991349
13001350 const MyTag = enum(u32) {
13011351 b = 1337,
......@@ -1321,6 +1371,7 @@ test "@unionInit uses tag value instead of field index" {
13211371 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13221372 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13231373 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13241375
13251376 const E = enum(u8) {
13261377 b = 255,
......@@ -1346,6 +1397,7 @@ test "@unionInit uses tag value instead of field index" {
13461397test "union field ptr - zero sized payload" {
13471398 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13481399 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1400 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13491401
13501402 const U = union {
13511403 foo: void,
......@@ -1359,6 +1411,7 @@ test "union field ptr - zero sized payload" {
13591411test "union field ptr - zero sized field" {
13601412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13611413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13621415
13631416 const U = union {
13641417 foo: void,
......@@ -1374,6 +1427,7 @@ test "packed union in packed struct" {
13741427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13751428 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13761429 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1430 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
13771431
13781432 const S = packed struct {
13791433 nested: packed union {
test/behavior/union_with_members.zig+1
......@@ -21,6 +21,7 @@ test "enum with members" {
2121 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2222 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2425
2526 const a = ET{ .SINT = -42 };
2627 const b = ET{ .UINT = 42 };
test/behavior/usingnamespace.zig+3
......@@ -38,6 +38,7 @@ test "usingnamespace does not redeclare an imported variable" {
3838usingnamespace @import("usingnamespace/foo.zig");
3939test "usingnamespace omits mixing in private functions" {
4040 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4142
4243 try expect(@This().privateFunction());
4344 try expect(!@This().printText());
......@@ -53,12 +54,14 @@ test {
5354usingnamespace @import("usingnamespace/a.zig");
5455test "two files usingnamespace import each other" {
5556 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5658
5759 try expect(@This().ok());
5860}
5961
6062test {
6163 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6265
6366 const AA = struct {
6467 x: i32,
test/behavior/usingnamespace/import_segregation.zig+3
......@@ -1,9 +1,12 @@
11const expect = @import("std").testing.expect;
2const builtin = @import("builtin");
23
34usingnamespace @import("foo.zig");
45usingnamespace @import("bar.zig");
56
67test "no clobbering happened" {
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9
710 @This().foo_function();
811 @This().bar_function();
912 try expect(@This().saw_foo_function);
test/behavior/var_args.zig+2
......@@ -28,6 +28,7 @@ test "send void arg to var args" {
2828
2929test "pass args directly" {
3030 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3132
3233 try expect(addSomeStuff(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10);
3334 try expect(addSomeStuff(.{@as(i32, 1234)}) == 1234);
......@@ -40,6 +41,7 @@ fn addSomeStuff(args: anytype) i32 {
4041
4142test "runtime parameter before var args" {
4243 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4345
4446 try expect((try extraFn(10, .{})) == 0);
4547 try expect((try extraFn(10, .{false})) == 1);
test/behavior/vector.zig+38
......@@ -10,6 +10,7 @@ test "implicit cast vector to array - bool" {
1010 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1314
1415 const S = struct {
1516 fn doTheTest() !void {
......@@ -28,6 +29,7 @@ test "vector wrap operators" {
2829 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
2930 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
3031 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3133
3234 const S = struct {
3335 fn doTheTest() !void {
......@@ -50,6 +52,7 @@ test "vector bin compares with mem.eql" {
5052 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
5153 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5356
5457 const S = struct {
5558 fn doTheTest() !void {
......@@ -73,6 +76,7 @@ test "vector int operators" {
7376 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7477 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7578 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7680
7781 const S = struct {
7882 fn doTheTest() !void {
......@@ -94,6 +98,7 @@ test "vector float operators" {
9498 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9599 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
96100 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
101 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
97102
98103 inline for ([_]type{ f16, f32, f64, f80, f128 }) |T| {
99104 const S = struct {
......@@ -117,6 +122,7 @@ test "vector bit operators" {
117122 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
118123 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
119124 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
125 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
120126
121127 const S = struct {
122128 fn doTheTest() !void {
......@@ -136,6 +142,7 @@ test "implicit cast vector to array" {
136142 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
137143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
138144 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
139146
140147 const S = struct {
141148 fn doTheTest() !void {
......@@ -154,6 +161,7 @@ test "array to vector" {
154161 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
155162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
156163 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
164 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
157165
158166 const S = struct {
159167 fn doTheTest() !void {
......@@ -173,6 +181,7 @@ test "tuple to vector" {
173181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
174182 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
175183 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176185
177186 const S = struct {
178187 fn doTheTest() !void {
......@@ -195,6 +204,7 @@ test "vector casts of sizes not divisible by 8" {
195204 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
196205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
197206 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
207 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
198208
199209 const S = struct {
200210 fn doTheTest() !void {
......@@ -230,6 +240,7 @@ test "vector @splat" {
230240 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
231241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
232242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
243 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
233244
234245 if (builtin.zig_backend == .stage2_llvm and
235246 builtin.os.tag == .macos)
......@@ -277,6 +288,7 @@ test "load vector elements via comptime index" {
277288 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
278289 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
279290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
280292
281293 const S = struct {
282294 fn doTheTest() !void {
......@@ -299,6 +311,7 @@ test "store vector elements via comptime index" {
299311 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
300312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
301313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
314 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
302315
303316 const S = struct {
304317 fn doTheTest() !void {
......@@ -327,6 +340,7 @@ test "load vector elements via runtime index" {
327340 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
328341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
329342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
330344
331345 const S = struct {
332346 fn doTheTest() !void {
......@@ -349,6 +363,7 @@ test "store vector elements via runtime index" {
349363 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
350364 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
351365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
366 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352367
353368 const S = struct {
354369 fn doTheTest() !void {
......@@ -372,6 +387,7 @@ test "initialize vector which is a struct field" {
372387 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
373388 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
374389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
375391
376392 const Vec4Obj = struct {
377393 data: @Vector(4, f32),
......@@ -395,6 +411,7 @@ test "vector comparison operators" {
395411 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
396412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
397413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
398415
399416 const S = struct {
400417 fn doTheTest() !void {
......@@ -435,6 +452,7 @@ test "vector division operators" {
435452 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
436453 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
437454 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
455 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
438456
439457 const S = struct {
440458 fn doTheTestDiv(comptime T: type, x: @Vector(4, T), y: @Vector(4, T)) !void {
......@@ -517,6 +535,7 @@ test "vector bitwise not operator" {
517535 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
518536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
519537 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
520539
521540 const S = struct {
522541 fn doTheTestNot(comptime T: type, x: @Vector(4, T)) !void {
......@@ -548,6 +567,7 @@ test "vector shift operators" {
548567 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
549568 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
550569 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
570 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
551571
552572 const S = struct {
553573 fn doTheTestShift(x: anytype, y: anytype) !void {
......@@ -641,6 +661,7 @@ test "vector reduce operation" {
641661 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
642662 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
643663 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
664 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
644665
645666 const S = struct {
646667 fn testReduce(comptime op: std.builtin.ReduceOp, x: anytype, expected: anytype) !void {
......@@ -783,6 +804,7 @@ test "vector @reduce comptime" {
783804 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
784805 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
785806 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
807 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
786808
787809 const value = @Vector(4, i32){ 1, -1, 1, -1 };
788810 const result = value > @splat(4, @as(i32, 0));
......@@ -799,6 +821,7 @@ test "mask parameter of @shuffle is comptime scope" {
799821 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
800822 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
801823 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
824 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
802825
803826 const __v4hi = @Vector(4, i16);
804827 var v4_a = __v4hi{ 0, 0, 0, 0 };
......@@ -818,6 +841,7 @@ test "saturating add" {
818841 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
819842 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
820843 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
844 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
821845
822846 const S = struct {
823847 fn doTheTest() !void {
......@@ -849,6 +873,7 @@ test "saturating subtraction" {
849873 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
850874 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
851875 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
876 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
852877
853878 const S = struct {
854879 fn doTheTest() !void {
......@@ -871,6 +896,7 @@ test "saturating multiplication" {
871896 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
872897 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
873898 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
899 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
874900
875901 // TODO: once #9660 has been solved, remove this line
876902 if (builtin.target.cpu.arch == .wasm32) return error.SkipZigTest;
......@@ -897,6 +923,7 @@ test "saturating shift-left" {
897923 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
898924 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
899925 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
926 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
900927
901928 const S = struct {
902929 fn doTheTest() !void {
......@@ -919,6 +946,7 @@ test "multiplication-assignment operator with an array operand" {
919946 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
920947 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
921948 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
949 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
922950
923951 const S = struct {
924952 fn doTheTest() !void {
......@@ -938,6 +966,7 @@ test "@addWithOverflow" {
938966 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
939967 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
940968 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
969 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
941970
942971 const S = struct {
943972 fn doTheTest() !void {
......@@ -984,6 +1013,7 @@ test "@subWithOverflow" {
9841013 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
9851014 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9861015 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1016 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9871017
9881018 const S = struct {
9891019 fn doTheTest() !void {
......@@ -1014,6 +1044,7 @@ test "@mulWithOverflow" {
10141044 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10151045 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10161046 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1047 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10171048
10181049 const S = struct {
10191050 fn doTheTest() !void {
......@@ -1035,6 +1066,7 @@ test "@shlWithOverflow" {
10351066 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10361067 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10371068 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1069 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10381070
10391071 const S = struct {
10401072 fn doTheTest() !void {
......@@ -1062,6 +1094,7 @@ test "loading the second vector from a slice of vectors" {
10621094 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10631095 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10641096 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1097 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10651098
10661099 @setRuntimeSafety(false);
10671100 var small_bases = [2]@Vector(2, u8){
......@@ -1078,6 +1111,7 @@ test "array of vectors is copied" {
10781111 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10791112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10801113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1114 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10811115
10821116 const Vec3 = @Vector(3, i32);
10831117 var points = [_]Vec3{
......@@ -1131,6 +1165,7 @@ test "zero divisor" {
11311165 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11321166 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11331167 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1168 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11341169
11351170 const zeros = @Vector(2, f32){ 0.0, 0.0 };
11361171 const ones = @Vector(2, f32){ 1.0, 1.0 };
......@@ -1151,6 +1186,7 @@ test "zero multiplicand" {
11511186 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11521187 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11531188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11541190
11551191 const zeros = @Vector(2, u32){ 0.0, 0.0 };
11561192 var ones = @Vector(2, u32){ 1.0, 1.0 };
......@@ -1174,6 +1210,7 @@ test "@intCast to u0" {
11741210 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11751211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11761212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11771214
11781215 var zeros = @Vector(2, u32){ 0, 0 };
11791216 const casted = @intCast(@Vector(2, u0), zeros);
......@@ -1197,6 +1234,7 @@ test "array operands to shuffle are coerced to vectors" {
11971234 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11981235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11991236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12001238
12011239 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" {
2020
2121test "iterate over a void slice" {
2222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2324
2425 var j: usize = 0;
2526 for (times(10)) |_, i| {
......@@ -36,6 +37,7 @@ test "void optional" {
3637 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
3738 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
3839 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3941
4042 var x: ?void = {};
4143 try expect(x != null);
test/behavior/while.zig+12
......@@ -5,6 +5,7 @@ const assert = std.debug.assert;
55
66test "while loop" {
77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
89
910 var i: i32 = 0;
1011 while (i < 4) {
......@@ -24,6 +25,7 @@ fn whileLoop2() i32 {
2425
2526test "static eval while" {
2627 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
28 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2729
2830 try expect(static_eval_while_number == 1);
2931}
......@@ -107,6 +109,7 @@ test "while copies its payload" {
107109 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
108110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
109111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
112 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
110113
111114 const S = struct {
112115 fn doTheTest() !void {
......@@ -146,6 +149,7 @@ test "while with optional as condition" {
146149 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
147150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
148151 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
149153
150154 numbers_left = 10;
151155 var sum: i32 = 0;
......@@ -159,6 +163,7 @@ test "while with optional as condition with else" {
159163 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
160164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161165 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
166 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
162167
163168 numbers_left = 10;
164169 var sum: i32 = 0;
......@@ -176,6 +181,7 @@ test "while with optional as condition with else" {
176181test "while with error union condition" {
177182 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
178183 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
184 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179185
180186 numbers_left = 10;
181187 var sum: i32 = 0;
......@@ -208,6 +214,7 @@ test "while on optional with else result follow else prong" {
208214 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
209215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
210216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
211218
212219 const result = while (returnNull()) |value| {
213220 break value;
......@@ -219,6 +226,7 @@ test "while on optional with else result follow break prong" {
219226 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
220227 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
221228 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
229 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222230
223231 const result = while (returnOptional(10)) |value| {
224232 break value;
......@@ -256,6 +264,7 @@ fn returnWithImplicitCastFromWhileLoopTest() anyerror!void {
256264
257265test "while on error union with else result follow else prong" {
258266 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
259268
260269 const result = while (returnError()) |value| {
261270 break value;
......@@ -265,6 +274,7 @@ test "while on error union with else result follow else prong" {
265274
266275test "while on error union with else result follow break prong" {
267276 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268278
269279 const result = while (returnSuccess(10)) |value| {
270280 break value;
......@@ -291,6 +301,7 @@ test "while optional 2 break statements and an else" {
291301 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
292302 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
293303 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
294305
295306 const S = struct {
296307 fn entry(opt_t: ?bool, f: bool) !void {
......@@ -310,6 +321,7 @@ test "while error 2 break statements and an else" {
310321 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
311322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
312323 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
324 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
313325
314326 const S = struct {
315327 fn entry(opt_t: anyerror!bool, f: bool) !void {
test/behavior/widening.zig+5
......@@ -8,6 +8,7 @@ test "integer widening" {
88 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1112
1213 var a: u8 = 250;
1314 var b: u16 = a;
......@@ -29,6 +30,7 @@ test "integer widening u0 to u8" {
2930test "implicit unsigned integer to signed integer" {
3031 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
3132 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3234
3335 var a: u8 = 250;
3436 var b: i16 = a;
......@@ -40,6 +42,7 @@ test "float widening" {
4042 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
4143 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4244 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
4346
4447 var a: f16 = 12.34;
4548 var b: f32 = a;
......@@ -59,6 +62,7 @@ test "float widening f16 to f128" {
5962 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6063 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6266
6367 var x: f16 = 12.34;
6468 var y: f128 = x;
......@@ -68,6 +72,7 @@ test "float widening f16 to f128" {
6872test "cast small unsigned to larger signed" {
6973 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7074 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7176
7277 try expect(castSmallUnsignedToLargerSigned1(200) == @as(i16, 200));
7378 try expect(castSmallUnsignedToLargerSigned2(9999) == @as(i64, 9999));