WIP fix for zig functions returning Bool (strEqual)

This commit is contained in:
Folkert 2023-04-08 16:11:04 +02:00
parent b54912b79b
commit 09b01893c6
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
7 changed files with 50 additions and 11 deletions

View file

@ -1201,7 +1201,7 @@ impl<
ASM::eq_reg64_reg64_reg64(&mut self.buf, dst_reg, src1_reg, src2_reg);
}
Layout::STR => {
// use a zig call
// use a zig call. This is a bit weird because the dev backend does not handle
self.build_fn_call(
dst,
bitcode::STR_EQUAL.to_string(),

View file

@ -349,10 +349,16 @@ impl<
self.free_reference(sym);
reg
}
Stack(Complex { size, .. }) => {
internal_error!(
"Cannot load large values (size {size}) into general registers: {sym:?}",
)
Stack(Complex { size, base_offset }) => {
if size <= 8 {
let reg = self.get_general_reg(buf);
ASM::mov_reg64_base32(buf, reg, base_offset);
reg
} else {
internal_error!(
"Cannot load large values (size {size}) into general registers: {sym:?}",
)
}
}
NoData => {
internal_error!("Cannot load no data into general registers: {}", sym)
@ -471,10 +477,14 @@ impl<
ASM::movzx_reg64_base32(buf, reg, *base_offset, *size as u8)
}
}
Stack(Complex { size, .. }) => {
internal_error!(
"Cannot load large values (size {size}) into general registers: {sym:?}",
)
Stack(Complex { size, base_offset }) => {
if *size <= 8 {
ASM::mov_reg64_base32(buf, reg, *base_offset);
} else {
internal_error!(
"Cannot load large values (size {size}) into general registers: {sym:?}",
)
}
}
NoData => {
internal_error!("Cannot load no data into general registers: {:?}", sym)