* more C packing fixes

This commit is contained in:
peter 1999-07-23 20:59:23 +00:00
parent 0cf9926497
commit 6c00bfc702

View File

@ -1149,39 +1149,38 @@
{ this symbol can't be loaded to a register } { this symbol can't be loaded to a register }
var_options:=var_options and not vo_regable; var_options:=var_options and not vo_regable;
{ get the alignment size } { get the alignment size }
if (aktpackrecords=packrecord_C) and if (aktpackrecords=packrecord_C) then
(owner^.dataalignment<4) then
begin begin
varalign:=definition^.alignment; varalign:=definition^.alignment;
if varalign>0 then if varalign=0 then
begin begin
if varalign>owner^.dataalignment then if (owner^.dataalignment<4) then
owner^.dataalignment:=varalign; begin
end if (l>=4) then
else owner^.dataalignment:=4
begin else
if l>=4 then if (owner^.dataalignment<2) and (l>=2) then
owner^.dataalignment:=4 owner^.dataalignment:=2;
else end;
if l>=2 then
owner^.dataalignment:=2;
end; end;
end; end
else
varalign:=0;
{ align record and object fields } { align record and object fields }
if (l=1) or (owner^.dataalignment=1) then if (l=1) or (varalign=1) or (owner^.dataalignment=1) then
begin begin
address:=owner^.datasize; address:=owner^.datasize;
inc(owner^.datasize,l) inc(owner^.datasize,l)
end end
else else
if (l=2) or (owner^.dataalignment=2) then if (l=2) or (varalign=2) or (owner^.dataalignment=2) then
begin begin
owner^.datasize:=(owner^.datasize+1) and (not 1); owner^.datasize:=(owner^.datasize+1) and (not 1);
address:=owner^.datasize; address:=owner^.datasize;
inc(owner^.datasize,l) inc(owner^.datasize,l)
end end
else else
if (l<=4) or (owner^.dataalignment=4) then if (l<=4) or (varalign=4) or (owner^.dataalignment=4) then
begin begin
owner^.datasize:=(owner^.datasize+3) and (not 3); owner^.datasize:=(owner^.datasize+3) and (not 3);
address:=owner^.datasize; address:=owner^.datasize;
@ -2002,7 +2001,10 @@
{ {
$Log$ $Log$
Revision 1.100 1999-07-23 16:05:32 peter Revision 1.101 1999-07-23 20:59:23 peter
* more C packing fixes
Revision 1.100 1999/07/23 16:05:32 peter
* alignment is now saved in the symtable * alignment is now saved in the symtable
* C alignment added for records * C alignment added for records
* PPU version increased to solve .12 <-> .13 probs * PPU version increased to solve .12 <-> .13 probs