diff options
| -rw-r--r-- | src/Sema.zig | 51 | ||||
| -rw-r--r-- | src/arch/aarch64/CodeGen.zig | 6 | ||||
| -rw-r--r-- | src/arch/arm/CodeGen.zig | 10 | ||||
| -rw-r--r-- | src/arch/riscv64/CodeGen.zig | 2 | ||||
| -rw-r--r-- | src/arch/sparc64/CodeGen.zig | 4 | ||||
| -rw-r--r-- | src/codegen.zig | 2 | ||||
| -rw-r--r-- | src/codegen/c/type.zig | 24 | ||||
| -rw-r--r-- | src/codegen/spirv.zig | 2 | ||||
| -rw-r--r-- | src/type.zig | 301 | ||||
| -rw-r--r-- | src/value.zig | 64 |
10 files changed, 121 insertions, 345 deletions
diff --git a/src/Sema.zig b/src/Sema.zig index f93ceb19e6..d03460385e 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -6448,7 +6448,7 @@ fn checkCallArgumentCount( .Optional => { var buf: Type.Payload.ElemType = undefined; const opt_child = callee_ty.optionalChild(&buf); - if (opt_child.zigTypeTag(mod) == .Fn or (opt_child.isSinglePointer() and + if (opt_child.zigTypeTag(mod) == .Fn or (opt_child.isSinglePointer(mod) and opt_child.childType().zigTypeTag(mod) == .Fn)) { const msg = msg: { @@ -31421,6 +31421,8 @@ pub fn resolveTypeRequiresComptime(sema: *Sema, ty: Type) CompileError!bool { .enum_literal, .type_info, => true, + + .var_args_param => unreachable, }, .struct_type => @panic("TODO"), .union_type => @panic("TODO"), @@ -31443,17 +31445,6 @@ pub fn resolveTypeRequiresComptime(sema: *Sema, ty: Type) CompileError!bool { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .anyopaque, .bool, .void, @@ -31798,6 +31789,7 @@ pub fn resolveTypeFields(sema: *Sema, ty: Type) CompileError!Type { .bool_false => unreachable, .empty_struct => unreachable, .generic_poison => unreachable, + .var_args_param_type => unreachable, .type_info_type => return sema.getBuiltinType("Type"), .extern_options_type => return sema.getBuiltinType("ExternOptions"), @@ -32977,17 +32969,6 @@ pub fn typeHasOnePossibleValue(sema: *Sema, ty: Type) CompileError!?Value { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .bool, .type, .anyerror, @@ -33213,17 +33194,6 @@ pub fn addType(sema: *Sema, ty: Type) !Air.Inst.Ref { .i64 => return .i64_type, .u128 => return .u128_type, .i128 => return .i128_type, - .usize => return .usize_type, - .isize => return .isize_type, - .c_char => return .c_char_type, - .c_short => return .c_short_type, - .c_ushort => return .c_ushort_type, - .c_int => return .c_int_type, - .c_uint => return .c_uint_type, - .c_long => return .c_long_type, - .c_ulong => return .c_ulong_type, - .c_longlong => return .c_longlong_type, - .c_ulonglong => return .c_ulonglong_type, .anyopaque => return .anyopaque_type, .bool => return .bool_type, .void => return .void_type, @@ -33664,6 +33634,8 @@ pub fn typeRequiresComptime(sema: *Sema, ty: Type) CompileError!bool { .enum_literal, .type_info, => true, + + .var_args_param => unreachable, }, .struct_type => @panic("TODO"), .union_type => @panic("TODO"), @@ -33686,17 +33658,6 @@ pub fn typeRequiresComptime(sema: *Sema, ty: Type) CompileError!bool { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .anyopaque, .bool, .void, diff --git a/src/arch/aarch64/CodeGen.zig b/src/arch/aarch64/CodeGen.zig index 2846633275..4671866197 100644 --- a/src/arch/aarch64/CodeGen.zig +++ b/src/arch/aarch64/CodeGen.zig @@ -4326,7 +4326,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier const atom = elf_file.getAtom(atom_index); _ = try atom.getOrCreateOffsetTableEntry(elf_file); const got_addr = @intCast(u32, atom.getOffsetTableAddress(elf_file)); - try self.genSetReg(Type.initTag(.usize), .x30, .{ .memory = got_addr }); + try self.genSetReg(Type.usize, .x30, .{ .memory = got_addr }); } else if (self.bin_file.cast(link.File.MachO)) |macho_file| { const atom = try macho_file.getOrCreateAtomForDecl(func.owner_decl); const sym_index = macho_file.getAtom(atom).getSymbolIndex().?; @@ -4353,7 +4353,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier const got_addr = p9.bases.data; const got_index = decl_block.got_index.?; const fn_got_addr = got_addr + got_index * ptr_bytes; - try self.genSetReg(Type.initTag(.usize), .x30, .{ .memory = fn_got_addr }); + try self.genSetReg(Type.usize, .x30, .{ .memory = fn_got_addr }); } else unreachable; _ = try self.addInst(.{ @@ -5968,7 +5968,7 @@ fn airArrayToSlice(self: *Self, inst: Air.Inst.Index) !void { const stack_offset = try self.allocMem(ptr_bytes * 2, ptr_bytes * 2, inst); try self.genSetStack(ptr_ty, stack_offset, ptr); - try self.genSetStack(Type.initTag(.usize), stack_offset - ptr_bytes, .{ .immediate = array_len }); + try self.genSetStack(Type.usize, stack_offset - ptr_bytes, .{ .immediate = array_len }); break :result MCValue{ .stack_offset = stack_offset }; }; return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); diff --git a/src/arch/arm/CodeGen.zig b/src/arch/arm/CodeGen.zig index eb8cfa9707..ca4a3826aa 100644 --- a/src/arch/arm/CodeGen.zig +++ b/src/arch/arm/CodeGen.zig @@ -4308,7 +4308,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier const atom = elf_file.getAtom(atom_index); _ = try atom.getOrCreateOffsetTableEntry(elf_file); const got_addr = @intCast(u32, atom.getOffsetTableAddress(elf_file)); - try self.genSetReg(Type.initTag(.usize), .lr, .{ .memory = got_addr }); + try self.genSetReg(Type.usize, .lr, .{ .memory = got_addr }); } else if (self.bin_file.cast(link.File.MachO)) |_| { unreachable; // unsupported architecture for MachO } else { @@ -4326,7 +4326,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier assert(ty.zigTypeTag(mod) == .Pointer); const mcv = try self.resolveInst(callee); - try self.genSetReg(Type.initTag(.usize), .lr, mcv); + try self.genSetReg(Type.usize, .lr, mcv); } // TODO: add Instruction.supportedOn @@ -5694,7 +5694,7 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void if (extra_offset) { const offset = if (off <= math.maxInt(u8)) blk: { break :blk Instruction.ExtraLoadStoreOffset.imm(@intCast(u8, off)); - } else Instruction.ExtraLoadStoreOffset.reg(try self.copyToTmpRegister(Type.initTag(.usize), MCValue{ .immediate = off })); + } else Instruction.ExtraLoadStoreOffset.reg(try self.copyToTmpRegister(Type.usize, MCValue{ .immediate = off })); _ = try self.addInst(.{ .tag = tag, @@ -5710,7 +5710,7 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void } else { const offset = if (off <= math.maxInt(u12)) blk: { break :blk Instruction.Offset.imm(@intCast(u12, off)); - } else Instruction.Offset.reg(try self.copyToTmpRegister(Type.initTag(.usize), MCValue{ .immediate = off }), .none); + } else Instruction.Offset.reg(try self.copyToTmpRegister(Type.usize, MCValue{ .immediate = off }), .none); _ = try self.addInst(.{ .tag = tag, @@ -5916,7 +5916,7 @@ fn airArrayToSlice(self: *Self, inst: Air.Inst.Index) !void { const stack_offset = try self.allocMem(8, 8, inst); try self.genSetStack(ptr_ty, stack_offset, ptr); - try self.genSetStack(Type.initTag(.usize), stack_offset - 4, .{ .immediate = array_len }); + try self.genSetStack(Type.usize, stack_offset - 4, .{ .immediate = array_len }); break :result MCValue{ .stack_offset = stack_offset }; }; return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); diff --git a/src/arch/riscv64/CodeGen.zig b/src/arch/riscv64/CodeGen.zig index 4ab798fe9c..488b937141 100644 --- a/src/arch/riscv64/CodeGen.zig +++ b/src/arch/riscv64/CodeGen.zig @@ -1749,7 +1749,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier const atom = elf_file.getAtom(atom_index); _ = try atom.getOrCreateOffsetTableEntry(elf_file); const got_addr = @intCast(u32, atom.getOffsetTableAddress(elf_file)); - try self.genSetReg(Type.initTag(.usize), .ra, .{ .memory = got_addr }); + try self.genSetReg(Type.usize, .ra, .{ .memory = got_addr }); _ = try self.addInst(.{ .tag = .jalr, .data = .{ .i_type = .{ diff --git a/src/arch/sparc64/CodeGen.zig b/src/arch/sparc64/CodeGen.zig index e79a216315..343cc2f90e 100644 --- a/src/arch/sparc64/CodeGen.zig +++ b/src/arch/sparc64/CodeGen.zig @@ -883,7 +883,7 @@ fn airArrayToSlice(self: *Self, inst: Air.Inst.Index) !void { const stack_offset = try self.allocMem(inst, ptr_bytes * 2, ptr_bytes * 2); try self.genSetStack(ptr_ty, stack_offset, ptr); - try self.genSetStack(Type.initTag(.usize), stack_offset - ptr_bytes, .{ .immediate = array_len }); + try self.genSetStack(Type.usize, stack_offset - ptr_bytes, .{ .immediate = array_len }); break :result MCValue{ .stack_offset = stack_offset }; }; return self.finishAir(inst, result, .{ ty_op.operand, .none, .none }); @@ -1352,7 +1352,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier break :blk @intCast(u32, atom.getOffsetTableAddress(elf_file)); } else unreachable; - try self.genSetReg(Type.initTag(.usize), .o7, .{ .memory = got_addr }); + try self.genSetReg(Type.usize, .o7, .{ .memory = got_addr }); _ = try self.addInst(.{ .tag = .jmpl, diff --git a/src/codegen.zig b/src/codegen.zig index 6846bebe6b..295409781e 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -371,7 +371,7 @@ pub fn generateSymbol( // generate length switch (try generateSymbol(bin_file, src_loc, .{ - .ty = Type.initTag(.usize), + .ty = Type.usize, .val = slice.len, }, code, debug_output, reloc_info)) { .ok => {}, diff --git a/src/codegen/c/type.zig b/src/codegen/c/type.zig index b964d16bd9..d248753670 100644 --- a/src/codegen/c/type.zig +++ b/src/codegen/c/type.zig @@ -1359,18 +1359,18 @@ pub const CType = extern union { self.* = undefined; if (!ty.isFnOrHasRuntimeBitsIgnoreComptime(mod)) self.init(.void) - else if (ty.isAbiInt(mod)) switch (ty.tag()) { - .usize => self.init(.uintptr_t), - .isize => self.init(.intptr_t), - .c_char => self.init(.char), - .c_short => self.init(.short), - .c_ushort => self.init(.@"unsigned short"), - .c_int => self.init(.int), - .c_uint => self.init(.@"unsigned int"), - .c_long => self.init(.long), - .c_ulong => self.init(.@"unsigned long"), - .c_longlong => self.init(.@"long long"), - .c_ulonglong => self.init(.@"unsigned long long"), + else if (ty.isAbiInt(mod)) switch (ty.ip_index) { + .usize_type => self.init(.uintptr_t), + .isize_type => self.init(.intptr_t), + .c_char_type => self.init(.char), + .c_short_type => self.init(.short), + .c_ushort_type => self.init(.@"unsigned short"), + .c_int_type => self.init(.int), + .c_uint_type => self.init(.@"unsigned int"), + .c_long_type => self.init(.long), + .c_ulong_type => self.init(.@"unsigned long"), + .c_longlong_type => self.init(.@"long long"), + .c_ulonglong_type => self.init(.@"unsigned long long"), else => switch (tagFromIntInfo(ty.intInfo(mod))) { .void => unreachable, else => |t| self.init(t), diff --git a/src/codegen/spirv.zig b/src/codegen/spirv.zig index 41abbde1a0..90c2d93458 100644 --- a/src/codegen/spirv.zig +++ b/src/codegen/spirv.zig @@ -2499,7 +2499,7 @@ pub const DeclGen = struct { const elem_ty = ptr_ty.elemType2(mod); // use elemType() so that we get T for *[N]T. const elem_ty_ref = try self.resolveType(elem_ty, .direct); const elem_ptr_ty_ref = try self.spv.ptrType(elem_ty_ref, spvStorageClass(ptr_ty.ptrAddressSpace())); - if (ptr_ty.isSinglePointer()) { + if (ptr_ty.isSinglePointer(mod)) { // Pointer-to-array. In this case, the resulting pointer is not of the same type // as the ptr_ty (we want a *T, not a *[N]T), and hence we need to use accessChain. return try self.accessChain(elem_ptr_ty_ref, ptr_id, &.{index_id}); diff --git a/src/type.zig b/src/type.zig index 205a732710..4e8d0b9e20 100644 --- a/src/type.zig +++ b/src/type.zig @@ -121,17 +121,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, => return .Int, .error_set, @@ -621,19 +610,6 @@ pub const Type = struct { switch (a.tag()) { .generic_poison => unreachable, - // Detect that e.g. u64 != usize, even if the bits match on a particular target. - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, - .bool, .void, .type, @@ -1013,22 +989,6 @@ pub const Type = struct { switch (ty.tag()) { .generic_poison => unreachable, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, - => |ty_tag| { - std.hash.autoHash(hasher, std.builtin.TypeId.Int); - std.hash.autoHash(hasher, ty_tag); - }, - .bool => std.hash.autoHash(hasher, std.builtin.TypeId.Bool), .void => std.hash.autoHash(hasher, std.builtin.TypeId.Void), .type => std.hash.autoHash(hasher, std.builtin.TypeId.Type), @@ -1345,17 +1305,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .anyopaque, .bool, .void, @@ -1631,17 +1580,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .anyopaque, .bool, .void, @@ -2020,17 +1958,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .anyopaque, .bool, .void, @@ -2322,17 +2249,6 @@ pub const Type = struct { .i32 => return Value.initTag(.i32_type), .u64 => return Value.initTag(.u64_type), .i64 => return Value.initTag(.i64_type), - .usize => return Value.initTag(.usize_type), - .isize => return Value.initTag(.isize_type), - .c_char => return Value.initTag(.c_char_type), - .c_short => return Value.initTag(.c_short_type), - .c_ushort => return Value.initTag(.c_ushort_type), - .c_int => return Value.initTag(.c_int_type), - .c_uint => return Value.initTag(.c_uint_type), - .c_long => return Value.initTag(.c_long_type), - .c_ulong => return Value.initTag(.c_ulong_type), - .c_longlong => return Value.initTag(.c_longlong_type), - .c_ulonglong => return Value.initTag(.c_ulonglong_type), .anyopaque => return Value.initTag(.anyopaque_type), .bool => return Value.initTag(.bool_type), .void => return Value.initTag(.void_type), @@ -2462,17 +2378,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .bool, .anyerror, .const_slice_u8, @@ -2713,6 +2618,8 @@ pub const Type = struct { .type_info, .generic_poison, => false, + + .var_args_param => unreachable, }, .struct_type => @panic("TODO"), .union_type => @panic("TODO"), @@ -2734,17 +2641,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .bool, .void, .manyptr_u8, @@ -3040,7 +2936,7 @@ pub const Type = struct { .export_options, .extern_options, .@"anyframe", - => return AbiAlignmentAdvanced{ .scalar = @divExact(target.cpu.arch.ptrBitWidth(), 8) }, + => return AbiAlignmentAdvanced{ .scalar = @divExact(target.ptrBitWidth(), 8) }, .c_char => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.char) }, .c_short => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.short) }, @@ -3089,6 +2985,7 @@ pub const Type = struct { .noreturn => unreachable, .generic_poison => unreachable, + .var_args_param => unreachable, }, .struct_type => @panic("TODO"), .union_type => @panic("TODO"), @@ -3130,8 +3027,6 @@ pub const Type = struct { return AbiAlignmentAdvanced{ .scalar = target_util.defaultFunctionAlignment(target) }; }, - .isize, - .usize, .single_const_pointer_to_comptime_int, .const_slice_u8, .const_slice_u8_sentinel_0, @@ -3153,16 +3048,6 @@ pub const Type = struct { .anyframe_T, => return AbiAlignmentAdvanced{ .scalar = @divExact(target.ptrBitWidth(), 8) }, - .c_char => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.char) }, - .c_short => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.short) }, - .c_ushort => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.ushort) }, - .c_int => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.int) }, - .c_uint => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.uint) }, - .c_long => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.long) }, - .c_ulong => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.ulong) }, - .c_longlong => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.longlong) }, - .c_ulonglong => return AbiAlignmentAdvanced{ .scalar = target.c_type_alignment(.ulonglong) }, - // TODO revisit this when we have the concept of the error tag type .anyerror_void_error_union, .anyerror, @@ -3491,7 +3376,7 @@ pub const Type = struct { .usize, .isize, .@"anyframe", - => return AbiSizeAdvanced{ .scalar = @divExact(target.cpu.arch.ptrBitWidth(), 8) }, + => return AbiSizeAdvanced{ .scalar = @divExact(target.ptrBitWidth(), 8) }, .c_char => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.char) }, .c_short => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.short) }, @@ -3524,6 +3409,7 @@ pub const Type = struct { .type_info => unreachable, .noreturn => unreachable, .generic_poison => unreachable, + .var_args_param => unreachable, }, .struct_type => @panic("TODO"), .union_type => @panic("TODO"), @@ -3666,8 +3552,6 @@ pub const Type = struct { return AbiSizeAdvanced{ .scalar = result }; }, - .isize, - .usize, .@"anyframe", .anyframe_T, .optional_single_const_pointer, @@ -3694,16 +3578,6 @@ pub const Type = struct { else => return AbiSizeAdvanced{ .scalar = @divExact(target.ptrBitWidth(), 8) }, }, - .c_char => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.char) }, - .c_short => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.short) }, - .c_ushort => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.ushort) }, - .c_int => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.int) }, - .c_uint => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.uint) }, - .c_long => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.long) }, - .c_ulong => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.ulong) }, - .c_longlong => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.longlong) }, - .c_ulonglong => return AbiSizeAdvanced{ .scalar = target.c_type_byte_size(.ulonglong) }, - // TODO revisit this when we have the concept of the error tag type .anyerror_void_error_union, .anyerror, @@ -3856,7 +3730,7 @@ pub const Type = struct { .usize, .isize, .@"anyframe", - => return target.cpu.arch.ptrBitWidth(), + => return target.ptrBitWidth(), .c_char => return target.c_type_bit_size(.char), .c_short => return target.c_type_bit_size(.short), @@ -3896,6 +3770,7 @@ pub const Type = struct { .export_options => unreachable, // missing call to resolveTypeFields .extern_options => unreachable, // missing call to resolveTypeFields .type_info => unreachable, // missing call to resolveTypeFields + .var_args_param => unreachable, }, .struct_type => @panic("TODO"), .union_type => @panic("TODO"), @@ -4000,8 +3875,6 @@ pub const Type = struct { return payload.len * 8 * elem_size + elem_bit_size; }, - .isize, - .usize, .@"anyframe", .anyframe_T, => return target.ptrBitWidth(), @@ -4040,16 +3913,6 @@ pub const Type = struct { .manyptr_const_u8_sentinel_0, => return target.ptrBitWidth(), - .c_char => return target.c_type_bit_size(.char), - .c_short => return target.c_type_bit_size(.short), - .c_ushort => return target.c_type_bit_size(.ushort), - .c_int => return target.c_type_bit_size(.int), - .c_uint => return target.c_type_bit_size(.uint), - .c_long => return target.c_type_bit_size(.long), - .c_ulong => return target.c_type_bit_size(.ulong), - .c_longlong => return target.c_type_bit_size(.longlong), - .c_ulonglong => return target.c_type_bit_size(.ulonglong), - .error_set, .error_set_single, .anyerror_void_error_union, @@ -4876,12 +4739,6 @@ pub const Type = struct { }; return switch (ty.tag()) { .i8, - .isize, - .c_char, - .c_short, - .c_int, - .c_long, - .c_longlong, .i16, .i32, .i64, @@ -4903,11 +4760,6 @@ pub const Type = struct { else => return false, }; return switch (ty.tag()) { - .usize, - .c_ushort, - .c_uint, - .c_ulong, - .c_ulonglong, .u1, .u8, .u16, @@ -4938,13 +4790,26 @@ pub const Type = struct { if (ty.ip_index != .none) switch (mod.intern_pool.indexToKey(ty.ip_index)) { .int_type => |int_type| return int_type, - .ptr_type => @panic("TODO"), - .array_type => @panic("TODO"), + .ptr_type => unreachable, + .array_type => unreachable, .vector_type => @panic("TODO"), - .optional_type => @panic("TODO"), - .error_union_type => @panic("TODO"), - .simple_type => @panic("TODO"), - .struct_type => unreachable, + .optional_type => unreachable, + .error_union_type => unreachable, + .simple_type => |t| switch (t) { + .usize => return .{ .signedness = .unsigned, .bits = target.ptrBitWidth() }, + .isize => return .{ .signedness = .signed, .bits = target.ptrBitWidth() }, + .c_char => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.char) }, + .c_short => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.short) }, + .c_ushort => return .{ .signedness = .unsigned, .bits = target.c_type_bit_size(.ushort) }, + .c_int => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.int) }, + .c_uint => return .{ .signedness = .unsigned, .bits = target.c_type_bit_size(.uint) }, + .c_long => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.long) }, + .c_ulong => return .{ .signedness = .unsigned, .bits = target.c_type_bit_size(.ulong) }, + .c_longlong => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.longlong) }, + .c_ulonglong => return .{ .signedness = .unsigned, .bits = target.c_type_bit_size(.ulonglong) }, + else => unreachable, + }, + .struct_type => @panic("TODO"), .union_type => unreachable, .simple_value => unreachable, .extern_func => unreachable, @@ -4965,17 +4830,6 @@ pub const Type = struct { .i64 => return .{ .signedness = .signed, .bits = 64 }, .u128 => return .{ .signedness = .unsigned, .bits = 128 }, .i128 => return .{ .signedness = .signed, .bits = 128 }, - .usize => return .{ .signedness = .unsigned, .bits = target.ptrBitWidth() }, - .isize => return .{ .signedness = .signed, .bits = target.ptrBitWidth() }, - .c_char => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.char) }, - .c_short => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.short) }, - .c_ushort => return .{ .signedness = .unsigned, .bits = target.c_type_bit_size(.ushort) }, - .c_int => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.int) }, - .c_uint => return .{ .signedness = .unsigned, .bits = target.c_type_bit_size(.uint) }, - .c_long => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.long) }, - .c_ulong => return .{ .signedness = .unsigned, .bits = target.c_type_bit_size(.ulong) }, - .c_longlong => return .{ .signedness = .signed, .bits = target.c_type_bit_size(.longlong) }, - .c_ulonglong => return .{ .signedness = .unsigned, .bits = target.c_type_bit_size(.ulonglong) }, .enum_full, .enum_nonexhaustive => ty = ty.cast(Payload.EnumFull).?.data.tag_ty, .enum_numbered => ty = ty.castTag(.enum_numbered).?.data.tag_ty, @@ -5003,19 +4857,19 @@ pub const Type = struct { }; } - pub fn isNamedInt(self: Type) bool { - return switch (self.tag()) { - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, + pub fn isNamedInt(ty: Type) bool { + return switch (ty.ip_index) { + .usize_type, + .isize_type, + .c_char_type, + .c_short_type, + .c_ushort_type, + .c_int_type, + .c_uint_type, + .c_long_type, + .c_ulong_type, + .c_longlong_type, + .c_ulonglong_type, => true, else => false, @@ -5180,17 +5034,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, => true, else => false, @@ -5284,17 +5127,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .bool, .type, .anyerror, @@ -5502,6 +5334,8 @@ pub const Type = struct { .enum_literal, .type_info, => true, + + .var_args_param => unreachable, }, .struct_type => @panic("TODO"), .union_type => @panic("TODO"), @@ -5524,17 +5358,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .anyopaque, .bool, .void, @@ -6372,17 +6195,6 @@ pub const Type = struct { i64, u128, i128, - usize, - isize, - c_char, - c_short, - c_ushort, - c_int, - c_uint, - c_long, - c_ulong, - c_longlong, - c_ulonglong, anyopaque, bool, void, @@ -6480,17 +6292,6 @@ pub const Type = struct { .i64, .u128, .i128, - .usize, - .isize, - .c_char, - .c_short, - .c_ushort, - .c_int, - .c_uint, - .c_long, - .c_ulong, - .c_longlong, - .c_ulonglong, .anyopaque, .bool, .void, @@ -6859,9 +6660,13 @@ pub const Type = struct { pub const @"u29" = initTag(.u29); pub const @"u32" = initTag(.u32); pub const @"u64" = initTag(.u64); + pub const @"u128" = initTag(.u128); + pub const @"i8" = initTag(.i8); + pub const @"i16" = initTag(.i16); pub const @"i32" = initTag(.i32); pub const @"i64" = initTag(.i64); + pub const @"i128" = initTag(.i128); pub const @"f16": Type = .{ .ip_index = .f16_type, .legacy = undefined }; pub const @"f32": Type = .{ .ip_index = .f32_type, .legacy = undefined }; @@ -6870,8 +6675,8 @@ pub const Type = struct { pub const @"f128": Type = .{ .ip_index = .f128_type, .legacy = undefined }; pub const @"bool" = initTag(.bool); - pub const @"usize" = initTag(.usize); - pub const @"isize" = initTag(.isize); + pub const @"usize": Type = .{ .ip_index = .usize_type, .legacy = undefined }; + pub const @"isize": Type = .{ .ip_index = .isize_type, .legacy = undefined }; pub const @"comptime_int": Type = .{ .ip_index = .comptime_int_type, .legacy = undefined }; pub const @"comptime_float": Type = .{ .ip_index = .comptime_float_type, .legacy = undefined }; pub const @"void" = initTag(.void); @@ -6879,8 +6684,18 @@ pub const Type = struct { pub const @"anyerror" = initTag(.anyerror); pub const @"anyopaque" = initTag(.anyopaque); pub const @"null" = initTag(.null); + pub const @"undefined" = initTag(.undefined); pub const @"noreturn" = initTag(.noreturn); + pub const @"c_char": Type = .{ .ip_index = .c_char_type, .legacy = undefined }; + pub const @"c_short": Type = .{ .ip_index = .c_short_type, .legacy = undefined }; + pub const @"c_ushort": Type = .{ .ip_index = .c_ushort_type, .legacy = undefined }; + pub const @"c_int": Type = .{ .ip_index = .c_int_type, .legacy = undefined }; + pub const @"c_uint": Type = .{ .ip_index = .c_uint_type, .legacy = undefined }; + pub const @"c_long": Type = .{ .ip_index = .c_long_type, .legacy = undefined }; + pub const @"c_ulong": Type = .{ .ip_index = .c_ulong_type, .legacy = undefined }; + pub const @"c_longlong": Type = .{ .ip_index = .c_longlong_type, .legacy = undefined }; + pub const @"c_ulonglong": Type = .{ .ip_index = .c_ulonglong_type, .legacy = undefined }; pub const @"c_longdouble": Type = .{ .ip_index = .c_longdouble_type, .legacy = undefined }; pub const err_int = Type.u16; diff --git a/src/value.zig b/src/value.zig index 8912209d5e..b0484dfc76 100644 --- a/src/value.zig +++ b/src/value.zig @@ -951,45 +951,45 @@ pub const Value = struct { } return switch (self.tag()) { .ty => self.castTag(.ty).?.data, - .u1_type => Type.initTag(.u1), - .u8_type => Type.initTag(.u8), - .i8_type => Type.initTag(.i8), - .u16_type => Type.initTag(.u16), - .i16_type => Type.initTag(.i16), - .u29_type => Type.initTag(.u29), - .u32_type => Type.initTag(.u32), - .i32_type => Type.initTag(.i32), - .u64_type => Type.initTag(.u64), - .i64_type => Type.initTag(.i64), - .u128_type => Type.initTag(.u128), - .i128_type => Type.initTag(.i128), - .usize_type => Type.initTag(.usize), - .isize_type => Type.initTag(.isize), - .c_char_type => Type.initTag(.c_char), - .c_short_type => Type.initTag(.c_short), - .c_ushort_type => Type.initTag(.c_ushort), - .c_int_type => Type.initTag(.c_int), - .c_uint_type => Type.initTag(.c_uint), - .c_long_type => Type.initTag(.c_long), - .c_ulong_type => Type.initTag(.c_ulong), - .c_longlong_type => Type.initTag(.c_longlong), - .c_ulonglong_type => Type.initTag(.c_ulonglong), + .u1_type => Type.u1, + .u8_type => Type.u8, + .i8_type => Type.i8, + .u16_type => Type.u16, + .i16_type => Type.i16, + .u29_type => Type.u29, + .u32_type => Type.u32, + .i32_type => Type.i32, + .u64_type => Type.u64, + .i64_type => Type.i64, + .u128_type => Type.u128, + .i128_type => Type.i128, + .usize_type => Type.usize, + .isize_type => Type.isize, + .c_char_type => Type.c_char, + .c_short_type => Type.c_short, + .c_ushort_type => Type.c_ushort, + .c_int_type => Type.c_int, + .c_uint_type => Type.c_uint, + .c_long_type => Type.c_long, + .c_ulong_type => Type.c_ulong, + .c_longlong_type => Type.c_longlong, + .c_ulonglong_type => Type.c_ulonglong, .c_longdouble_type => Type.c_longdouble, .f16_type => Type.f16, .f32_type => Type.f32, .f64_type => Type.f64, .f80_type => Type.f80, .f128_type => Type.f128, - .anyopaque_type => Type.initTag(.anyopaque), - .bool_type => Type.initTag(.bool), - .void_type => Type.initTag(.void), - .type_type => Type.initTag(.type), - .anyerror_type => Type.initTag(.anyerror), - .comptime_int_type => Type.initTag(.comptime_int), + .anyopaque_type => Type.anyopaque, + .bool_type => Type.bool, + .void_type => Type.void, + .type_type => Type.type, + .anyerror_type => Type.anyerror, + .comptime_int_type => Type.comptime_int, .comptime_float_type => Type.comptime_float, - .noreturn_type => Type.initTag(.noreturn), - .null_type => Type.initTag(.null), - .undefined_type => Type.initTag(.undefined), + .noreturn_type => Type.noreturn, + .null_type => Type.null, + .undefined_type => Type.undefined, .single_const_pointer_to_comptime_int_type => Type.initTag(.single_const_pointer_to_comptime_int), .anyframe_type => Type.initTag(.@"anyframe"), .const_slice_u8_type => Type.initTag(.const_slice_u8), |
