authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-03-15 13:08:26-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-03-15 13:08:26-04:00
loga2c6ecd6dc0bdbe2396be9b055852324f16d34c9
tree4931a3dcef12430f8ef7788db233e74559baea46
parent4414f9c46e778a58c6d08df3c6ab604449abf38d
parentd70955b0df92fdd0fdf3680f7f297a4cc676ee5a
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #14918 from jacobly0/x86_64

x86_64: fix various backend crashes

62 files changed, 135 insertions(+), 245 deletions(-)

src/arch/x86_64/CodeGen.zig+134-102
...@@ -184,8 +184,7 @@ const Branch = struct {...@@ -184,8 +184,7 @@ const Branch = struct {
184 _ = options;184 _ = options;
185 comptime assert(unused_format_string.len == 0);185 comptime assert(unused_format_string.len == 0);
186 try writer.writeAll("Branch {\n");186 try writer.writeAll("Branch {\n");
187 for (ctx.insts, 0..) |inst, i| {187 for (ctx.insts, ctx.mcvs) |inst, mcv| {
188 const mcv = ctx.mcvs[i];
189 try writer.print(" %{d} => {}\n", .{ inst, mcv });188 try writer.print(" %{d} => {}\n", .{ inst, mcv });
190 }189 }
191 try writer.writeAll("}");190 try writer.writeAll("}");
...@@ -208,7 +207,7 @@ const Branch = struct {...@@ -208,7 +207,7 @@ const Branch = struct {
208};207};
209208
210const StackAllocation = struct {209const StackAllocation = struct {
211 inst: Air.Inst.Index,210 inst: ?Air.Inst.Index,
212 /// TODO do we need size? should be determined by inst.ty.abiSize(self.target.*)211 /// TODO do we need size? should be determined by inst.ty.abiSize(self.target.*)
213 size: u32,212 size: u32,
214};213};
...@@ -1038,9 +1037,9 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {...@@ -1038,9 +1037,9 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void {
1038fn processDeath(self: *Self, inst: Air.Inst.Index) void {1037fn processDeath(self: *Self, inst: Air.Inst.Index) void {
1039 const air_tags = self.air.instructions.items(.tag);1038 const air_tags = self.air.instructions.items(.tag);
1040 if (air_tags[inst] == .constant) return; // Constants are immortal.1039 if (air_tags[inst] == .constant) return; // Constants are immortal.
1041 log.debug("%{d} => {}", .{ inst, MCValue{ .dead = {} } });1040 const prev_value = self.getResolvedInstValue(inst) orelse return;
1041 log.debug("%{d} => {}", .{ inst, MCValue.dead });
1042 // When editing this function, note that the logic must synchronize with `reuseOperand`.1042 // When editing this function, note that the logic must synchronize with `reuseOperand`.
1043 const prev_value = self.getResolvedInstValue(inst);
1044 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];1043 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
1045 branch.inst_table.putAssumeCapacity(inst, .dead);1044 branch.inst_table.putAssumeCapacity(inst, .dead);
1046 switch (prev_value) {1045 switch (prev_value) {
...@@ -1109,7 +1108,7 @@ fn ensureProcessDeathCapacity(self: *Self, additional_count: usize) !void {...@@ -1109,7 +1108,7 @@ fn ensureProcessDeathCapacity(self: *Self, additional_count: usize) !void {
1109 try table.ensureUnusedCapacity(self.gpa, additional_count);1108 try table.ensureUnusedCapacity(self.gpa, additional_count);
1110}1109}
11111110
1112fn allocMem(self: *Self, inst: Air.Inst.Index, abi_size: u32, abi_align: u32) !u32 {1111fn allocMem(self: *Self, inst: ?Air.Inst.Index, abi_size: u32, abi_align: u32) !u32 {
1113 if (abi_align > self.stack_align)1112 if (abi_align > self.stack_align)
1114 self.stack_align = abi_align;1113 self.stack_align = abi_align;
1115 // TODO find a free slot instead of always appending1114 // TODO find a free slot instead of always appending
...@@ -1142,7 +1141,14 @@ fn allocMemPtr(self: *Self, inst: Air.Inst.Index) !u32 {...@@ -1142,7 +1141,14 @@ fn allocMemPtr(self: *Self, inst: Air.Inst.Index) !u32 {
1142}1141}
11431142
1144fn allocRegOrMem(self: *Self, inst: Air.Inst.Index, reg_ok: bool) !MCValue {1143fn allocRegOrMem(self: *Self, inst: Air.Inst.Index, reg_ok: bool) !MCValue {
1145 const elem_ty = self.air.typeOfIndex(inst);1144 return self.allocRegOrMemAdvanced(self.air.typeOfIndex(inst), inst, reg_ok);
1145}
1146
1147fn allocTempRegOrMem(self: *Self, elem_ty: Type, reg_ok: bool) !MCValue {
1148 return self.allocRegOrMemAdvanced(elem_ty, null, reg_ok);
1149}
1150
1151fn allocRegOrMemAdvanced(self: *Self, elem_ty: Type, inst: ?Air.Inst.Index, reg_ok: bool) !MCValue {
1146 const abi_size = math.cast(u32, elem_ty.abiSize(self.target.*)) orelse {1152 const abi_size = math.cast(u32, elem_ty.abiSize(self.target.*)) orelse {
1147 const mod = self.bin_file.options.module.?;1153 const mod = self.bin_file.options.module.?;
1148 return self.fail("type '{}' too big to fit into stack frame", .{elem_ty.fmt(mod)});1154 return self.fail("type '{}' too big to fit into stack frame", .{elem_ty.fmt(mod)});
...@@ -1219,7 +1225,7 @@ fn revertState(self: *Self, state: State) void {...@@ -1219,7 +1225,7 @@ fn revertState(self: *Self, state: State) void {
1219pub fn spillInstruction(self: *Self, reg: Register, inst: Air.Inst.Index) !void {1225pub fn spillInstruction(self: *Self, reg: Register, inst: Air.Inst.Index) !void {
1220 const stack_mcv = try self.allocRegOrMem(inst, false);1226 const stack_mcv = try self.allocRegOrMem(inst, false);
1221 log.debug("spilling %{d} to stack mcv {any}", .{ inst, stack_mcv });1227 log.debug("spilling %{d} to stack mcv {any}", .{ inst, stack_mcv });
1222 const reg_mcv = self.getResolvedInstValue(inst);1228 const reg_mcv = self.getResolvedInstValue(inst).?;
1223 switch (reg_mcv) {1229 switch (reg_mcv) {
1224 .register => |other| {1230 .register => |other| {
1225 assert(reg.to64() == other.to64());1231 assert(reg.to64() == other.to64());
...@@ -1236,7 +1242,7 @@ pub fn spillInstruction(self: *Self, reg: Register, inst: Air.Inst.Index) !void...@@ -1236,7 +1242,7 @@ pub fn spillInstruction(self: *Self, reg: Register, inst: Air.Inst.Index) !void
12361242
1237pub fn spillEflagsIfOccupied(self: *Self) !void {1243pub fn spillEflagsIfOccupied(self: *Self) !void {
1238 if (self.eflags_inst) |inst_to_save| {1244 if (self.eflags_inst) |inst_to_save| {
1239 const mcv = self.getResolvedInstValue(inst_to_save);1245 const mcv = self.getResolvedInstValue(inst_to_save).?;
1240 const new_mcv = switch (mcv) {1246 const new_mcv = switch (mcv) {
1241 .register_overflow => try self.allocRegOrMem(inst_to_save, false),1247 .register_overflow => try self.allocRegOrMem(inst_to_save, false),
1242 .eflags => try self.allocRegOrMem(inst_to_save, true),1248 .eflags => try self.allocRegOrMem(inst_to_save, true),
...@@ -2861,7 +2867,13 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type...@@ -2861,7 +2867,13 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type
2861 .unreach => unreachable,2867 .unreach => unreachable,
2862 .eflags => unreachable,2868 .eflags => unreachable,
2863 .undef => {2869 .undef => {
2864 try self.genSetReg(value_ty, reg, value);2870 switch (abi_size) {
2871 1 => try self.store(ptr, .{ .immediate = 0xaa }, ptr_ty, value_ty),
2872 2 => try self.store(ptr, .{ .immediate = 0xaaaa }, ptr_ty, value_ty),
2873 4 => try self.store(ptr, .{ .immediate = 0xaaaaaaaa }, ptr_ty, value_ty),
2874 8 => try self.store(ptr, .{ .immediate = 0xaaaaaaaaaaaaaaaa }, ptr_ty, value_ty),
2875 else => try self.genInlineMemset(ptr, .{ .immediate = 0xaa }, .{ .immediate = abi_size }, .{}),
2876 }
2865 },2877 },
2866 .immediate => |imm| {2878 .immediate => |imm| {
2867 switch (abi_size) {2879 switch (abi_size) {
...@@ -3041,6 +3053,9 @@ fn structFieldPtr(self: *Self, inst: Air.Inst.Index, operand: Air.Inst.Ref, inde...@@ -3041,6 +3053,9 @@ fn structFieldPtr(self: *Self, inst: Air.Inst.Index, operand: Air.Inst.Ref, inde
3041 const mcv = try self.resolveInst(operand);3053 const mcv = try self.resolveInst(operand);
3042 const ptr_ty = self.air.typeOf(operand);3054 const ptr_ty = self.air.typeOf(operand);
3043 const struct_ty = ptr_ty.childType();3055 const struct_ty = ptr_ty.childType();
3056 if (struct_ty.zigTypeTag() == .Struct and struct_ty.containerLayout() == .Packed) {
3057 return self.fail("TODO structFieldPtr implement packed structs", .{});
3058 }
3044 const struct_field_offset = @intCast(u32, struct_ty.structFieldOffset(index, self.target.*));3059 const struct_field_offset = @intCast(u32, struct_ty.structFieldOffset(index, self.target.*));
30453060
3046 const dst_mcv: MCValue = result: {3061 const dst_mcv: MCValue = result: {
...@@ -3104,6 +3119,9 @@ fn airStructFieldVal(self: *Self, inst: Air.Inst.Index) !void {...@@ -3104,6 +3119,9 @@ fn airStructFieldVal(self: *Self, inst: Air.Inst.Index) !void {
31043119
3105 const mcv = try self.resolveInst(operand);3120 const mcv = try self.resolveInst(operand);
3106 const struct_ty = self.air.typeOf(operand);3121 const struct_ty = self.air.typeOf(operand);
3122 if (struct_ty.zigTypeTag() == .Struct and struct_ty.containerLayout() == .Packed) {
3123 return self.fail("TODO airStructFieldVal implement packed structs", .{});
3124 }
3107 const struct_field_offset = struct_ty.structFieldOffset(index, self.target.*);3125 const struct_field_offset = struct_ty.structFieldOffset(index, self.target.*);
3108 const struct_field_ty = struct_ty.structFieldType(index);3126 const struct_field_ty = struct_ty.structFieldType(index);
31093127
...@@ -3625,12 +3643,35 @@ fn genBinOpMir(self: *Self, mir_tag: Mir.Inst.Tag, dst_ty: Type, dst_mcv: MCValu...@@ -3625,12 +3643,35 @@ fn genBinOpMir(self: *Self, mir_tag: Mir.Inst.Tag, dst_ty: Type, dst_mcv: MCValu
3625 ),3643 ),
3626 },3644 },
3627 .immediate => |imm| {3645 .immediate => |imm| {
3628 // TODO3646 switch (abi_size) {
3629 try self.asmRegisterImmediate(3647 0 => unreachable,
3630 mir_tag,3648 1...4 => {
3631 registerAlias(dst_reg, abi_size),3649 try self.asmRegisterImmediate(
3632 Immediate.u(@intCast(u32, imm)),3650 mir_tag,
3633 );3651 registerAlias(dst_reg, abi_size),
3652 Immediate.u(@intCast(u32, imm)),
3653 );
3654 },
3655 5...8 => {
3656 if (math.cast(i32, @bitCast(i64, imm))) |small| {
3657 try self.asmRegisterImmediate(
3658 mir_tag,
3659 registerAlias(dst_reg, abi_size),
3660 Immediate.s(small),
3661 );
3662 } else {
3663 const tmp_reg = try self.register_manager.allocReg(null, gp);
3664 const tmp_alias = registerAlias(tmp_reg, abi_size);
3665 try self.asmRegisterImmediate(.mov, tmp_alias, Immediate.u(imm));
3666 try self.asmRegisterRegister(
3667 mir_tag,
3668 registerAlias(dst_reg, abi_size),
3669 tmp_alias,
3670 );
3671 }
3672 },
3673 else => return self.fail("TODO getBinOpMir implement large immediate ABI", .{}),
3674 }
3634 },3675 },
3635 .memory,3676 .memory,
3636 .linker_load,3677 .linker_load,
...@@ -3969,10 +4010,10 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier...@@ -3969,10 +4010,10 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier
3969 };4010 };
3970 defer if (ret_reg_lock) |lock| self.register_manager.unlockReg(lock);4011 defer if (ret_reg_lock) |lock| self.register_manager.unlockReg(lock);
39714012
3972 for (args, 0..) |arg, arg_i| {4013 for (args, info.args) |arg, info_arg| {
3973 const mc_arg = info.args[arg_i];4014 const mc_arg = info_arg;
3974 const arg_ty = self.air.typeOf(arg);4015 const arg_ty = self.air.typeOf(arg);
3975 const arg_mcv = try self.resolveInst(args[arg_i]);4016 const arg_mcv = try self.resolveInst(arg);
3976 // Here we do not use setRegOrMem even though the logic is similar, because4017 // Here we do not use setRegOrMem even though the logic is similar, because
3977 // the function call will move the stack pointer, so the offsets are different.4018 // the function call will move the stack pointer, so the offsets are different.
3978 switch (mc_arg) {4019 switch (mc_arg) {
...@@ -4410,16 +4451,16 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {...@@ -4410,16 +4451,16 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
4410 // Capture the state of register and stack allocation state so that we can revert to it.4451 // Capture the state of register and stack allocation state so that we can revert to it.
4411 const saved_state = try self.captureState();4452 const saved_state = try self.captureState();
44124453
4413 try self.branch_stack.append(.{});4454 {
4414 errdefer {4455 try self.branch_stack.append(.{});
4415 _ = self.branch_stack.pop();4456 errdefer _ = self.branch_stack.pop();
4416 }
44174457
4418 try self.ensureProcessDeathCapacity(liveness_condbr.then_deaths.len);4458 try self.ensureProcessDeathCapacity(liveness_condbr.then_deaths.len);
4419 for (liveness_condbr.then_deaths) |operand| {4459 for (liveness_condbr.then_deaths) |operand| {
4420 self.processDeath(operand);4460 self.processDeath(operand);
4461 }
4462 try self.genBody(then_body);
4421 }4463 }
4422 try self.genBody(then_body);
44234464
4424 // Revert to the previous register and stack allocation state.4465 // Revert to the previous register and stack allocation state.
44254466
...@@ -4430,16 +4471,16 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {...@@ -4430,16 +4471,16 @@ fn airCondBr(self: *Self, inst: Air.Inst.Index) !void {
44304471
4431 try self.performReloc(reloc);4472 try self.performReloc(reloc);
44324473
4433 try self.branch_stack.append(.{});4474 {
4434 errdefer {4475 try self.branch_stack.append(.{});
4435 _ = self.branch_stack.pop();4476 errdefer _ = self.branch_stack.pop();
4436 }
44374477
4438 try self.ensureProcessDeathCapacity(liveness_condbr.else_deaths.len);4478 try self.ensureProcessDeathCapacity(liveness_condbr.else_deaths.len);
4439 for (liveness_condbr.else_deaths) |operand| {4479 for (liveness_condbr.else_deaths) |operand| {
4440 self.processDeath(operand);4480 self.processDeath(operand);
4481 }
4482 try self.genBody(else_body);
4441 }4483 }
4442 try self.genBody(else_body);
44434484
4444 var else_branch = self.branch_stack.pop();4485 var else_branch = self.branch_stack.pop();
4445 defer else_branch.deinit(self.gpa);4486 defer else_branch.deinit(self.gpa);
...@@ -4565,18 +4606,16 @@ fn airIsNullPtr(self: *Self, inst: Air.Inst.Index) !void {...@@ -4565,18 +4606,16 @@ fn airIsNullPtr(self: *Self, inst: Air.Inst.Index) !void {
4565 };4606 };
4566 defer if (operand_ptr_lock) |lock| self.register_manager.unlockReg(lock);4607 defer if (operand_ptr_lock) |lock| self.register_manager.unlockReg(lock);
45674608
4568 const operand: MCValue = blk: {
4569 if (self.reuseOperand(inst, un_op, 0, operand_ptr)) {
4570 // The MCValue that holds the pointer can be re-used as the value.
4571 break :blk operand_ptr;
4572 } else {
4573 break :blk try self.allocRegOrMem(inst, true);
4574 }
4575 };
4576 const ptr_ty = self.air.typeOf(un_op);4609 const ptr_ty = self.air.typeOf(un_op);
4610 const elem_ty = ptr_ty.childType();
4611 const operand = if (elem_ty.isPtrLikeOptional() and self.reuseOperand(inst, un_op, 0, operand_ptr))
4612 // The MCValue that holds the pointer can be re-used as the value.
4613 operand_ptr
4614 else
4615 try self.allocTempRegOrMem(elem_ty, true);
4577 try self.load(operand, operand_ptr, ptr_ty);4616 try self.load(operand, operand_ptr, ptr_ty);
45784617
4579 const result = try self.isNull(inst, ptr_ty.elemType(), operand);4618 const result = try self.isNull(inst, elem_ty, operand);
45804619
4581 return self.finishAir(inst, result, .{ un_op, .none, .none });4620 return self.finishAir(inst, result, .{ un_op, .none, .none });
4582}4621}
...@@ -4605,15 +4644,13 @@ fn airIsNonNullPtr(self: *Self, inst: Air.Inst.Index) !void {...@@ -4605,15 +4644,13 @@ fn airIsNonNullPtr(self: *Self, inst: Air.Inst.Index) !void {
4605 };4644 };
4606 defer if (operand_ptr_lock) |lock| self.register_manager.unlockReg(lock);4645 defer if (operand_ptr_lock) |lock| self.register_manager.unlockReg(lock);
46074646
4608 const operand: MCValue = blk: {
4609 if (self.reuseOperand(inst, un_op, 0, operand_ptr)) {
4610 // The MCValue that holds the pointer can be re-used as the value.
4611 break :blk operand_ptr;
4612 } else {
4613 break :blk try self.allocRegOrMem(inst, true);
4614 }
4615 };
4616 const ptr_ty = self.air.typeOf(un_op);4647 const ptr_ty = self.air.typeOf(un_op);
4648 const elem_ty = ptr_ty.childType();
4649 const operand = if (elem_ty.isPtrLikeOptional() and self.reuseOperand(inst, un_op, 0, operand_ptr))
4650 // The MCValue that holds the pointer can be re-used as the value.
4651 operand_ptr
4652 else
4653 try self.allocTempRegOrMem(elem_ty, true);
4617 try self.load(operand, operand_ptr, ptr_ty);4654 try self.load(operand, operand_ptr, ptr_ty);
46184655
4619 const result = try self.isNonNull(inst, ptr_ty.elemType(), operand);4656 const result = try self.isNonNull(inst, ptr_ty.elemType(), operand);
...@@ -4721,7 +4758,7 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {...@@ -4721,7 +4758,7 @@ fn airBlock(self: *Self, inst: Air.Inst.Index) !void {
4721 // break instruction will choose a MCValue for the block result and overwrite4758 // break instruction will choose a MCValue for the block result and overwrite
4722 // this field. Following break instructions will use that MCValue to put their4759 // this field. Following break instructions will use that MCValue to put their
4723 // block results.4760 // block results.
4724 .mcv = MCValue{ .none = {} },4761 .mcv = .none,
4725 });4762 });
4726 defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);4763 defer self.blocks.getPtr(inst).?.relocs.deinit(self.gpa);
47274764
...@@ -4842,25 +4879,25 @@ fn airSwitch(self: *Self, inst: Air.Inst.Index) !void {...@@ -4842,25 +4879,25 @@ fn airSwitch(self: *Self, inst: Air.Inst.Index) !void {
4842 var relocs = try self.gpa.alloc(u32, items.len);4879 var relocs = try self.gpa.alloc(u32, items.len);
4843 defer self.gpa.free(relocs);4880 defer self.gpa.free(relocs);
48444881
4845 for (items, 0..) |item, item_i| {4882 for (items, relocs) |item, *reloc| {
4846 const item_mcv = try self.resolveInst(item);4883 const item_mcv = try self.resolveInst(item);
4847 relocs[item_i] = try self.genCondSwitchMir(condition_ty, condition, item_mcv);4884 reloc.* = try self.genCondSwitchMir(condition_ty, condition, item_mcv);
4848 }4885 }
48494886
4850 // Capture the state of register and stack allocation state so that we can revert to it.4887 // Capture the state of register and stack allocation state so that we can revert to it.
4851 const saved_state = try self.captureState();4888 const saved_state = try self.captureState();
48524889
4853 try self.branch_stack.append(.{});4890 {
4854 errdefer {4891 try self.branch_stack.append(.{});
4855 _ = self.branch_stack.pop();4892 errdefer _ = self.branch_stack.pop();
4856 }
48574893
4858 try self.ensureProcessDeathCapacity(liveness.deaths[case_i].len);4894 try self.ensureProcessDeathCapacity(liveness.deaths[case_i].len);
4859 for (liveness.deaths[case_i]) |operand| {4895 for (liveness.deaths[case_i]) |operand| {
4860 self.processDeath(operand);4896 self.processDeath(operand);
4861 }4897 }
48624898
4863 try self.genBody(case_body);4899 try self.genBody(case_body);
4900 }
48644901
4865 branch_stack.appendAssumeCapacity(self.branch_stack.pop());4902 branch_stack.appendAssumeCapacity(self.branch_stack.pop());
48664903
...@@ -4878,18 +4915,18 @@ fn airSwitch(self: *Self, inst: Air.Inst.Index) !void {...@@ -4878,18 +4915,18 @@ fn airSwitch(self: *Self, inst: Air.Inst.Index) !void {
4878 // Capture the state of register and stack allocation state so that we can revert to it.4915 // Capture the state of register and stack allocation state so that we can revert to it.
4879 const saved_state = try self.captureState();4916 const saved_state = try self.captureState();
48804917
4881 try self.branch_stack.append(.{});4918 {
4882 errdefer {4919 try self.branch_stack.append(.{});
4883 _ = self.branch_stack.pop();4920 errdefer _ = self.branch_stack.pop();
4884 }
48854921
4886 const else_deaths = liveness.deaths.len - 1;4922 const else_deaths = liveness.deaths.len - 1;
4887 try self.ensureProcessDeathCapacity(liveness.deaths[else_deaths].len);4923 try self.ensureProcessDeathCapacity(liveness.deaths[else_deaths].len);
4888 for (liveness.deaths[else_deaths]) |operand| {4924 for (liveness.deaths[else_deaths]) |operand| {
4889 self.processDeath(operand);4925 self.processDeath(operand);
4890 }4926 }
48914927
4892 try self.genBody(else_body);4928 try self.genBody(else_body);
4929 }
48934930
4894 branch_stack.appendAssumeCapacity(self.branch_stack.pop());4931 branch_stack.appendAssumeCapacity(self.branch_stack.pop());
48954932
...@@ -4926,11 +4963,7 @@ fn canonicaliseBranches(self: *Self, parent_branch: *Branch, canon_branch: *Bran...@@ -4926,11 +4963,7 @@ fn canonicaliseBranches(self: *Self, parent_branch: *Branch, canon_branch: *Bran
4926 try parent_branch.inst_table.ensureUnusedCapacity(self.gpa, target_branch.inst_table.count());4963 try parent_branch.inst_table.ensureUnusedCapacity(self.gpa, target_branch.inst_table.count());
49274964
4928 const target_slice = target_branch.inst_table.entries.slice();4965 const target_slice = target_branch.inst_table.entries.slice();
4929 const target_keys = target_slice.items(.key);4966 for (target_slice.items(.key), target_slice.items(.value)) |target_key, target_value| {
4930 const target_values = target_slice.items(.value);
4931
4932 for (target_keys, 0..) |target_key, target_idx| {
4933 const target_value = target_values[target_idx];
4934 const canon_mcv = if (canon_branch.inst_table.fetchSwapRemove(target_key)) |canon_entry| blk: {4967 const canon_mcv = if (canon_branch.inst_table.fetchSwapRemove(target_key)) |canon_entry| blk: {
4935 // The instruction's MCValue is overridden in both branches.4968 // The instruction's MCValue is overridden in both branches.
4936 parent_branch.inst_table.putAssumeCapacity(target_key, canon_entry.value);4969 parent_branch.inst_table.putAssumeCapacity(target_key, canon_entry.value);
...@@ -4960,10 +4993,7 @@ fn canonicaliseBranches(self: *Self, parent_branch: *Branch, canon_branch: *Bran...@@ -4960,10 +4993,7 @@ fn canonicaliseBranches(self: *Self, parent_branch: *Branch, canon_branch: *Bran
4960 }4993 }
4961 try parent_branch.inst_table.ensureUnusedCapacity(self.gpa, canon_branch.inst_table.count());4994 try parent_branch.inst_table.ensureUnusedCapacity(self.gpa, canon_branch.inst_table.count());
4962 const canon_slice = canon_branch.inst_table.entries.slice();4995 const canon_slice = canon_branch.inst_table.entries.slice();
4963 const canon_keys = canon_slice.items(.key);4996 for (canon_slice.items(.key), canon_slice.items(.value)) |canon_key, canon_value| {
4964 const canon_values = canon_slice.items(.value);
4965 for (canon_keys, 0..) |canon_key, canon_idx| {
4966 const canon_value = canon_values[canon_idx];
4967 // We already deleted the items from this table that matched the target_branch.4997 // We already deleted the items from this table that matched the target_branch.
4968 // So these are all instructions that are only overridden in the canon branch.4998 // So these are all instructions that are only overridden in the canon branch.
4969 parent_branch.inst_table.putAssumeCapacity(canon_key, canon_value);4999 parent_branch.inst_table.putAssumeCapacity(canon_key, canon_value);
...@@ -5144,9 +5174,9 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void {...@@ -5144,9 +5174,9 @@ fn airAsm(self: *Self, inst: Air.Inst.Index) !void {
5144 const reg_name = output[2 .. output.len - 1];5174 const reg_name = output[2 .. output.len - 1];
5145 const reg = parseRegName(reg_name) orelse5175 const reg = parseRegName(reg_name) orelse
5146 return self.fail("unrecognized register: '{s}'", .{reg_name});5176 return self.fail("unrecognized register: '{s}'", .{reg_name});
5147 break :result MCValue{ .register = reg };5177 break :result .{ .register = reg };
5148 } else {5178 } else {
5149 break :result MCValue{ .none = {} };5179 break :result .none;
5150 }5180 }
5151 };5181 };
51525182
...@@ -6218,6 +6248,9 @@ fn airAggregateInit(self: *Self, inst: Air.Inst.Index) !void {...@@ -6218,6 +6248,9 @@ fn airAggregateInit(self: *Self, inst: Air.Inst.Index) !void {
6218 if (self.liveness.isUnused(inst)) break :res MCValue.dead;6248 if (self.liveness.isUnused(inst)) break :res MCValue.dead;
6219 switch (result_ty.zigTypeTag()) {6249 switch (result_ty.zigTypeTag()) {
6220 .Struct => {6250 .Struct => {
6251 if (result_ty.containerLayout() == .Packed) {
6252 return self.fail("TODO airAggregateInit implement packed structs", .{});
6253 }
6221 const stack_offset = @intCast(i32, try self.allocMem(inst, abi_size, abi_align));6254 const stack_offset = @intCast(i32, try self.allocMem(inst, abi_size, abi_align));
6222 for (elements, 0..) |elem, elem_i| {6255 for (elements, 0..) |elem, elem_i| {
6223 if (result_ty.structFieldValueComptime(elem_i) != null) continue; // comptime elem6256 if (result_ty.structFieldValueComptime(elem_i) != null) continue; // comptime elem
...@@ -6288,7 +6321,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {...@@ -6288,7 +6321,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {
6288 if (ref_int < Air.Inst.Ref.typed_value_map.len) {6321 if (ref_int < Air.Inst.Ref.typed_value_map.len) {
6289 const tv = Air.Inst.Ref.typed_value_map[ref_int];6322 const tv = Air.Inst.Ref.typed_value_map[ref_int];
6290 if (!tv.ty.hasRuntimeBitsIgnoreComptime() and !tv.ty.isError()) {6323 if (!tv.ty.hasRuntimeBitsIgnoreComptime() and !tv.ty.isError()) {
6291 return MCValue{ .none = {} };6324 return .none;
6292 }6325 }
6293 return self.genTypedValue(tv);6326 return self.genTypedValue(tv);
6294 }6327 }
...@@ -6296,7 +6329,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {...@@ -6296,7 +6329,7 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {
6296 // If the type has no codegen bits, no need to store it.6329 // If the type has no codegen bits, no need to store it.
6297 const inst_ty = self.air.typeOf(inst);6330 const inst_ty = self.air.typeOf(inst);
6298 if (!inst_ty.hasRuntimeBitsIgnoreComptime() and !inst_ty.isError())6331 if (!inst_ty.hasRuntimeBitsIgnoreComptime() and !inst_ty.isError())
6299 return MCValue{ .none = {} };6332 return .none;
63006333
6301 const inst_index = @intCast(Air.Inst.Index, ref_int - Air.Inst.Ref.typed_value_map.len);6334 const inst_index = @intCast(Air.Inst.Index, ref_int - Air.Inst.Ref.typed_value_map.len);
6302 switch (self.air.instructions.items(.tag)[inst_index]) {6335 switch (self.air.instructions.items(.tag)[inst_index]) {
...@@ -6314,18 +6347,17 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {...@@ -6314,18 +6347,17 @@ fn resolveInst(self: *Self, inst: Air.Inst.Ref) InnerError!MCValue {
6314 return gop.value_ptr.*;6347 return gop.value_ptr.*;
6315 },6348 },
6316 .const_ty => unreachable,6349 .const_ty => unreachable,
6317 else => return self.getResolvedInstValue(inst_index),6350 else => return self.getResolvedInstValue(inst_index).?,
6318 }6351 }
6319}6352}
63206353
6321fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) MCValue {6354fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) ?MCValue {
6322 // Treat each stack item as a "layer" on top of the previous one.6355 // Treat each stack item as a "layer" on top of the previous one.
6323 var i: usize = self.branch_stack.items.len;6356 var i: usize = self.branch_stack.items.len;
6324 while (true) {6357 while (true) {
6325 i -= 1;6358 i -= 1;
6326 if (self.branch_stack.items[i].inst_table.get(inst)) |mcv| {6359 if (self.branch_stack.items[i].inst_table.get(inst)) |mcv| {
6327 assert(mcv != .dead);6360 return if (mcv != .dead) mcv else null;
6328 return mcv;
6329 }6361 }
6330 }6362 }
6331}6363}
...@@ -6405,7 +6437,7 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {...@@ -6405,7 +6437,7 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {
6405 switch (cc) {6437 switch (cc) {
6406 .Naked => {6438 .Naked => {
6407 assert(result.args.len == 0);6439 assert(result.args.len == 0);
6408 result.return_value = .{ .unreach = {} };6440 result.return_value = .unreach;
6409 result.stack_byte_count = 0;6441 result.stack_byte_count = 0;
6410 result.stack_align = 1;6442 result.stack_align = 1;
6411 return result;6443 return result;
...@@ -6413,10 +6445,10 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {...@@ -6413,10 +6445,10 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {
6413 .C => {6445 .C => {
6414 // Return values6446 // Return values
6415 if (ret_ty.zigTypeTag() == .NoReturn) {6447 if (ret_ty.zigTypeTag() == .NoReturn) {
6416 result.return_value = .{ .unreach = {} };6448 result.return_value = .unreach;
6417 } else if (!ret_ty.hasRuntimeBitsIgnoreComptime() and !ret_ty.isError()) {6449 } else if (!ret_ty.hasRuntimeBitsIgnoreComptime() and !ret_ty.isError()) {
6418 // TODO: is this even possible for C calling convention?6450 // TODO: is this even possible for C calling convention?
6419 result.return_value = .{ .none = {} };6451 result.return_value = .none;
6420 } else {6452 } else {
6421 const ret_ty_size = @intCast(u32, ret_ty.abiSize(self.target.*));6453 const ret_ty_size = @intCast(u32, ret_ty.abiSize(self.target.*));
6422 if (ret_ty_size == 0) {6454 if (ret_ty_size == 0) {
...@@ -6437,7 +6469,7 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {...@@ -6437,7 +6469,7 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {
6437 else => 0,6469 else => 0,
6438 };6470 };
64396471
6440 for (param_types, 0..) |ty, i| {6472 for (param_types, result.args, 0..) |ty, *arg, i| {
6441 assert(ty.hasRuntimeBits());6473 assert(ty.hasRuntimeBits());
64426474
6443 const classes: []const abi.Class = switch (self.target.os.tag) {6475 const classes: []const abi.Class = switch (self.target.os.tag) {
...@@ -6450,7 +6482,7 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {...@@ -6450,7 +6482,7 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {
6450 switch (classes[0]) {6482 switch (classes[0]) {
6451 .integer => blk: {6483 .integer => blk: {
6452 if (i >= abi.getCAbiIntParamRegs(self.target.*).len) break :blk; // fallthrough6484 if (i >= abi.getCAbiIntParamRegs(self.target.*).len) break :blk; // fallthrough
6453 result.args[i] = .{ .register = abi.getCAbiIntParamRegs(self.target.*)[i] };6485 arg.* = .{ .register = abi.getCAbiIntParamRegs(self.target.*)[i] };
6454 continue;6486 continue;
6455 },6487 },
6456 .memory => {}, // fallthrough6488 .memory => {}, // fallthrough
...@@ -6462,7 +6494,7 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {...@@ -6462,7 +6494,7 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {
6462 const param_size = @intCast(u32, ty.abiSize(self.target.*));6494 const param_size = @intCast(u32, ty.abiSize(self.target.*));
6463 const param_align = @intCast(u32, ty.abiAlignment(self.target.*));6495 const param_align = @intCast(u32, ty.abiAlignment(self.target.*));
6464 const offset = mem.alignForwardGeneric(u32, next_stack_offset + param_size, param_align);6496 const offset = mem.alignForwardGeneric(u32, next_stack_offset + param_size, param_align);
6465 result.args[i] = .{ .stack_offset = @intCast(i32, offset) };6497 arg.* = .{ .stack_offset = @intCast(i32, offset) };
6466 next_stack_offset = offset;6498 next_stack_offset = offset;
6467 }6499 }
64686500
...@@ -6488,9 +6520,9 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {...@@ -6488,9 +6520,9 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {
6488 .Unspecified => {6520 .Unspecified => {
6489 // Return values6521 // Return values
6490 if (ret_ty.zigTypeTag() == .NoReturn) {6522 if (ret_ty.zigTypeTag() == .NoReturn) {
6491 result.return_value = .{ .unreach = {} };6523 result.return_value = .unreach;
6492 } else if (!ret_ty.hasRuntimeBitsIgnoreComptime() and !ret_ty.isError()) {6524 } else if (!ret_ty.hasRuntimeBitsIgnoreComptime() and !ret_ty.isError()) {
6493 result.return_value = .{ .none = {} };6525 result.return_value = .none;
6494 } else {6526 } else {
6495 const ret_ty_size = @intCast(u32, ret_ty.abiSize(self.target.*));6527 const ret_ty_size = @intCast(u32, ret_ty.abiSize(self.target.*));
6496 if (ret_ty_size == 0) {6528 if (ret_ty_size == 0) {
...@@ -6513,15 +6545,15 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {...@@ -6513,15 +6545,15 @@ fn resolveCallingConventionValues(self: *Self, fn_ty: Type) !CallMCValues {
6513 else => 0,6545 else => 0,
6514 };6546 };
65156547
6516 for (param_types, 0..) |ty, i| {6548 for (param_types, result.args) |ty, *arg| {
6517 if (!ty.hasRuntimeBits()) {6549 if (!ty.hasRuntimeBits()) {
6518 result.args[i] = .{ .none = {} };6550 arg.* = .none;
6519 continue;6551 continue;
6520 }6552 }
6521 const param_size = @intCast(u32, ty.abiSize(self.target.*));6553 const param_size = @intCast(u32, ty.abiSize(self.target.*));
6522 const param_align = @intCast(u32, ty.abiAlignment(self.target.*));6554 const param_align = @intCast(u32, ty.abiAlignment(self.target.*));
6523 const offset = mem.alignForwardGeneric(u32, next_stack_offset + param_size, param_align);6555 const offset = mem.alignForwardGeneric(u32, next_stack_offset + param_size, param_align);
6524 result.args[i] = .{ .stack_offset = @intCast(i32, offset) };6556 arg.* = .{ .stack_offset = @intCast(i32, offset) };
6525 next_stack_offset = offset;6557 next_stack_offset = offset;
6526 }6558 }
65276559
test/behavior/align.zig-1
...@@ -568,7 +568,6 @@ fn overaligned_fn() align(0x1000) i32 {...@@ -568,7 +568,6 @@ fn overaligned_fn() align(0x1000) i32 {
568}568}
569569
570test "comptime alloc alignment" {570test "comptime alloc alignment" {
571 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
572 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO571 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
573 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO572 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
574 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO573 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
test/behavior/array.zig-1
...@@ -591,7 +591,6 @@ test "type coercion of anon struct literal to array" {...@@ -591,7 +591,6 @@ test "type coercion of anon struct literal to array" {
591test "type coercion of pointer to anon struct literal to pointer to array" {591test "type coercion of pointer to anon struct literal to pointer to array" {
592 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO592 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
593 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO593 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
594 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
595 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO594 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
596595
597 const S = struct {596 const S = struct {
test/behavior/bit_shifting.zig-1
...@@ -63,7 +63,6 @@ fn ShardedTable(comptime Key: type, comptime mask_bit_count: comptime_int, compt...@@ -63,7 +63,6 @@ fn ShardedTable(comptime Key: type, comptime mask_bit_count: comptime_int, compt
63test "sharded table" {63test "sharded table" {
64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;64 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;65 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
66 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6867
69 // realistic 16-way sharding68 // realistic 16-way sharding
test/behavior/bitreverse.zig-1
...@@ -150,7 +150,6 @@ fn vector0() !void {...@@ -150,7 +150,6 @@ fn vector0() !void {
150150
151test "bitReverse vectors u0" {151test "bitReverse vectors u0" {
152 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;152 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
153 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
154153
155 comptime try vector0();154 comptime try vector0();
156 try vector0();155 try vector0();
test/behavior/bugs/1076.zig-1
...@@ -4,7 +4,6 @@ const mem = std.mem;...@@ -4,7 +4,6 @@ const mem = std.mem;
4const expect = std.testing.expect;4const expect = std.testing.expect;
55
6test "comptime code should not modify constant data" {6test "comptime code should not modify constant data" {
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
109
test/behavior/bugs/11046.zig-1
...@@ -10,7 +10,6 @@ fn bar() !void {...@@ -10,7 +10,6 @@ fn bar() !void {
10}10}
1111
12test "fixed" {12test "fixed" {
13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/bugs/11787.zig-1
...@@ -4,7 +4,6 @@ const testing = std.testing;...@@ -4,7 +4,6 @@ const testing = std.testing;
44
5test "slicing zero length array field of struct" {5test "slicing zero length array field of struct" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12000.zig-1
...@@ -7,7 +7,6 @@ const T = struct {...@@ -7,7 +7,6 @@ const T = struct {
77
8test {8test {
9 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12119.zig-1
...@@ -6,7 +6,6 @@ const u32x8 = @Vector(8, u32);...@@ -6,7 +6,6 @@ const u32x8 = @Vector(8, u32);
66
7test {7test {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12169.zig-1
...@@ -3,7 +3,6 @@ const builtin = @import("builtin");...@@ -3,7 +3,6 @@ const builtin = @import("builtin");
33
4test {4test {
5 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12890.zig-1
...@@ -10,7 +10,6 @@ fn a(b: []u3, c: u3) void {...@@ -10,7 +10,6 @@ fn a(b: []u3, c: u3) void {
10}10}
11test {11test {
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1514
16 var arr: [8]u3 = undefined;15 var arr: [8]u3 = undefined;
test/behavior/bugs/13113.zig-1
...@@ -8,7 +8,6 @@ const Foo = extern struct {...@@ -8,7 +8,6 @@ const Foo = extern struct {
88
9test {9test {
10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
13 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/1421.zig-1
...@@ -9,7 +9,6 @@ const S = struct {...@@ -9,7 +9,6 @@ const S = struct {
9};9};
1010
11test "functions with return type required to be comptime are generic" {11test "functions with return type required to be comptime are generic" {
12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
13 const ti = S.method();12 const ti = S.method();
14 try expect(@as(std.builtin.TypeId, ti) == std.builtin.TypeId.Struct);13 try expect(@as(std.builtin.TypeId, ti) == std.builtin.TypeId.Struct);
15}14}
test/behavior/bugs/1607.zig-1
...@@ -13,7 +13,6 @@ fn checkAddress(s: []const u8) !void {...@@ -13,7 +13,6 @@ fn checkAddress(s: []const u8) !void {
13test "slices pointing at the same address as global array." {13test "slices pointing at the same address as global array." {
14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 try checkAddress(&a);17 try checkAddress(&a);
19 comptime try checkAddress(&a);18 comptime try checkAddress(&a);
test/behavior/bugs/2622.zig-1
...@@ -4,7 +4,6 @@ var buf: []u8 = undefined;...@@ -4,7 +4,6 @@ var buf: []u8 = undefined;
44
5test "reslice of undefined global var slice" {5test "reslice of undefined global var slice" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/2727.zig-1
...@@ -6,7 +6,6 @@ fn t() bool {...@@ -6,7 +6,6 @@ fn t() bool {
66
7test {7test {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/3742.zig-1
...@@ -37,7 +37,6 @@ pub const ArgSerializer = struct {...@@ -37,7 +37,6 @@ pub const ArgSerializer = struct {
37test "fixed" {37test "fixed" {
38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;39 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
40 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
41 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO40 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_llvm and41 if (builtin.zig_backend == .stage2_llvm and
43 builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) return error.SkipZigTest;42 builtin.cpu.arch == .aarch64 and builtin.os.tag == .windows) return error.SkipZigTest;
test/behavior/bugs/394.zig-1
...@@ -11,7 +11,6 @@ const expect = @import("std").testing.expect;...@@ -11,7 +11,6 @@ const expect = @import("std").testing.expect;
11const builtin = @import("builtin");11const builtin = @import("builtin");
1212
13test "fixed" {13test "fixed" {
14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
15 const x = S{14 const x = S{
16 .x = 3,15 .x = 3,
17 .y = E{ .B = 1 },16 .y = E{ .B = 1 },
test/behavior/bugs/421.zig-1
...@@ -2,7 +2,6 @@ const builtin = @import("builtin");...@@ -2,7 +2,6 @@ const builtin = @import("builtin");
2const expect = @import("std").testing.expect;2const expect = @import("std").testing.expect;
33
4test "bitCast to array" {4test "bitCast to array" {
5 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO5 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/bugs/5398.zig-1
...@@ -21,7 +21,6 @@ var renderable: Renderable = undefined;...@@ -21,7 +21,6 @@ var renderable: Renderable = undefined;
21test "assignment of field with padding" {21test "assignment of field with padding" {
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2625
27 renderable = Renderable{26 renderable = Renderable{
test/behavior/bugs/5487.zig-1
...@@ -12,7 +12,6 @@ pub fn writer() io.Writer(void, @typeInfo(@typeInfo(@TypeOf(write)).Fn.return_ty...@@ -12,7 +12,6 @@ pub fn writer() io.Writer(void, @typeInfo(@typeInfo(@TypeOf(write)).Fn.return_ty
12test "crash" {12test "crash" {
13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;13 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO15 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17 _ = io.multiWriter(.{writer()});16 _ = io.multiWriter(.{writer()});
18}17}
test/behavior/bugs/656.zig-1
...@@ -13,7 +13,6 @@ const Value = struct {...@@ -13,7 +13,6 @@ const Value = struct {
13test "optional if after an if in a switch prong of a switch with 2 prongs in an else" {13test "optional if after an if in a switch prong of a switch with 2 prongs in an else" {
14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18 try foo(false, true);17 try foo(false, true);
19}18}
test/behavior/bugs/6947.zig-1
...@@ -6,7 +6,6 @@ fn destroy(ptr: *void) void {...@@ -6,7 +6,6 @@ fn destroy(ptr: *void) void {
66
7test {7test {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/byteswap.zig-1
...@@ -116,7 +116,6 @@ fn vector0() !void {...@@ -116,7 +116,6 @@ fn vector0() !void {
116116
117test "@byteSwap vectors u0" {117test "@byteSwap vectors u0" {
118 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;118 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
120119
121 comptime try vector0();120 comptime try vector0();
122 try vector0();121 try vector0();
test/behavior/byval_arg_var.zig-1
...@@ -4,7 +4,6 @@ const builtin = @import("builtin");...@@ -4,7 +4,6 @@ const builtin = @import("builtin");
4var result: []const u8 = "wrong";4var result: []const u8 = "wrong";
55
6test "pass string literal byvalue to a generic var param" {6test "pass string literal byvalue to a generic var param" {
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
98
10 start();9 start();
test/behavior/call.zig-2
...@@ -21,7 +21,6 @@ test "super basic invocations" {...@@ -21,7 +21,6 @@ test "super basic invocations" {
21test "basic invocations" {21test "basic invocations" {
22 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -56,7 +55,6 @@ test "basic invocations" {...@@ -56,7 +55,6 @@ test "basic invocations" {
56test "tuple parameters" {55test "tuple parameters" {
57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
59 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
60 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
6159
62 const add = struct {60 const add = struct {
test/behavior/cast.zig-9
...@@ -176,7 +176,6 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {...@@ -176,7 +176,6 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {
176176
177test "implicitly cast indirect pointer to maybe-indirect pointer" {177test "implicitly cast indirect pointer to maybe-indirect pointer" {
178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;178 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
179 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
180 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO179 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
181180
182 const S = struct {181 const S = struct {
...@@ -318,7 +317,6 @@ test "peer result null and comptime_int" {...@@ -318,7 +317,6 @@ test "peer result null and comptime_int" {
318317
319test "*const ?[*]const T to [*c]const [*c]const T" {318test "*const ?[*]const T to [*c]const [*c]const T" {
320 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;319 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
321 if (builtin.zig_backend == .stage2_x86_64 or builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
322 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO320 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
323321
324 var array = [_]u8{ 'o', 'k' };322 var array = [_]u8{ 'o', 'k' };
...@@ -588,7 +586,6 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {...@@ -588,7 +586,6 @@ fn testCastPtrOfArrayToSliceAndPtr() !void {
588586
589test "cast *[1][*]const u8 to [*]const ?[*]const u8" {587test "cast *[1][*]const u8 to [*]const ?[*]const u8" {
590 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;588 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
591 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
592 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO589 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
593590
594 const window_name = [1][*]const u8{"window name"};591 const window_name = [1][*]const u8{"window name"};
...@@ -927,7 +924,6 @@ test "peer cast *[N:x]T to *[N]T" {...@@ -927,7 +924,6 @@ test "peer cast *[N:x]T to *[N]T" {
927924
928test "peer cast [*:x]T to [*]T" {925test "peer cast [*:x]T to [*]T" {
929 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO926 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
930 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
931 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO927 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
932928
933 const S = struct {929 const S = struct {
...@@ -948,7 +944,6 @@ test "peer cast [*:x]T to [*]T" {...@@ -948,7 +944,6 @@ test "peer cast [*:x]T to [*]T" {
948test "peer cast [:x]T to [*:x]T" {944test "peer cast [:x]T to [*:x]T" {
949 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;945 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
950 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO946 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
951 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
952 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO947 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
953948
954 const S = struct {949 const S = struct {
...@@ -989,7 +984,6 @@ test "peer type resolution implicit cast to return type" {...@@ -989,7 +984,6 @@ test "peer type resolution implicit cast to return type" {
989984
990test "peer type resolution implicit cast to variable type" {985test "peer type resolution implicit cast to variable type" {
991 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;986 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
992 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
993 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO987 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
994988
995 const S = struct {989 const S = struct {
...@@ -1112,8 +1106,6 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {...@@ -1112,8 +1106,6 @@ fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
1112}1106}
11131107
1114test "compile time int to ptr of function" {1108test "compile time int to ptr of function" {
1115 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1116
1117 try foobar(FUNCTION_CONSTANT);1109 try foobar(FUNCTION_CONSTANT);
1118}1110}
11191111
...@@ -1505,7 +1497,6 @@ test "implicit cast from [:0]T to [*c]T" {...@@ -1505,7 +1497,6 @@ test "implicit cast from [:0]T to [*c]T" {
1505test "bitcast packed struct with u0" {1497test "bitcast packed struct with u0" {
1506 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1498 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1507 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1499 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1508 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
15091500
1510 const S = packed struct(u2) { a: u0, b: u2 };1501 const S = packed struct(u2) { a: u0, b: u2 };
1511 const s = @bitCast(S, @as(u2, 2));1502 const s = @bitCast(S, @as(u2, 2));
test/behavior/defer.zig-1
...@@ -50,7 +50,6 @@ fn testNestedFnErrDefer() anyerror!void {...@@ -50,7 +50,6 @@ fn testNestedFnErrDefer() anyerror!void {
50}50}
5151
52test "return variable while defer expression in scope to modify it" {52test "return variable while defer expression in scope to modify it" {
53 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/enum.zig-2
...@@ -937,7 +937,6 @@ test "enum literal casting to error union with payload enum" {...@@ -937,7 +937,6 @@ test "enum literal casting to error union with payload enum" {
937}937}
938938
939test "constant enum initialization with differing sizes" {939test "constant enum initialization with differing sizes" {
940 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
941 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;940 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
942 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;941 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
943 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO942 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1137,7 +1136,6 @@ test "tag name functions are unique" {...@@ -1137,7 +1136,6 @@ test "tag name functions are unique" {
1137}1136}
11381137
1139test "size of enum with only one tag which has explicit integer tag type" {1138test "size of enum with only one tag which has explicit integer tag type" {
1140 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
1141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1139 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11431141
test/behavior/error.zig-10
...@@ -144,15 +144,11 @@ test "implicit cast to optional to error union to return result loc" {...@@ -144,15 +144,11 @@ test "implicit cast to optional to error union to return result loc" {
144}144}
145145
146test "fn returning empty error set can be passed as fn returning any error" {146test "fn returning empty error set can be passed as fn returning any error" {
147 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
148
149 entry();147 entry();
150 comptime entry();148 comptime entry();
151}149}
152150
153test "fn returning empty error set can be passed as fn returning any error - pointer" {151test "fn returning empty error set can be passed as fn returning any error - pointer" {
154 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
155
156 entryPtr();152 entryPtr();
157 comptime entryPtr();153 comptime entryPtr();
158}154}
...@@ -219,7 +215,6 @@ fn testErrorSetType() !void {...@@ -219,7 +215,6 @@ fn testErrorSetType() !void {
219}215}
220216
221test "explicit error set cast" {217test "explicit error set cast" {
222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
224219
225 try testExplicitErrorSetCast(Set1.A);220 try testExplicitErrorSetCast(Set1.A);
...@@ -238,7 +233,6 @@ fn testExplicitErrorSetCast(set1: Set1) !void {...@@ -238,7 +233,6 @@ fn testExplicitErrorSetCast(set1: Set1) !void {
238}233}
239234
240test "comptime test error for empty error set" {235test "comptime test error for empty error set" {
241 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO236 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
243237
244 try testComptimeTestErrorEmptySet(1234);238 try testComptimeTestErrorEmptySet(1234);
...@@ -255,8 +249,6 @@ fn testComptimeTestErrorEmptySet(x: EmptyErrorSet!i32) !void {...@@ -255,8 +249,6 @@ fn testComptimeTestErrorEmptySet(x: EmptyErrorSet!i32) !void {
255}249}
256250
257test "comptime err to int of error set with only 1 possible value" {251test "comptime err to int of error set with only 1 possible value" {
258 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
259
260 testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A));252 testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A));
261 comptime testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A));253 comptime testErrToIntWithOnePossibleValue(error.A, @errorToInt(error.A));
262}254}
...@@ -426,7 +418,6 @@ test "nested error union function call in optional unwrap" {...@@ -426,7 +418,6 @@ test "nested error union function call in optional unwrap" {
426}418}
427419
428test "return function call to error set from error union function" {420test "return function call to error set from error union function" {
429 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
430 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO421 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
431 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO422 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
432423
...@@ -486,7 +477,6 @@ test "nested catch" {...@@ -486,7 +477,6 @@ test "nested catch" {
486}477}
487478
488test "function pointer with return type that is error union with payload which is pointer of parent struct" {479test "function pointer with return type that is error union with payload which is pointer of parent struct" {
489 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
490 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO480 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
491481
492 const S = struct {482 const S = struct {
test/behavior/eval.zig-2
...@@ -138,7 +138,6 @@ test "pointer to type" {...@@ -138,7 +138,6 @@ test "pointer to type" {
138}138}
139139
140test "a type constructed in a global expression" {140test "a type constructed in a global expression" {
141 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO141 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
144143
...@@ -1515,7 +1514,6 @@ test "x or true is comptime-known true" {...@@ -1515,7 +1514,6 @@ test "x or true is comptime-known true" {
1515}1514}
15161515
1517test "non-optional and optional array elements concatenated" {1516test "non-optional and optional array elements concatenated" {
1518 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1519 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1517 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1520 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1518 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1521 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1519 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
test/behavior/floatop.zig-7
...@@ -21,7 +21,6 @@ fn epsForType(comptime T: type) T {...@@ -21,7 +21,6 @@ fn epsForType(comptime T: type) T {
2121
22test "floating point comparisons" {22test "floating point comparisons" {
23 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2625
27 try testFloatComparisons();26 try testFloatComparisons();
...@@ -91,7 +90,6 @@ fn testDifferentSizedFloatComparisons() !void {...@@ -91,7 +90,6 @@ fn testDifferentSizedFloatComparisons() !void {
9190
92test "negative f128 floatToInt at compile-time" {91test "negative f128 floatToInt at compile-time" {
93 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO92 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO94 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9795
...@@ -331,7 +329,6 @@ fn testExpWithVectors() !void {...@@ -331,7 +329,6 @@ fn testExpWithVectors() !void {
331329
332test "@exp2" {330test "@exp2" {
333 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO331 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
334 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
335 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO332 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
336 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO333 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
337 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO334 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -500,7 +497,6 @@ fn testLog10WithVectors() !void {...@@ -500,7 +497,6 @@ fn testLog10WithVectors() !void {
500497
501test "@fabs" {498test "@fabs" {
502 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO499 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
503 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
504 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO500 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
505 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO501 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
506 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO502 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -627,7 +623,6 @@ test "a third @fabs test, surely there should not be three fabs tests" {...@@ -627,7 +623,6 @@ test "a third @fabs test, surely there should not be three fabs tests" {
627623
628test "@floor" {624test "@floor" {
629 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO625 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
630 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
631 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO626 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
632 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO627 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
633 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO628 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -720,7 +715,6 @@ fn testFloorLegacy(comptime T: type, x: T) !void {...@@ -720,7 +715,6 @@ fn testFloorLegacy(comptime T: type, x: T) !void {
720715
721test "@ceil" {716test "@ceil" {
722 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO717 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
723 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
724 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO718 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
725 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO719 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
726 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO720 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -813,7 +807,6 @@ fn testCeilLegacy(comptime T: type, x: T) !void {...@@ -813,7 +807,6 @@ fn testCeilLegacy(comptime T: type, x: T) !void {
813807
814test "@trunc" {808test "@trunc" {
815 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO809 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
816 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
817 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO810 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
818 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO811 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
819 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO812 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/fn.zig-2
...@@ -275,7 +275,6 @@ test "implicit cast fn call result to optional in field result" {...@@ -275,7 +275,6 @@ test "implicit cast fn call result to optional in field result" {
275}275}
276276
277test "void parameters" {277test "void parameters" {
278 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
279 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;278 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
280 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;279 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
281280
...@@ -300,7 +299,6 @@ fn acceptsString(foo: []u8) void {...@@ -300,7 +299,6 @@ fn acceptsString(foo: []u8) void {
300}299}
301300
302test "function pointers" {301test "function pointers" {
303 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
304 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO302 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO303 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
306 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO304 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/for.zig-8
...@@ -110,7 +110,6 @@ test "basic for loop" {...@@ -110,7 +110,6 @@ test "basic for loop" {
110}110}
111111
112test "for with null and T peer types and inferred result location type" {112test "for with null and T peer types and inferred result location type" {
113 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
115 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;114 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
116 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO115 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -152,7 +151,6 @@ test "2 break statements and an else" {...@@ -152,7 +151,6 @@ test "2 break statements and an else" {
152}151}
153152
154test "for loop with pointer elem var" {153test "for loop with pointer elem var" {
155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -198,7 +196,6 @@ test "for copies its payload" {...@@ -198,7 +196,6 @@ test "for copies its payload" {
198}196}
199197
200test "for on slice with allowzero ptr" {198test "for on slice with allowzero ptr" {
201 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
202 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO199 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO200 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO201 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -253,7 +250,6 @@ test "for loop with else branch" {...@@ -253,7 +250,6 @@ test "for loop with else branch" {
253test "count over fixed range" {250test "count over fixed range" {
254 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO251 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
255 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
256 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
257253
258 var sum: usize = 0;254 var sum: usize = 0;
259 for (0..6) |i| {255 for (0..6) |i| {
...@@ -266,7 +262,6 @@ test "count over fixed range" {...@@ -266,7 +262,6 @@ test "count over fixed range" {
266test "two counters" {262test "two counters" {
267 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO263 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
269 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
270265
271 var sum: usize = 0;266 var sum: usize = 0;
272 for (0..10, 10..20) |i, j| {267 for (0..10, 10..20) |i, j| {
...@@ -280,7 +275,6 @@ test "two counters" {...@@ -280,7 +275,6 @@ test "two counters" {
280test "1-based counter and ptr to array" {275test "1-based counter and ptr to array" {
281 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO276 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
282 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO277 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
283 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
284278
285 var ok: usize = 0;279 var ok: usize = 0;
286280
...@@ -401,7 +395,6 @@ test "raw pointer and counter" {...@@ -401,7 +395,6 @@ test "raw pointer and counter" {
401test "inline for with slice as the comptime-known" {395test "inline for with slice as the comptime-known" {
402 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO396 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
403 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
404 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO398 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
406399
407 const comptime_slice = "hello";400 const comptime_slice = "hello";
...@@ -432,7 +425,6 @@ test "inline for with slice as the comptime-known" {...@@ -432,7 +425,6 @@ test "inline for with slice as the comptime-known" {
432test "inline for with counter as the comptime-known" {425test "inline for with counter as the comptime-known" {
433 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
434 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO427 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
435 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
436 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO428 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
437429
438 var runtime_slice = "hello";430 var runtime_slice = "hello";
test/behavior/generics.zig-3
...@@ -56,7 +56,6 @@ fn sameButWithFloats(a: f64, b: f64) f64 {...@@ -56,7 +56,6 @@ fn sameButWithFloats(a: f64, b: f64) f64 {
56}56}
5757
58test "fn with comptime args" {58test "fn with comptime args" {
59 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
60 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;60 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO61 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -67,7 +66,6 @@ test "fn with comptime args" {...@@ -67,7 +66,6 @@ test "fn with comptime args" {
67}66}
6867
69test "anytype params" {68test "anytype params" {
70 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
71 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;69 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
72 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;70 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
73 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO71 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -93,7 +91,6 @@ fn max_f64(a: f64, b: f64) f64 {...@@ -93,7 +91,6 @@ fn max_f64(a: f64, b: f64) f64 {
93}91}
9492
95test "type constructed by comptime function call" {93test "type constructed by comptime function call" {
96 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
97 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;94 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO95 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
9996
test/behavior/if.zig-1
...@@ -78,7 +78,6 @@ test "const result loc, runtime if cond, else unreachable" {...@@ -78,7 +78,6 @@ test "const result loc, runtime if cond, else unreachable" {
78}78}
7979
80test "if copies its payload" {80test "if copies its payload" {
81 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;81 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
83 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8483
test/behavior/inline_switch.zig-1
...@@ -46,7 +46,6 @@ const U = union(E) { a: void, b: u2, c: u3, d: u4 };...@@ -46,7 +46,6 @@ const U = union(E) { a: void, b: u2, c: u3, d: u4 };
46test "inline switch unions" {46test "inline switch unions" {
47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5150
52 var x: U = .a;51 var x: U = .a;
test/behavior/member_func.zig-2
...@@ -27,7 +27,6 @@ const HasFuncs = struct {...@@ -27,7 +27,6 @@ const HasFuncs = struct {
27};27};
2828
29test "standard field calls" {29test "standard field calls" {
30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -71,7 +70,6 @@ test "standard field calls" {...@@ -71,7 +70,6 @@ test "standard field calls" {
71}70}
7271
73test "@field field calls" {72test "@field field calls" {
74 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
75 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;74 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
77 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/null.zig-3
...@@ -50,7 +50,6 @@ test "rhs maybe unwrap return" {...@@ -50,7 +50,6 @@ test "rhs maybe unwrap return" {
50}50}
5151
52test "maybe return" {52test "maybe return" {
53 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
55 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;54 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
56 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO55 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -71,7 +70,6 @@ fn foo(x: ?i32) ?bool {...@@ -71,7 +70,6 @@ fn foo(x: ?i32) ?bool {
71}70}
7271
73test "test null runtime" {72test "test null runtime" {
74 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
75 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;73 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
76 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO74 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
7775
...@@ -184,7 +182,6 @@ const SillyStruct = struct {...@@ -184,7 +182,6 @@ const SillyStruct = struct {
184const here_is_a_null_literal = SillyStruct{ .context = null };182const here_is_a_null_literal = SillyStruct{ .context = null };
185183
186test "unwrap optional which is field of global var" {184test "unwrap optional which is field of global var" {
187 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
188 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;185 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
189 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
190 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO187 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/optional.zig-1
...@@ -274,7 +274,6 @@ test "0-bit child type coerced to optional return ptr result location" {...@@ -274,7 +274,6 @@ test "0-bit child type coerced to optional return ptr result location" {
274}274}
275275
276test "0-bit child type coerced to optional" {276test "0-bit child type coerced to optional" {
277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
279278
280 const S = struct {279 const S = struct {
test/behavior/pointers.zig-2
...@@ -190,7 +190,6 @@ test "compare equality of optional and non-optional pointer" {...@@ -190,7 +190,6 @@ test "compare equality of optional and non-optional pointer" {
190test "allowzero pointer and slice" {190test "allowzero pointer and slice" {
191 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO191 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO192 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
195 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196195
...@@ -510,7 +509,6 @@ test "ptrToInt on a generic function" {...@@ -510,7 +509,6 @@ test "ptrToInt on a generic function" {
510 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO509 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
511 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO510 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
512 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO511 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
513 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
514512
515 const S = struct {513 const S = struct {
516 fn generic(i: anytype) @TypeOf(i) {514 fn generic(i: anytype) @TypeOf(i) {
test/behavior/ptrcast.zig-1
...@@ -53,7 +53,6 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {...@@ -53,7 +53,6 @@ fn testReinterpretStructWrappedBytesAsInteger() !void {
53}53}
5454
55test "reinterpret bytes of an array into an extern struct" {55test "reinterpret bytes of an array into an extern struct" {
56 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
57 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO56 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
58 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO57 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5958
test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig-1
...@@ -5,7 +5,6 @@ const mem = std.mem;...@@ -5,7 +5,6 @@ const mem = std.mem;
55
6var ok: bool = false;6var ok: bool = false;
7test "reference a variable in an if after an if in the 2nd switch prong" {7test "reference a variable in an if after an if in the 2nd switch prong" {
8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/reflection.zig-1
...@@ -27,7 +27,6 @@ fn dummy(a: bool, b: i32, c: f32) i32 {...@@ -27,7 +27,6 @@ fn dummy(a: bool, b: i32, c: f32) i32 {
2727
28test "reflection: @field" {28test "reflection: @field" {
29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;29 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
30 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3231
33 var f = Foo{32 var f = Foo{
test/behavior/sizeof_and_typeof.zig-3
...@@ -18,7 +18,6 @@ test "@sizeOf on compile-time types" {...@@ -18,7 +18,6 @@ test "@sizeOf on compile-time types" {
18}18}
1919
20test "@TypeOf() with multiple arguments" {20test "@TypeOf() with multiple arguments" {
21 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
22 {21 {
23 var var_1: u32 = undefined;22 var var_1: u32 = undefined;
24 var var_2: u8 = undefined;23 var var_2: u8 = undefined;
...@@ -138,7 +137,6 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" {...@@ -138,7 +137,6 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" {
138}137}
139138
140test "@TypeOf() has no runtime side effects" {139test "@TypeOf() has no runtime side effects" {
141 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
142 const S = struct {140 const S = struct {
143 fn foo(comptime T: type, ptr: *T) T {141 fn foo(comptime T: type, ptr: *T) T {
144 ptr.* += 1;142 ptr.* += 1;
...@@ -153,7 +151,6 @@ test "@TypeOf() has no runtime side effects" {...@@ -153,7 +151,6 @@ test "@TypeOf() has no runtime side effects" {
153151
154test "branching logic inside @TypeOf" {152test "branching logic inside @TypeOf" {
155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;153 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
157 const S = struct {154 const S = struct {
158 var data: i32 = 0;155 var data: i32 = 0;
159 fn foo() anyerror!i32 {156 fn foo() anyerror!i32 {
test/behavior/slice.zig-9
...@@ -119,7 +119,6 @@ test "slice of type" {...@@ -119,7 +119,6 @@ test "slice of type" {
119}119}
120120
121test "generic malloc free" {121test "generic malloc free" {
122 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
123 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
124123
125 const a = memAlloc(u8, 10) catch unreachable;124 const a = memAlloc(u8, 10) catch unreachable;
...@@ -171,7 +170,6 @@ test "comptime pointer cast array and then slice" {...@@ -171,7 +170,6 @@ test "comptime pointer cast array and then slice" {
171170
172test "slicing zero length array" {171test "slicing zero length array" {
173 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
174 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
175 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
176174
177 const s1 = ""[0..];175 const s1 = ""[0..];
...@@ -185,8 +183,6 @@ test "slicing zero length array" {...@@ -185,8 +183,6 @@ test "slicing zero length array" {
185const x = @intToPtr([*]i32, 0x1000)[0..0x500];183const x = @intToPtr([*]i32, 0x1000)[0..0x500];
186const y = x[0x100..];184const y = x[0x100..];
187test "compile time slice of pointer to hard coded address" {185test "compile time slice of pointer to hard coded address" {
188 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
189
190 try expect(@ptrToInt(x) == 0x1000);186 try expect(@ptrToInt(x) == 0x1000);
191 try expect(x.len == 0x500);187 try expect(x.len == 0x500);
192188
...@@ -342,7 +338,6 @@ test "@ptrCast slice to pointer" {...@@ -342,7 +338,6 @@ test "@ptrCast slice to pointer" {
342}338}
343339
344test "slice syntax resulting in pointer-to-array" {340test "slice syntax resulting in pointer-to-array" {
345 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
346 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
347 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
348 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO343 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -477,7 +472,6 @@ test "slice syntax resulting in pointer-to-array" {...@@ -477,7 +472,6 @@ test "slice syntax resulting in pointer-to-array" {
477}472}
478473
479test "slice pointer-to-array null terminated" {474test "slice pointer-to-array null terminated" {
480 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
481 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO475 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
482 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO476 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
483477
...@@ -497,7 +491,6 @@ test "slice pointer-to-array null terminated" {...@@ -497,7 +491,6 @@ test "slice pointer-to-array null terminated" {
497}491}
498492
499test "slice pointer-to-array zero length" {493test "slice pointer-to-array zero length" {
500 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
501 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO494 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
502495
503 comptime {496 comptime {
...@@ -530,7 +523,6 @@ test "slice pointer-to-array zero length" {...@@ -530,7 +523,6 @@ test "slice pointer-to-array zero length" {
530}523}
531524
532test "type coercion of pointer to anon struct literal to pointer to slice" {525test "type coercion of pointer to anon struct literal to pointer to slice" {
533 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
534 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO526 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
535 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
536 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -730,7 +722,6 @@ test "slice with dereferenced value" {...@@ -730,7 +722,6 @@ test "slice with dereferenced value" {
730722
731test "empty slice ptr is non null" {723test "empty slice ptr is non null" {
732 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest; // TODO724 if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest; // TODO
733 if (builtin.zig_backend == .stage2_x86_64 and (builtin.os.tag == .macos or builtin.os.tag == .windows)) return error.SkipZigTest; // TODO
734725
735 const empty_slice: []u8 = &[_]u8{};726 const empty_slice: []u8 = &[_]u8{};
736 const p: [*]u8 = empty_slice.ptr + 0;727 const p: [*]u8 = empty_slice.ptr + 0;
test/behavior/struct.zig-5
...@@ -342,7 +342,6 @@ fn testPassSliceOfEmptyStructToFn(slice: []const EmptyStruct2) usize {...@@ -342,7 +342,6 @@ fn testPassSliceOfEmptyStructToFn(slice: []const EmptyStruct2) usize {
342test "self-referencing struct via array member" {342test "self-referencing struct via array member" {
343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;343 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO344 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
346 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
347346
348 const T = struct {347 const T = struct {
...@@ -536,7 +535,6 @@ test "implicit cast packed struct field to const ptr" {...@@ -536,7 +535,6 @@ test "implicit cast packed struct field to const ptr" {
536}535}
537536
538test "zero-bit field in packed struct" {537test "zero-bit field in packed struct" {
539 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
540 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO538 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
541539
542 const S = packed struct {540 const S = packed struct {
...@@ -719,7 +717,6 @@ test "pointer to packed struct member in a stack variable" {...@@ -719,7 +717,6 @@ test "pointer to packed struct member in a stack variable" {
719}717}
720718
721test "packed struct with u0 field access" {719test "packed struct with u0 field access" {
722 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
723 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO720 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
724721
725 const S = packed struct {722 const S = packed struct {
...@@ -1018,7 +1015,6 @@ test "type coercion of anon struct literal to struct" {...@@ -1018,7 +1015,6 @@ test "type coercion of anon struct literal to struct" {
1018}1015}
10191016
1020test "type coercion of pointer to anon struct literal to pointer to struct" {1017test "type coercion of pointer to anon struct literal to pointer to struct" {
1021 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1022 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1018 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1023 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1019 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1024 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1020 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1088,7 +1084,6 @@ test "packed struct with undefined initializers" {...@@ -1088,7 +1084,6 @@ test "packed struct with undefined initializers" {
1088}1084}
10891085
1090test "for loop over pointers to struct, getting field from struct pointer" {1086test "for loop over pointers to struct, getting field from struct pointer" {
1091 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1092 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1087 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1093 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1088 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10941089
test/behavior/struct_contains_null_ptr_itself.zig-1
...@@ -4,7 +4,6 @@ const builtin = @import("builtin");...@@ -4,7 +4,6 @@ const builtin = @import("builtin");
44
5test "struct contains null pointer which contains original struct" {5test "struct contains null pointer which contains original struct" {
6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
98
10 var x: ?*NodeLineComment = null;9 var x: ?*NodeLineComment = null;
test/behavior/switch.zig-2
...@@ -403,7 +403,6 @@ fn return_a_number() anyerror!i32 {...@@ -403,7 +403,6 @@ fn return_a_number() anyerror!i32 {
403}403}
404404
405test "switch on integer with else capturing expr" {405test "switch on integer with else capturing expr" {
406 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408407
409 const S = struct {408 const S = struct {
...@@ -577,7 +576,6 @@ test "switch prongs with cases with identical payload types" {...@@ -577,7 +576,6 @@ test "switch prongs with cases with identical payload types" {
577}576}
578577
579test "switch on pointer type" {578test "switch on pointer type" {
580 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
581 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO579 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
582 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO580 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
583581
test/behavior/threadlocal.zig-2
...@@ -4,7 +4,6 @@ const expect = std.testing.expect;...@@ -4,7 +4,6 @@ const expect = std.testing.expect;
44
5test "thread local variable" {5test "thread local variable" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
7 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_llvm) switch (builtin.cpu.arch) {9 if (builtin.zig_backend == .stage2_llvm) switch (builtin.cpu.arch) {
...@@ -40,7 +39,6 @@ threadlocal var buffer: [11]u8 = undefined;...@@ -40,7 +39,6 @@ threadlocal var buffer: [11]u8 = undefined;
4039
41test "reference a global threadlocal variable" {40test "reference a global threadlocal variable" {
42 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
46 if (builtin.zig_backend == .stage2_llvm) switch (builtin.cpu.arch) {44 if (builtin.zig_backend == .stage2_llvm) switch (builtin.cpu.arch) {
test/behavior/translate_c_macros.zig-1
...@@ -79,7 +79,6 @@ test "casting to union with a macro" {...@@ -79,7 +79,6 @@ test "casting to union with a macro" {
7979
80test "casting or calling a value with a paren-surrounded macro" {80test "casting or calling a value with a paren-surrounded macro" {
81 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO81 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
82 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
83 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO82 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
84 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO83 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
85 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO84 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/tuple.zig-1
...@@ -126,7 +126,6 @@ test "tuple initializer for var" {...@@ -126,7 +126,6 @@ test "tuple initializer for var" {
126}126}
127127
128test "array-like initializer for tuple types" {128test "array-like initializer for tuple types" {
129 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
130 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO130 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
132131
test/behavior/type.zig-4
...@@ -449,8 +449,6 @@ test "Type.Union" {...@@ -449,8 +449,6 @@ test "Type.Union" {
449}449}
450450
451test "Type.Union from Type.Enum" {451test "Type.Union from Type.Enum" {
452 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
453
454 const Tag = @Type(.{452 const Tag = @Type(.{
455 .Enum = .{453 .Enum = .{
456 .tag_type = u0,454 .tag_type = u0,
...@@ -475,8 +473,6 @@ test "Type.Union from Type.Enum" {...@@ -475,8 +473,6 @@ test "Type.Union from Type.Enum" {
475}473}
476474
477test "Type.Union from regular enum" {475test "Type.Union from regular enum" {
478 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
479
480 const E = enum { working_as_expected };476 const E = enum { working_as_expected };
481 const T = @Type(.{477 const T = @Type(.{
482 .Union = .{478 .Union = .{
test/behavior/type_info.zig-2
...@@ -509,7 +509,6 @@ test "type info for async frames" {...@@ -509,7 +509,6 @@ test "type info for async frames" {
509}509}
510510
511test "Declarations are returned in declaration order" {511test "Declarations are returned in declaration order" {
512 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
513 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO512 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
514513
515 const S = struct {514 const S = struct {
...@@ -532,7 +531,6 @@ test "Struct.is_tuple for anon list literal" {...@@ -532,7 +531,6 @@ test "Struct.is_tuple for anon list literal" {
532}531}
533532
534test "Struct.is_tuple for anon struct literal" {533test "Struct.is_tuple for anon struct literal" {
535 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
536 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO534 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
537535
538 const info = @typeInfo(@TypeOf(.{ .a = 0 }));536 const info = @typeInfo(@TypeOf(.{ .a = 0 }));
test/behavior/union.zig-11
...@@ -11,7 +11,6 @@ const FooWithFloats = union {...@@ -11,7 +11,6 @@ const FooWithFloats = union {
11};11};
1212
13test "basic unions with floats" {13test "basic unions with floats" {
14 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
15 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;14 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
17 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO16 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -215,7 +214,6 @@ const Payload = union(Letter) {...@@ -215,7 +214,6 @@ const Payload = union(Letter) {
215};214};
216215
217test "union with specified enum tag" {216test "union with specified enum tag" {
218 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;217 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
220 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO219 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -225,7 +223,6 @@ test "union with specified enum tag" {...@@ -225,7 +223,6 @@ test "union with specified enum tag" {
225}223}
226224
227test "packed union generates correctly aligned type" {225test "packed union generates correctly aligned type" {
228 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
230 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
231 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO228 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -379,7 +376,6 @@ test "union with only 1 field which is void should be zero bits" {...@@ -379,7 +376,6 @@ test "union with only 1 field which is void should be zero bits" {
379}376}
380377
381test "tagged union initialization with runtime void" {378test "tagged union initialization with runtime void" {
382 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;379 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
384 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;380 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
385 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO381 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -400,7 +396,6 @@ fn testTaggedUnionInit(x: anytype) bool {...@@ -400,7 +396,6 @@ fn testTaggedUnionInit(x: anytype) bool {
400pub const UnionEnumNoPayloads = union(enum) { A, B };396pub const UnionEnumNoPayloads = union(enum) { A, B };
401397
402test "tagged union with no payloads" {398test "tagged union with no payloads" {
403 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;399 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;400 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
406 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO401 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -466,7 +461,6 @@ pub const FooUnion = union(enum) {...@@ -466,7 +461,6 @@ pub const FooUnion = union(enum) {
466var glbl_array: [2]FooUnion = undefined;461var glbl_array: [2]FooUnion = undefined;
467462
468test "initialize global array of union" {463test "initialize global array of union" {
469 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
470 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;464 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
471 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;465 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
472 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO466 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -494,7 +488,6 @@ test "update the tag value for zero-sized unions" {...@@ -494,7 +488,6 @@ test "update the tag value for zero-sized unions" {
494488
495test "union initializer generates padding only if needed" {489test "union initializer generates padding only if needed" {
496 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;490 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
497 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
498 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;491 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
499 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO492 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
500 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO493 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -561,7 +554,6 @@ const FooNoVoid = union(enum) {...@@ -561,7 +554,6 @@ const FooNoVoid = union(enum) {
561const Baz = enum { A, B, C, D };554const Baz = enum { A, B, C, D };
562555
563test "tagged union type" {556test "tagged union type" {
564 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
565 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO557 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
566558
567 const foo1 = TaggedFoo{ .One = 13 };559 const foo1 = TaggedFoo{ .One = 13 };
...@@ -598,7 +590,6 @@ fn returnAnInt(x: i32) TaggedFoo {...@@ -598,7 +590,6 @@ fn returnAnInt(x: i32) TaggedFoo {
598}590}
599591
600test "tagged union with all void fields but a meaningful tag" {592test "tagged union with all void fields but a meaningful tag" {
601 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
602 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;593 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
603 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;594 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
604 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO595 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -777,7 +768,6 @@ fn Setter(comptime attr: Attribute) type {...@@ -777,7 +768,6 @@ fn Setter(comptime attr: Attribute) type {
777}768}
778769
779test "return union init with void payload" {770test "return union init with void payload" {
780 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
781 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;771 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
782 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;772 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
783 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO773 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
...@@ -913,7 +903,6 @@ test "extern union doesn't trigger field check at comptime" {...@@ -913,7 +903,6 @@ test "extern union doesn't trigger field check at comptime" {
913test "anonymous union literal syntax" {903test "anonymous union literal syntax" {
914 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO904 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
915 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO905 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
916 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
917 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO906 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
918907
919 const S = struct {908 const S = struct {
test/behavior/union_with_members.zig-1
...@@ -18,7 +18,6 @@ const ET = union(enum) {...@@ -18,7 +18,6 @@ const ET = union(enum) {
1818
19test "enum with members" {19test "enum with members" {
20 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO20 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO21 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
24 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/vector.zig-6
...@@ -382,7 +382,6 @@ test "store vector elements via runtime index" {...@@ -382,7 +382,6 @@ test "store vector elements via runtime index" {
382}382}
383383
384test "initialize vector which is a struct field" {384test "initialize vector which is a struct field" {
385 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO385 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
387 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO386 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
388 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO387 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -794,7 +793,6 @@ test "vector reduce operation" {...@@ -794,7 +793,6 @@ test "vector reduce operation" {
794793
795test "vector @reduce comptime" {794test "vector @reduce comptime" {
796 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO795 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
797 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
798 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO796 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
799 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO797 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
800 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO798 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1069,7 +1067,6 @@ test "alignment of vectors" {...@@ -1069,7 +1067,6 @@ test "alignment of vectors" {
10691067
1070test "loading the second vector from a slice of vectors" {1068test "loading the second vector from a slice of vectors" {
1071 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1069 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1072 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1073 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1070 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1074 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1071 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1075 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1072 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1150,7 +1147,6 @@ test "byte vector initialized in inline function" {...@@ -1150,7 +1147,6 @@ test "byte vector initialized in inline function" {
11501147
1151test "zero divisor" {1148test "zero divisor" {
1152 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1149 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1153 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1150 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1151 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1156 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1152 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1171,7 +1167,6 @@ test "zero divisor" {...@@ -1171,7 +1167,6 @@ test "zero divisor" {
11711167
1172test "zero multiplicand" {1168test "zero multiplicand" {
1173 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1169 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1174 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1170 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1177 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1172 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -1234,7 +1229,6 @@ test "load packed vector element" {...@@ -1234,7 +1229,6 @@ test "load packed vector element" {
1234 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1229 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1235 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1230 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1236 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1231 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1237 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12381232
1239 var x: @Vector(2, u15) = .{ 1, 4 };1233 var x: @Vector(2, u15) = .{ 1, 4 };
1240 try expect((&x[0]).* == 1);1234 try expect((&x[0]).* == 1);
test/behavior/void.zig-1
...@@ -33,7 +33,6 @@ fn times(n: usize) []const void {...@@ -33,7 +33,6 @@ fn times(n: usize) []const void {
33}33}
3434
35test "void optional" {35test "void optional" {
36 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
37 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;36 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;37 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO38 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/while.zig-8
...@@ -104,7 +104,6 @@ fn testBreakOuter() void {...@@ -104,7 +104,6 @@ fn testBreakOuter() void {
104}104}
105105
106test "while copies its payload" {106test "while copies its payload" {
107 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
108 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;107 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
109 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO108 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
110109
...@@ -143,7 +142,6 @@ fn runContinueAndBreakTest() !void {...@@ -143,7 +142,6 @@ fn runContinueAndBreakTest() !void {
143}142}
144143
145test "while with optional as condition" {144test "while with optional as condition" {
146 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;145 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
148 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO146 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
149147
...@@ -156,7 +154,6 @@ test "while with optional as condition" {...@@ -156,7 +154,6 @@ test "while with optional as condition" {
156}154}
157155
158test "while with optional as condition with else" {156test "while with optional as condition with else" {
159 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
160 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;157 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
161 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO158 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
162159
...@@ -174,7 +171,6 @@ test "while with optional as condition with else" {...@@ -174,7 +171,6 @@ test "while with optional as condition with else" {
174}171}
175172
176test "while with error union condition" {173test "while with error union condition" {
177 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
178 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO174 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
179175
180 numbers_left = 10;176 numbers_left = 10;
...@@ -205,7 +201,6 @@ test "while on bool with else result follow break prong" {...@@ -205,7 +201,6 @@ test "while on bool with else result follow break prong" {
205}201}
206202
207test "while on optional with else result follow else prong" {203test "while on optional with else result follow else prong" {
208 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
210 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO206 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -217,7 +212,6 @@ test "while on optional with else result follow else prong" {...@@ -217,7 +212,6 @@ test "while on optional with else result follow else prong" {
217}212}
218213
219test "while on optional with else result follow break prong" {214test "while on optional with else result follow break prong" {
220 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
221 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
222 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;216 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
223 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO217 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -290,7 +284,6 @@ test "while bool 2 break statements and an else" {...@@ -290,7 +284,6 @@ test "while bool 2 break statements and an else" {
290}284}
291285
292test "while optional 2 break statements and an else" {286test "while optional 2 break statements and an else" {
293 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO287 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
295 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO288 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
296 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO289 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -310,7 +303,6 @@ test "while optional 2 break statements and an else" {...@@ -310,7 +303,6 @@ test "while optional 2 break statements and an else" {
310}303}
311304
312test "while error 2 break statements and an else" {305test "while error 2 break statements and an else" {
313 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
314 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO306 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
315 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO307 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
316 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO308 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/widening.zig-1
...@@ -28,7 +28,6 @@ test "integer widening u0 to u8" {...@@ -28,7 +28,6 @@ test "integer widening u0 to u8" {
28}28}
2929
30test "implicit unsigned integer to signed integer" {30test "implicit unsigned integer to signed integer" {
31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
32 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO31 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
33 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO32 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
3433
tools/lldb_pretty_printers.py+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1# pretty printing for the zig language, zig standard library, and zig stage 2 compiler.1# pretty printing for the zig language, zig standard library, and zig stage 2 compiler.
2# put commands in ~/.lldbinit to run them automatically when starting lldb2# put commands in ~/.lldbinit to run them automatically when starting lldb
3# `command script /path/to/stage2_lldb_pretty_printers.py` to import this file3# `command script import /path/to/zig/tools/lldb_pretty_printers.py` to import this file
4# `type category enable zig` to enable pretty printing for the zig language4# `type category enable zig` to enable pretty printing for the zig language
5# `type category enable zig.std` to enable pretty printing for the zig standard library5# `type category enable zig.std` to enable pretty printing for the zig standard library
6# `type category enable zig.stage2` to enable pretty printing for the zig stage 2 compiler6# `type category enable zig.stage2` to enable pretty printing for the zig stage 2 compiler