| author | |
| committer | |
| log | a2c6ecd6dc0bdbe2396be9b055852324f16d34c9 |
| tree | 4931a3dcef12430f8ef7788db233e74559baea46 |
| parent | 4414f9c46e778a58c6d08df3c6ab604449abf38d |
| parent | d70955b0df92fdd0fdf3680f7f297a4cc676ee5a |
| signature |
x86_64: fix various backend crashes62 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 | }; |
| 209 | 208 | ||
| 210 | const StackAllocation = struct { | 209 | const 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 { |
| 1038 | fn processDeath(self: *Self, inst: Air.Inst.Index) void { | 1037 | fn 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 | } |
| 1111 | 1110 | ||
| 1112 | fn allocMem(self: *Self, inst: Air.Inst.Index, abi_size: u32, abi_align: u32) !u32 { | 1111 | fn 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 appending | 1114 | // 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 | } |
| 1143 | 1142 | ||
| 1144 | fn allocRegOrMem(self: *Self, inst: Air.Inst.Index, reg_ok: bool) !MCValue { | 1143 | fn 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 | |||
| 1147 | fn allocTempRegOrMem(self: *Self, elem_ty: Type, reg_ok: bool) !MCValue { | ||
| 1148 | return self.allocRegOrMemAdvanced(elem_ty, null, reg_ok); | ||
| 1149 | } | ||
| 1150 | |||
| 1151 | fn 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 { |
| 1219 | pub fn spillInstruction(self: *Self, reg: Register, inst: Air.Inst.Index) !void { | 1225 | pub 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 |
| 1236 | 1242 | ||
| 1237 | pub fn spillEflagsIfOccupied(self: *Self) !void { | 1243 | pub 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.*)); |
| 3045 | 3060 | ||
| 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 { |
| 3104 | 3119 | ||
| 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); |
| 3109 | 3127 | ||
| ... | @@ -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 | // TODO | 3646 | 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); |
| 3971 | 4012 | ||
| 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, because | 4017 | // 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(); |
| 4412 | 4453 | ||
| 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 | } | ||
| 4417 | 4457 | ||
| 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); | ||
| 4423 | 4464 | ||
| 4424 | // Revert to the previous register and stack allocation state. | 4465 | // Revert to the previous register and stack allocation state. |
| 4425 | 4466 | ||
| ... | @@ -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 { |
| 4430 | 4471 | ||
| 4431 | try self.performReloc(reloc); | 4472 | try self.performReloc(reloc); |
| 4432 | 4473 | ||
| 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 | } | ||
| 4437 | 4477 | ||
| 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); | ||
| 4443 | 4484 | ||
| 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); |
| 4567 | 4608 | ||
| 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); |
| 4578 | 4617 | ||
| 4579 | const result = try self.isNull(inst, ptr_ty.elemType(), operand); | 4618 | const result = try self.isNull(inst, elem_ty, operand); |
| 4580 | 4619 | ||
| 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); |
| 4607 | 4646 | ||
| 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); |
| 4618 | 4655 | ||
| 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 overwrite | 4758 | // break instruction will choose a MCValue for the block result and overwrite |
| 4722 | // this field. Following break instructions will use that MCValue to put their | 4759 | // 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); |
| 4727 | 4764 | ||
| ... | @@ -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); |
| 4844 | 4881 | ||
| 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 | } |
| 4849 | 4886 | ||
| 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(); |
| 4852 | 4889 | ||
| 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 | } | ||
| 4857 | 4893 | ||
| 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 | } |
| 4862 | 4898 | ||
| 4863 | try self.genBody(case_body); | 4899 | try self.genBody(case_body); |
| 4900 | } | ||
| 4864 | 4901 | ||
| 4865 | branch_stack.appendAssumeCapacity(self.branch_stack.pop()); | 4902 | branch_stack.appendAssumeCapacity(self.branch_stack.pop()); |
| 4866 | 4903 | ||
| ... | @@ -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(); |
| 4880 | 4917 | ||
| 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 | } | ||
| 4885 | 4921 | ||
| 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 | } |
| 4891 | 4927 | ||
| 4892 | try self.genBody(else_body); | 4928 | try self.genBody(else_body); |
| 4929 | } | ||
| 4893 | 4930 | ||
| 4894 | branch_stack.appendAssumeCapacity(self.branch_stack.pop()); | 4931 | branch_stack.appendAssumeCapacity(self.branch_stack.pop()); |
| 4895 | 4932 | ||
| ... | @@ -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()); |
| 4927 | 4964 | ||
| 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) orelse | 5175 | 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 | }; |
| 5152 | 5182 | ||
| ... | @@ -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 elem | 6256 | 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; |
| 6300 | 6333 | ||
| 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 | } |
| 6320 | 6353 | ||
| 6321 | fn getResolvedInstValue(self: *Self, inst: Air.Inst.Index) MCValue { | 6354 | fn 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 values | 6446 | // 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 | }; |
| 6439 | 6471 | ||
| 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()); |
| 6442 | 6474 | ||
| 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; // fallthrough | 6484 | 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 => {}, // fallthrough | 6488 | .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 | } |
| 6468 | 6500 | ||
| ... | @@ -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 values | 6521 | // 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 | }; |
| 6515 | 6547 | ||
| 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 | } |
| 6527 | 6559 |
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 | } |
| 569 | 569 | ||
| 570 | test "comptime alloc alignment" { | 570 | test "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; // TODO | 571 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 573 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 572 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 574 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 573 | 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" { |
| 591 | test "type coercion of pointer to anon struct literal to pointer to array" { | 591 | test "type coercion of pointer to anon struct literal to pointer to array" { |
| 592 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 592 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 593 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 593 | 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; // TODO | 594 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 596 | 595 | ||
| 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 |
| 63 | test "sharded table" { | 63 | test "sharded table" { |
| 64 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 64 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 65 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 65 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 66 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 67 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 66 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 68 | 67 | ||
| 69 | // realistic 16-way sharding | 68 | // realistic 16-way sharding |
test/behavior/bitreverse.zig-1| ... | @@ -150,7 +150,6 @@ fn vector0() !void { | ... | @@ -150,7 +150,6 @@ fn vector0() !void { |
| 150 | 150 | ||
| 151 | test "bitReverse vectors u0" { | 151 | test "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; | ||
| 154 | 153 | ||
| 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; |
| 4 | const expect = std.testing.expect; | 4 | const expect = std.testing.expect; |
| 5 | 5 | ||
| 6 | test "comptime code should not modify constant data" { | 6 | test "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; // TODO | 8 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 10 | 9 |
test/behavior/bugs/11046.zig-1| ... | @@ -10,7 +10,6 @@ fn bar() !void { | ... | @@ -10,7 +10,6 @@ fn bar() !void { |
| 10 | } | 10 | } |
| 11 | 11 | ||
| 12 | test "fixed" { | 12 | test "fixed" { |
| 13 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 14 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 13 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 15 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 14 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 16 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 15 | 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; |
| 4 | 4 | ||
| 5 | test "slicing zero length array field of struct" { | 5 | test "slicing zero length array field of struct" { |
| 6 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 6 | 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; // TODO | 7 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 8 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 10 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 9 | 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 { |
| 7 | 7 | ||
| 8 | test { | 8 | test { |
| 9 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 9 | 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; // TODO | 10 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 12 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 11 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 13 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 12 | 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); |
| 6 | 6 | ||
| 7 | test { | 7 | test { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 8 | 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; // TODO | 9 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 11 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 12 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 11 | 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"); |
| 3 | 3 | ||
| 4 | test { | 4 | test { |
| 5 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 5 | 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; // TODO | 6 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 8 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 9 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 8 | 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 | } |
| 11 | test { | 11 | test { |
| 12 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 12 | 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; // TODO | 13 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 15 | 14 | ||
| 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 { |
| 8 | 8 | ||
| 9 | test { | 9 | test { |
| 10 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 10 | 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; // TODO | 11 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 13 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 12 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 14 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 13 | 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 | }; |
| 10 | 10 | ||
| 11 | test "functions with return type required to be comptime are generic" { | 11 | test "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 { |
| 13 | test "slices pointing at the same address as global array." { | 13 | test "slices pointing at the same address as global array." { |
| 14 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 14 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 15 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 15 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 16 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 17 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 16 | 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; |
| 4 | 4 | ||
| 5 | test "reslice of undefined global var slice" { | 5 | test "reslice of undefined global var slice" { |
| 6 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 6 | 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; // TODO | 7 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 8 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 10 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 9 | 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 { |
| 6 | 6 | ||
| 7 | test { | 7 | test { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 8 | 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; // TODO | 9 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 11 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 12 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 11 | 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 { |
| 37 | test "fixed" { | 37 | test "fixed" { |
| 38 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 38 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 39 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 39 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 40 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 41 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 40 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 42 | if (builtin.zig_backend == .stage2_llvm and | 41 | 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; |
| 11 | const builtin = @import("builtin"); | 11 | const builtin = @import("builtin"); |
| 12 | 12 | ||
| 13 | test "fixed" { | 13 | test "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"); |
| 2 | const expect = @import("std").testing.expect; | 2 | const expect = @import("std").testing.expect; |
| 3 | 3 | ||
| 4 | test "bitCast to array" { | 4 | test "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; // TODO | 5 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 7 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 6 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 8 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 7 | 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; |
| 21 | test "assignment of field with padding" { | 21 | test "assignment of field with padding" { |
| 22 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 22 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 23 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 23 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 24 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 25 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 24 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 26 | 25 | ||
| 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 |
| 12 | test "crash" { | 12 | test "crash" { |
| 13 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 13 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 14 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 14 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 15 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 16 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 15 | 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 { |
| 13 | test "optional if after an if in a switch prong of a switch with 2 prongs in an else" { | 13 | test "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; // TODO | 16 | 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 { |
| 6 | 6 | ||
| 7 | test { | 7 | test { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 8 | 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; // TODO | 9 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 11 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 12 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 11 | 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 { |
| 116 | 116 | ||
| 117 | test "@byteSwap vectors u0" { | 117 | test "@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; | ||
| 120 | 119 | ||
| 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"); |
| 4 | var result: []const u8 = "wrong"; | 4 | var result: []const u8 = "wrong"; |
| 5 | 5 | ||
| 6 | test "pass string literal byvalue to a generic var param" { | 6 | test "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; // TODO | 7 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 9 | 8 | ||
| 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" { |
| 21 | test "basic invocations" { | 21 | test "basic invocations" { |
| 22 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 22 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 23 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 23 | 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; // TODO | 24 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 26 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 25 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 27 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 26 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | @@ -56,7 +55,6 @@ test "basic invocations" { | ... | @@ -56,7 +55,6 @@ test "basic invocations" { |
| 56 | test "tuple parameters" { | 55 | test "tuple parameters" { |
| 57 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 56 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 58 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 57 | 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; // TODO | 58 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 61 | 59 | ||
| 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 { |
| 176 | 176 | ||
| 177 | test "implicitly cast indirect pointer to maybe-indirect pointer" { | 177 | test "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; // TODO | 179 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 181 | 180 | ||
| 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" { |
| 318 | 317 | ||
| 319 | test "*const ?[*]const T to [*c]const [*c]const T" { | 318 | test "*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; // TODO | 320 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 323 | 321 | ||
| 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 { |
| 588 | 586 | ||
| 589 | test "cast *[1][*]const u8 to [*]const ?[*]const u8" { | 587 | test "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; // TODO | 589 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 593 | 590 | ||
| 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" { |
| 927 | 924 | ||
| 928 | test "peer cast [*:x]T to [*]T" { | 925 | test "peer cast [*:x]T to [*]T" { |
| 929 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 926 | 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; // TODO | 927 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 932 | 928 | ||
| 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" { |
| 948 | test "peer cast [:x]T to [*:x]T" { | 944 | test "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; // TODO | 946 | 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; // TODO | 947 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 953 | 948 | ||
| 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" { |
| 989 | 984 | ||
| 990 | test "peer type resolution implicit cast to variable type" { | 985 | test "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; // TODO | 987 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 994 | 988 | ||
| 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 | } |
| 1113 | 1107 | ||
| 1114 | test "compile time int to ptr of function" { | 1108 | test "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 | } |
| 1119 | 1111 | ||
| ... | @@ -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" { |
| 1505 | test "bitcast packed struct with u0" { | 1497 | test "bitcast packed struct with u0" { |
| 1506 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1498 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1507 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1499 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1508 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 1509 | 1500 | ||
| 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 | } |
| 51 | 51 | ||
| 52 | test "return variable while defer expression in scope to modify it" { | 52 | test "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; // TODO | 55 | 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 | } |
| 938 | 938 | ||
| 939 | test "constant enum initialization with differing sizes" { | 939 | test "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; // TODO | 942 | 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 | } |
| 1138 | 1137 | ||
| 1139 | test "size of enum with only one tag which has explicit integer tag type" { | 1138 | test "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; // TODO | 1140 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1143 | 1141 |
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 | } |
| 145 | 145 | ||
| 146 | test "fn returning empty error set can be passed as fn returning any error" { | 146 | test "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 | } |
| 152 | 150 | ||
| 153 | test "fn returning empty error set can be passed as fn returning any error - pointer" { | 151 | test "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 | } |
| 220 | 216 | ||
| 221 | test "explicit error set cast" { | 217 | test "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; // TODO | 218 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 224 | 219 | ||
| 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 | } |
| 239 | 234 | ||
| 240 | test "comptime test error for empty error set" { | 235 | test "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; // TODO | 236 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 243 | 237 | ||
| 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 | } |
| 256 | 250 | ||
| 257 | test "comptime err to int of error set with only 1 possible value" { | 251 | test "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 | } |
| 427 | 419 | ||
| 428 | test "return function call to error set from error union function" { | 420 | test "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; // TODO | 421 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 431 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 422 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 432 | 423 | ||
| ... | @@ -486,7 +477,6 @@ test "nested catch" { | ... | @@ -486,7 +477,6 @@ test "nested catch" { |
| 486 | } | 477 | } |
| 487 | 478 | ||
| 488 | test "function pointer with return type that is error union with payload which is pointer of parent struct" { | 479 | test "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; // TODO | 480 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 491 | 481 | ||
| 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 | } |
| 139 | 139 | ||
| 140 | test "a type constructed in a global expression" { | 140 | test "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; // TODO | 141 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 143 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 142 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 144 | 143 | ||
| ... | @@ -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 | } |
| 1516 | 1515 | ||
| 1517 | test "non-optional and optional array elements concatenated" { | 1516 | test "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; // TODO | 1517 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1520 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1518 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1521 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1519 | 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 { |
| 21 | 21 | ||
| 22 | test "floating point comparisons" { | 22 | test "floating point comparisons" { |
| 23 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 23 | 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; // TODO | 24 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 26 | 25 | ||
| 27 | try testFloatComparisons(); | 26 | try testFloatComparisons(); |
| ... | @@ -91,7 +90,6 @@ fn testDifferentSizedFloatComparisons() !void { | ... | @@ -91,7 +90,6 @@ fn testDifferentSizedFloatComparisons() !void { |
| 91 | 90 | ||
| 92 | test "negative f128 floatToInt at compile-time" { | 91 | test "negative f128 floatToInt at compile-time" { |
| 93 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 92 | 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; // TODO | 93 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 96 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 94 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 97 | 95 | ||
| ... | @@ -331,7 +329,6 @@ fn testExpWithVectors() !void { | ... | @@ -331,7 +329,6 @@ fn testExpWithVectors() !void { |
| 331 | 329 | ||
| 332 | test "@exp2" { | 330 | test "@exp2" { |
| 333 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 331 | 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; // TODO | 332 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 336 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 333 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 337 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 334 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | @@ -500,7 +497,6 @@ fn testLog10WithVectors() !void { | ... | @@ -500,7 +497,6 @@ fn testLog10WithVectors() !void { |
| 500 | 497 | ||
| 501 | test "@fabs" { | 498 | test "@fabs" { |
| 502 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 499 | 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; // TODO | 500 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 505 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 501 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 506 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 502 | 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" { |
| 627 | 623 | ||
| 628 | test "@floor" { | 624 | test "@floor" { |
| 629 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 625 | 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; // TODO | 626 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 632 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 627 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 633 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 628 | 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 { |
| 720 | 715 | ||
| 721 | test "@ceil" { | 716 | test "@ceil" { |
| 722 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 717 | 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; // TODO | 718 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 725 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 719 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 726 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 720 | 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 { |
| 813 | 807 | ||
| 814 | test "@trunc" { | 808 | test "@trunc" { |
| 815 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 809 | 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; // TODO | 810 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 818 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 811 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 819 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 812 | 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 | } |
| 276 | 276 | ||
| 277 | test "void parameters" { | 277 | test "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; |
| 281 | 280 | ||
| ... | @@ -300,7 +299,6 @@ fn acceptsString(foo: []u8) void { | ... | @@ -300,7 +299,6 @@ fn acceptsString(foo: []u8) void { |
| 300 | } | 299 | } |
| 301 | 300 | ||
| 302 | test "function pointers" { | 301 | test "function pointers" { |
| 303 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 304 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 302 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 305 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 303 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 306 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 304 | 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 | } |
| 111 | 111 | ||
| 112 | test "for with null and T peer types and inferred result location type" { | 112 | test "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; // TODO | 115 | 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 | } |
| 153 | 152 | ||
| 154 | test "for loop with pointer elem var" { | 153 | test "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; // TODO | 154 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 157 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 155 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 158 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 156 | 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 | } |
| 199 | 197 | ||
| 200 | test "for on slice with allowzero ptr" { | 198 | test "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; // TODO | 199 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 203 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 200 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 204 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 201 | 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" { |
| 253 | test "count over fixed range" { | 250 | test "count over fixed range" { |
| 254 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 251 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 255 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 252 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 256 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 257 | 253 | ||
| 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" { |
| 266 | test "two counters" { | 262 | test "two counters" { |
| 267 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 263 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 268 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 264 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 269 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 270 | 265 | ||
| 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" { |
| 280 | test "1-based counter and ptr to array" { | 275 | test "1-based counter and ptr to array" { |
| 281 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 276 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 282 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 277 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 283 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 284 | 278 | ||
| 285 | var ok: usize = 0; | 279 | var ok: usize = 0; |
| 286 | 280 | ||
| ... | @@ -401,7 +395,6 @@ test "raw pointer and counter" { | ... | @@ -401,7 +395,6 @@ test "raw pointer and counter" { |
| 401 | test "inline for with slice as the comptime-known" { | 395 | test "inline for with slice as the comptime-known" { |
| 402 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 396 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 403 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 397 | 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; // TODO | 398 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 406 | 399 | ||
| 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" { |
| 432 | test "inline for with counter as the comptime-known" { | 425 | test "inline for with counter as the comptime-known" { |
| 433 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 426 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 434 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 427 | 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; // TODO | 428 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 437 | 429 | ||
| 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 | } |
| 57 | 57 | ||
| 58 | test "fn with comptime args" { | 58 | test "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; // TODO | 61 | 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 | } |
| 68 | 67 | ||
| 69 | test "anytype params" { | 68 | test "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; // TODO | 71 | 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 | } |
| 94 | 92 | ||
| 95 | test "type constructed by comptime function call" { | 93 | test "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; // TODO | 95 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 99 | 96 |
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 | } |
| 79 | 79 | ||
| 80 | test "if copies its payload" { | 80 | test "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; // TODO | 82 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 84 | 83 |
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 }; |
| 46 | test "inline switch unions" { | 46 | test "inline switch unions" { |
| 47 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 47 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 48 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 48 | 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; // TODO | 49 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 51 | 50 | ||
| 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 | }; |
| 28 | 28 | ||
| 29 | test "standard field calls" { | 29 | test "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; // TODO | 32 | 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 | } |
| 72 | 71 | ||
| 73 | test "@field field calls" { | 72 | test "@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; // TODO | 75 | 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 | } |
| 51 | 51 | ||
| 52 | test "maybe return" { | 52 | test "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; // TODO | 55 | 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 | } |
| 72 | 71 | ||
| 73 | test "test null runtime" { | 72 | test "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; // TODO | 74 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 77 | 75 | ||
| ... | @@ -184,7 +182,6 @@ const SillyStruct = struct { | ... | @@ -184,7 +182,6 @@ const SillyStruct = struct { |
| 184 | const here_is_a_null_literal = SillyStruct{ .context = null }; | 182 | const here_is_a_null_literal = SillyStruct{ .context = null }; |
| 185 | 183 | ||
| 186 | test "unwrap optional which is field of global var" { | 184 | test "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; // TODO | 187 | 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 | } |
| 275 | 275 | ||
| 276 | test "0-bit child type coerced to optional" { | 276 | test "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; // TODO | 277 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 279 | 278 | ||
| 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" { |
| 190 | test "allowzero pointer and slice" { | 190 | test "allowzero pointer and slice" { |
| 191 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO | 191 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 192 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 192 | 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; // TODO | 194 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 196 | 195 | ||
| ... | @@ -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; // TODO | 509 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 511 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 510 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 512 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 511 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 513 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 514 | 512 | ||
| 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 | } |
| 54 | 54 | ||
| 55 | test "reinterpret bytes of an array into an extern struct" { | 55 | test "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; // TODO | 56 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 58 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 57 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 59 | 58 |
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; |
| 5 | 5 | ||
| 6 | var ok: bool = false; | 6 | var ok: bool = false; |
| 7 | test "reference a variable in an if after an if in the 2nd switch prong" { | 7 | test "reference a variable in an if after an if in the 2nd switch prong" { |
| 8 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 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; // TODO | 10 | 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 { |
| 27 | 27 | ||
| 28 | test "reflection: @field" { | 28 | test "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; // TODO | 30 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 32 | 31 | ||
| 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 | } |
| 19 | 19 | ||
| 20 | test "@TypeOf() with multiple arguments" { | 20 | test "@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 | } |
| 139 | 138 | ||
| 140 | test "@TypeOf() has no runtime side effects" { | 139 | test "@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" { |
| 153 | 151 | ||
| 154 | test "branching logic inside @TypeOf" { | 152 | test "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 | } |
| 120 | 120 | ||
| 121 | test "generic malloc free" { | 121 | test "generic malloc free" { |
| 122 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 123 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 122 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 124 | 123 | ||
| 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" { |
| 171 | 170 | ||
| 172 | test "slicing zero length array" { | 171 | test "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; // TODO | 173 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 176 | 174 | ||
| 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" { |
| 185 | const x = @intToPtr([*]i32, 0x1000)[0..0x500]; | 183 | const x = @intToPtr([*]i32, 0x1000)[0..0x500]; |
| 186 | const y = x[0x100..]; | 184 | const y = x[0x100..]; |
| 187 | test "compile time slice of pointer to hard coded address" { | 185 | test "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); |
| 192 | 188 | ||
| ... | @@ -342,7 +338,6 @@ test "@ptrCast slice to pointer" { | ... | @@ -342,7 +338,6 @@ test "@ptrCast slice to pointer" { |
| 342 | } | 338 | } |
| 343 | 339 | ||
| 344 | test "slice syntax resulting in pointer-to-array" { | 340 | test "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; // TODO | 341 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 347 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 342 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 348 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 343 | 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 | } |
| 478 | 473 | ||
| 479 | test "slice pointer-to-array null terminated" { | 474 | test "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; // TODO | 475 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 482 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 476 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 483 | 477 | ||
| ... | @@ -497,7 +491,6 @@ test "slice pointer-to-array null terminated" { | ... | @@ -497,7 +491,6 @@ test "slice pointer-to-array null terminated" { |
| 497 | } | 491 | } |
| 498 | 492 | ||
| 499 | test "slice pointer-to-array zero length" { | 493 | test "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; // TODO | 494 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 502 | 495 | ||
| 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 | } |
| 531 | 524 | ||
| 532 | test "type coercion of pointer to anon struct literal to pointer to slice" { | 525 | test "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; // TODO | 526 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 535 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 527 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 536 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 528 | 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" { |
| 730 | 722 | ||
| 731 | test "empty slice ptr is non null" { | 723 | test "empty slice ptr is non null" { |
| 732 | if (builtin.zig_backend == .stage2_aarch64 and builtin.os.tag == .macos) return error.SkipZigTest; // TODO | 724 | 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 | ||
| 734 | 725 | ||
| 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 { |
| 342 | test "self-referencing struct via array member" { | 342 | test "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; // TODO | 344 | 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; // TODO | 345 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 347 | 346 | ||
| 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 | } |
| 537 | 536 | ||
| 538 | test "zero-bit field in packed struct" { | 537 | test "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; // TODO | 538 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 541 | 539 | ||
| 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 | } |
| 720 | 718 | ||
| 721 | test "packed struct with u0 field access" { | 719 | test "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; // TODO | 720 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 724 | 721 | ||
| 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 | } |
| 1019 | 1016 | ||
| 1020 | test "type coercion of pointer to anon struct literal to pointer to struct" { | 1017 | test "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; // TODO | 1018 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1023 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 1019 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1024 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1020 | 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 | } |
| 1089 | 1085 | ||
| 1090 | test "for loop over pointers to struct, getting field from struct pointer" { | 1086 | test "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; // TODO | 1087 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1093 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1088 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1094 | 1089 |
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"); |
| 4 | 4 | ||
| 5 | test "struct contains null pointer which contains original struct" { | 5 | test "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; // TODO | 7 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 9 | 8 | ||
| 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 | } |
| 404 | 404 | ||
| 405 | test "switch on integer with else capturing expr" { | 405 | test "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; // TODO | 406 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 408 | 407 | ||
| 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 | } |
| 578 | 577 | ||
| 579 | test "switch on pointer type" { | 578 | test "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; // TODO | 579 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 582 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 580 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 583 | 581 |
test/behavior/threadlocal.zig-2| ... | @@ -4,7 +4,6 @@ const expect = std.testing.expect; | ... | @@ -4,7 +4,6 @@ const expect = std.testing.expect; |
| 4 | 4 | ||
| 5 | test "thread local variable" { | 5 | test "thread local variable" { |
| 6 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 6 | 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; // TODO | 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 9 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 8 | 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; |
| 40 | 39 | ||
| 41 | test "reference a global threadlocal variable" { | 40 | test "reference a global threadlocal variable" { |
| 42 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 41 | 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; // TODO | 42 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 45 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 43 | 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" { |
| 79 | 79 | ||
| 80 | test "casting or calling a value with a paren-surrounded macro" { | 80 | test "casting or calling a value with a paren-surrounded macro" { |
| 81 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 81 | 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; // TODO | 82 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 84 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 83 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 85 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 84 | 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 | } |
| 127 | 127 | ||
| 128 | test "array-like initializer for tuple types" { | 128 | test "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; // TODO | 129 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 131 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 130 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 132 | 131 |
test/behavior/type.zig-4| ... | @@ -449,8 +449,6 @@ test "Type.Union" { | ... | @@ -449,8 +449,6 @@ test "Type.Union" { |
| 449 | } | 449 | } |
| 450 | 450 | ||
| 451 | test "Type.Union from Type.Enum" { | 451 | test "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 | } |
| 476 | 474 | ||
| 477 | test "Type.Union from regular enum" { | 475 | test "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 | } |
| 510 | 510 | ||
| 511 | test "Declarations are returned in declaration order" { | 511 | test "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; // TODO | 512 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 514 | 513 | ||
| 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 | } |
| 533 | 532 | ||
| 534 | test "Struct.is_tuple for anon struct literal" { | 533 | test "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; // TODO | 534 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 537 | 535 | ||
| 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 | }; |
| 12 | 12 | ||
| 13 | test "basic unions with floats" { | 13 | test "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; // TODO | 16 | 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 | }; |
| 216 | 215 | ||
| 217 | test "union with specified enum tag" { | 216 | test "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; // TODO | 219 | 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 | } |
| 226 | 224 | ||
| 227 | test "packed union generates correctly aligned type" { | 225 | test "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; // TODO | 228 | 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 | } |
| 380 | 377 | ||
| 381 | test "tagged union initialization with runtime void" { | 378 | test "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; // TODO | 381 | 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 { |
| 400 | pub const UnionEnumNoPayloads = union(enum) { A, B }; | 396 | pub const UnionEnumNoPayloads = union(enum) { A, B }; |
| 401 | 397 | ||
| 402 | test "tagged union with no payloads" { | 398 | test "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; // TODO | 401 | 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) { |
| 466 | var glbl_array: [2]FooUnion = undefined; | 461 | var glbl_array: [2]FooUnion = undefined; |
| 467 | 462 | ||
| 468 | test "initialize global array of union" { | 463 | test "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; // TODO | 466 | 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" { |
| 494 | 488 | ||
| 495 | test "union initializer generates padding only if needed" { | 489 | test "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; // TODO | 492 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 500 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 493 | 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) { |
| 561 | const Baz = enum { A, B, C, D }; | 554 | const Baz = enum { A, B, C, D }; |
| 562 | 555 | ||
| 563 | test "tagged union type" { | 556 | test "tagged union type" { |
| 564 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; | ||
| 565 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 557 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 566 | 558 | ||
| 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 | } |
| 599 | 591 | ||
| 600 | test "tagged union with all void fields but a meaningful tag" { | 592 | test "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; // TODO | 595 | 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 | } |
| 778 | 769 | ||
| 779 | test "return union init with void payload" { | 770 | test "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; // TODO | 773 | 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" { |
| 913 | test "anonymous union literal syntax" { | 903 | test "anonymous union literal syntax" { |
| 914 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 904 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 915 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 905 | 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; // TODO | 906 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 918 | 907 | ||
| 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) { |
| 18 | 18 | ||
| 19 | test "enum with members" { | 19 | test "enum with members" { |
| 20 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 20 | 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; // TODO | 21 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 23 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 22 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 24 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 23 | 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 | } |
| 383 | 383 | ||
| 384 | test "initialize vector which is a struct field" { | 384 | test "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; // TODO | 385 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 387 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 386 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 388 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 387 | 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" { |
| 794 | 793 | ||
| 795 | test "vector @reduce comptime" { | 794 | test "vector @reduce comptime" { |
| 796 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 795 | 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; // TODO | 796 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 799 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 797 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 800 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 798 | 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" { |
| 1069 | 1067 | ||
| 1070 | test "loading the second vector from a slice of vectors" { | 1068 | test "loading the second vector from a slice of vectors" { |
| 1071 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1069 | 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; // TODO | 1070 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1074 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1071 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1075 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1072 | 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" { |
| 1150 | 1147 | ||
| 1151 | test "zero divisor" { | 1148 | test "zero divisor" { |
| 1152 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1149 | 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; // TODO | 1150 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1155 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1151 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1156 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1152 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | @@ -1171,7 +1167,6 @@ test "zero divisor" { | ... | @@ -1171,7 +1167,6 @@ test "zero divisor" { |
| 1171 | 1167 | ||
| 1172 | test "zero multiplicand" { | 1168 | test "zero multiplicand" { |
| 1173 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1169 | 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; // TODO | 1170 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1176 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 1171 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1177 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1172 | 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; // TODO | 1229 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1235 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 1230 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1236 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | 1231 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 1237 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO | ||
| 1238 | 1232 | ||
| 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 | } |
| 34 | 34 | ||
| 35 | test "void optional" { | 35 | test "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; // TODO | 38 | 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 | } |
| 105 | 105 | ||
| 106 | test "while copies its payload" { | 106 | test "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; // TODO | 108 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 110 | 109 | ||
| ... | @@ -143,7 +142,6 @@ fn runContinueAndBreakTest() !void { | ... | @@ -143,7 +142,6 @@ fn runContinueAndBreakTest() !void { |
| 143 | } | 142 | } |
| 144 | 143 | ||
| 145 | test "while with optional as condition" { | 144 | test "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; // TODO | 146 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 149 | 147 | ||
| ... | @@ -156,7 +154,6 @@ test "while with optional as condition" { | ... | @@ -156,7 +154,6 @@ test "while with optional as condition" { |
| 156 | } | 154 | } |
| 157 | 155 | ||
| 158 | test "while with optional as condition with else" { | 156 | test "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; // TODO | 158 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 162 | 159 | ||
| ... | @@ -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 | } |
| 175 | 172 | ||
| 176 | test "while with error union condition" { | 173 | test "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; // TODO | 174 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 179 | 175 | ||
| 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 | } |
| 206 | 202 | ||
| 207 | test "while on optional with else result follow else prong" { | 203 | test "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; // TODO | 206 | 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 | } |
| 218 | 213 | ||
| 219 | test "while on optional with else result follow break prong" { | 214 | test "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; // TODO | 217 | 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 | } |
| 291 | 285 | ||
| 292 | test "while optional 2 break statements and an else" { | 286 | test "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; // TODO | 287 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 295 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 288 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 296 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 289 | 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 | } |
| 311 | 304 | ||
| 312 | test "while error 2 break statements and an else" { | 305 | test "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; // TODO | 306 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 315 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | 307 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 316 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 308 | 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 | } |
| 29 | 29 | ||
| 30 | test "implicit unsigned integer to signed integer" { | 30 | test "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; // TODO | 31 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 33 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO | 32 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 34 | 33 |
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 lldb | 2 | # put commands in ~/.lldbinit to run them automatically when starting lldb |
| 3 | # `command script /path/to/stage2_lldb_pretty_printers.py` to import this file | 3 | # `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 language | 4 | # `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 library | 5 | # `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 compiler | 6 | # `type category enable zig.stage2` to enable pretty printing for the zig stage 2 compiler |