on x86 (systemv, haven't checked windows) pass small structs via registers

This commit is contained in:
Folkert 2023-09-20 19:54:06 +02:00
parent 052ee0cc5f
commit 5f9008fbcc
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
3 changed files with 150 additions and 25 deletions

View file

@ -692,6 +692,7 @@ impl<
if let LayoutRepr::Struct(field_layouts) = layout {
let mut current_offset = base_offset;
for (field, field_layout) in fields.iter().zip(field_layouts.iter()) {
let field_size = layout_interner.stack_size(*field_layout);
self.copy_symbol_to_stack_offset(
layout_interner,
buf,
@ -699,7 +700,6 @@ impl<
field,
field_layout,
);
let field_size = layout_interner.stack_size(*field_layout);
current_offset += field_size as i32;
}
} else {