Legalize: implement scalarization of binary operations
This commit is contained in:
13
src/Type.zig
13
src/Type.zig
@@ -2641,10 +2641,7 @@ pub fn onePossibleValue(starting_type: Type, pt: Zcu.PerThread) !?Value {
|
||||
if (enum_type.values.len == 0) {
|
||||
const only = try pt.intern(.{ .enum_tag = .{
|
||||
.ty = ty.toIntern(),
|
||||
.int = try pt.intern(.{ .int = .{
|
||||
.ty = enum_type.tag_ty,
|
||||
.storage = .{ .u64 = 0 },
|
||||
} }),
|
||||
.int = (try pt.intValue(.fromInterned(enum_type.tag_ty), 0)).toIntern(),
|
||||
} });
|
||||
return Value.fromInterned(only);
|
||||
} else {
|
||||
@@ -3676,10 +3673,11 @@ pub fn resolveFields(ty: Type, pt: Zcu.PerThread) SemaError!void {
|
||||
.null_type,
|
||||
.undefined_type,
|
||||
.enum_literal_type,
|
||||
.ptr_usize_type,
|
||||
.ptr_const_comptime_int_type,
|
||||
.manyptr_u8_type,
|
||||
.manyptr_const_u8_type,
|
||||
.manyptr_const_u8_sentinel_0_type,
|
||||
.single_const_pointer_to_comptime_int_type,
|
||||
.slice_const_u8_type,
|
||||
.slice_const_u8_sentinel_0_type,
|
||||
.optional_noreturn_type,
|
||||
@@ -3691,9 +3689,11 @@ pub fn resolveFields(ty: Type, pt: Zcu.PerThread) SemaError!void {
|
||||
.undef => unreachable,
|
||||
.zero => unreachable,
|
||||
.zero_usize => unreachable,
|
||||
.zero_u1 => unreachable,
|
||||
.zero_u8 => unreachable,
|
||||
.one => unreachable,
|
||||
.one_usize => unreachable,
|
||||
.one_u1 => unreachable,
|
||||
.one_u8 => unreachable,
|
||||
.four_u8 => unreachable,
|
||||
.negative_one => unreachable,
|
||||
@@ -4100,10 +4100,11 @@ pub const @"c_longlong": Type = .{ .ip_index = .c_longlong_type };
|
||||
pub const @"c_ulonglong": Type = .{ .ip_index = .c_ulonglong_type };
|
||||
pub const @"c_longdouble": Type = .{ .ip_index = .c_longdouble_type };
|
||||
|
||||
pub const ptr_usize: Type = .{ .ip_index = .ptr_usize_type };
|
||||
pub const ptr_const_comptime_int: Type = .{ .ip_index = .ptr_const_comptime_int_type };
|
||||
pub const manyptr_u8: Type = .{ .ip_index = .manyptr_u8_type };
|
||||
pub const manyptr_const_u8: Type = .{ .ip_index = .manyptr_const_u8_type };
|
||||
pub const manyptr_const_u8_sentinel_0: Type = .{ .ip_index = .manyptr_const_u8_sentinel_0_type };
|
||||
pub const single_const_pointer_to_comptime_int: Type = .{ .ip_index = .single_const_pointer_to_comptime_int_type };
|
||||
pub const slice_const_u8: Type = .{ .ip_index = .slice_const_u8_type };
|
||||
pub const slice_const_u8_sentinel_0: Type = .{ .ip_index = .slice_const_u8_sentinel_0_type };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user