Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions src/compiler/ir-gas64.bas
Original file line number Diff line number Diff line change
Expand Up @@ -1921,7 +1921,7 @@ end sub
#endif

private sub hemitvariable( byval sym as FBSYMBOL ptr )
dim as integer is_global = any, length = any,lgt=any
dim as integer is_global = any, length = any,lgt=any,align=any
dim as string strg,newstrg
dim as long pnew,pold,lenstrg
asm_info(*symbgetname(sym)+ " "+*symbGetMangledName(sym))
Expand Down Expand Up @@ -2013,8 +2013,13 @@ private sub hemitvariable( byval sym as FBSYMBOL ptr )
asm_info("var total size="+Str(length))
asm_info("stk="+Str(ctx.stk))
if symbGetType( sym )=FB_DATATYPE_STRUCT then
asm_info("length udt="+Str(sym->lgt)+" natalign="+Str(sym->subtype->udt.natalign)+" unpadlgt="+Str(sym->subtype->udt.unpadlgt))
ctx.stk=(length+ctx.stk+sym->subtype->udt.natalign-1) And (Not(sym->subtype->udt.natalign-1))
align=sym->subtype->udt.natalign
asm_info("length udt="+Str(sym->lgt)+" natalign="+Str(align)+" unpadlgt="+Str(sym->subtype->udt.unpadlgt))
if align<4 then
asm_info("Natalign= changed for 4")
align=4 ''alignment at least 4"
end if
ctx.stk=(length+ctx.stk+align-1) And (Not(align-1))
else
ctx.stk=(length+ctx.stk+lgt-1) And (Not(lgt-1))
end if
Expand Down