wip
This commit is contained in:
parent
9bee8064f2
commit
c9b1c22957
@ -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,
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user