This commit is contained in:
David Gonzalez Martin 2025-04-13 21:13:44 -06:00
parent 9bee8064f2
commit c9b1c22957
2 changed files with 10 additions and 7 deletions

View File

@ -449,7 +449,7 @@ pub const Type = struct {
pub fn is_signed(ty: *const Type) bool {
return switch (ty.bb) {
.integer => |integer| integer.signed,
// .bits => |bits| bits.backing_type.is_signed(),
.bits => |bits| bits.backing_type.is_signed(),
else => @trap(),
};
}
@ -477,7 +477,7 @@ pub const Type = struct {
pub fn is_promotable_integer_type_for_abi(ty: *Type) bool {
return switch (ty.bb) {
.integer => |integer| integer.bit_count < 32,
// .bits => |bits| bits.backing_type.is_promotable_integer_type_for_abi(),
.bits => |bits| bits.backing_type.is_promotable_integer_type_for_abi(),
else => @trap(),
};
}
@ -504,6 +504,7 @@ pub const Type = struct {
.pointer => 64,
.bits => |bits| bits.backing_type.get_bit_alignment(),
.array => |array| array.element_type.get_bit_alignment(),
.structure => |structure| structure.bit_alignment,
else => @trap(),
};
}
@ -514,6 +515,7 @@ pub const Type = struct {
.structure => |structure| structure.byte_size,
.pointer => 8,
.array => |array| array.element_type.get_byte_size() * array.element_count,
.bits => |bits| bits.backing_type.get_byte_size(),
else => @trap(),
};
return byte_size;
@ -525,6 +527,7 @@ pub const Type = struct {
.pointer => 64,
.bits => |bits| bits.backing_type.get_bit_size(),
.array => |array| array.element_type.get_bit_size() * array.element_count,
.structure => |structure| structure.bit_size,
else => @trap(),
};
return bit_size;
@ -7353,7 +7356,7 @@ pub const Abi = struct {
switch (ty.bb) {
.void, .noreturn => result[current_index] = .none,
// .bits => result[current_index] = .integer,
.bits => result[current_index] = .integer,
.pointer => result[current_index] = .integer,
.integer => |integer| {
if (integer.bit_count <= 64) {
@ -7488,9 +7491,9 @@ pub const Abi = struct {
fn get_int_type_at_offset(module: *Module, ty: *Type, offset: u32, source_type: *Type, source_offset: u32) *Type {
switch (ty.bb) {
// .bits => |bits| {
// return get_int_type_at_offset(module, bits.backing_type, offset, if (source_type == ty) bits.backing_type else source_type, source_offset);
// },
.bits => |bits| {
return get_int_type_at_offset(module, bits.backing_type, offset, if (source_type == ty) bits.backing_type else source_type, source_offset);
},
.integer => |integer_type| {
switch (integer_type.bit_count) {
64 => return ty,

View File

@ -330,7 +330,7 @@ require = fn (ok: u1) void
[export] bb_ptr = fn [cc(c)] (x: &u8) void
{
require(#cast_to(u64, x) == 0xdeadbeef);
require(#int_from_pointer(x) == 0xdeadbeef);
}
[export] bb_five_integers = fn [cc(c)] (a: s32, b: s32, c: s32, d: s32, e: s32) void