* fixed more alignment issues

This commit is contained in:
florian 2004-01-30 13:42:03 +00:00
parent b80d10cb70
commit 35b8e93073
9 changed files with 62 additions and 90 deletions

View File

@ -141,8 +141,9 @@ interface
toptype=(top_none,top_reg,top_ref,top_const,top_symbol,top_bool,top_local,
{ ARM only }
top_regset,
{ ARM only }
top_shifterop);
top_shifterop,
{ m68k only }
top_reglist);
{ kinds of operations that an instruction can perform on an operand }
topertype = (operand_read,operand_write,operand_readwrite);
@ -163,6 +164,9 @@ interface
top_regset : (regset:^tcpuregisterset);
top_shifterop : (shifterop : pshifterop);
{$endif arm}
{$ifdef m68k}
top_regset : (regset:^tcpuregisterset);
{$endif m68k}
end;
poper=^toper;
@ -1971,7 +1975,10 @@ implementation
end.
{
$Log$
Revision 1.67 2004-01-26 16:12:27 daniel
Revision 1.68 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.67 2004/01/26 16:12:27 daniel
* reginfo now also only allocated during register allocation
* third round of gdb cleanups: kick out most of concatstabto

View File

@ -85,7 +85,7 @@ Type
{ structure or to improve alignment }
TStateInt = Byte;
TContent = Packed Record
TContent = Record
{ start and end of block instructions that defines the }
{ content of this register. If Typ = con_const, then }
{ Longint(StartMod) = value of the constant) }
@ -788,7 +788,10 @@ End.
{
$Log$
Revision 1.8 2002-11-18 17:31:54 peter
Revision 1.9 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.8 2002/11/18 17:31:54 peter
* pass proccalloption to ret_in_xxx and push_xxx functions
Revision 1.7 2002/08/18 18:16:55 florian

View File

@ -364,71 +364,6 @@ uses
const
max_operands = 5;
(*
{# Table of registers which can be allocated by the code generator
internally, when generating the code.
}
{ legend: }
{ xxxregs = set of all possibly used registers of that type in the code }
{ generator }
{ usableregsxxx = set of all 32bit components of registers that can be }
{ possible allocated to a regvar or using getregisterxxx (this }
{ excludes registers which can be only used for parameter }
{ passing on ABI's that define this) }
{ c_countusableregsxxx = amount of registers in the usableregsxxx set }
maxintregs = 18;
{ to determine how many registers to use for regvars }
maxintscratchregs = 3;
usableregsint = [RS_R13..RS_R27];
c_countusableregsint = 18;
maxfpuregs = 31-14+1;
usableregsfpu = [RS_F14..RS_F31];
c_countusableregsfpu = 31-14+1;
usableregsmm = [RS_M14..RS_M31];
c_countusableregsmm = 31-14+1;
{ no distinction on this platform }
maxaddrregs = 0;
addrregs = [];
usableregsaddr = [];
c_countusableregsaddr = 0;
firstsaveintreg = RS_R13;
lastsaveintreg = RS_R31;
firstsavefpureg = RS_F14;
lastsavefpureg = RS_F31;
{ no altivec support yet. Need to override tcgobj.a_loadmm_* first in tcgppc }
firstsavemmreg = RS_INVALID;
lastsavemmreg = RS_INVALID;
maxvarregs = 15;
varregs : Array [1..maxvarregs] of Tsuperregister =
(RS_R14,RS_R15,RS_R16,RS_R17,RS_R18,RS_R19,RS_R20,RS_R21,
RS_R22,RS_R23,RS_R24,RS_R25,RS_R26,RS_R27,RS_R28);
maxfpuvarregs = 31-14+1;
fpuvarregs : Array [1..maxfpuvarregs] of Tsuperregister =
(RS_F14,RS_F15,RS_F16,RS_F17,RS_F18,RS_F19,RS_F20,RS_F21,RS_F22,RS_F23,
RS_F24,RS_F25,RS_F26,RS_F27,RS_F28,RS_F29,RS_F30,RS_F31);
{
// max_param_regs_int = 8;
// param_regs_int: Array[1..max_param_regs_int] of Tsuperregister =
// (R_3,R_4,R_5,R_6,R_7,R_8,R_9,R_10);
// max_param_regs_fpu = 13;
// param_regs_fpu: Array[1..max_param_regs_fpu] of Toldregister =
// (RS_F1,RS_F2,RS_F3,RS_F4,RS_F5,RS_F6,RS_F7,RS_F8,RS_F9,RS_F10,RS_F11,RS_F12,RS_F13);
max_param_regs_mm = 13;
param_regs_mm: Array[1..max_param_regs_mm] of Toldregister =
(R_M1,R_M2,R_M3,R_M4,R_M5,R_M6,R_M7,R_M8,R_M9,R_M10,R_M11,R_M12,R_M13);
}
*)
{*****************************************************************************
Default generic sizes
@ -694,7 +629,10 @@ implementation
end.
{
$Log$
Revision 1.82 2004-01-10 00:16:21 jonas
Revision 1.83 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.82 2004/01/10 00:16:21 jonas
* fixed mtfsb0 instruction for assembler reader/writer
* fixed initialisation of fpscr register to avoid spurious SIGPFE's
(uses mtfsb0 instruction, so added extra define in options.pas to avoid

View File

@ -41,7 +41,7 @@ type
{$endif Test_Double_checksum}
const
CurrentPPUVersion=38;
CurrentPPUVersion=39;
{ buffer sizes }
maxentrysize = 1024;
@ -153,9 +153,9 @@ type
end;
tppuentry=packed record
size : longint;
id : byte;
nr : byte;
size : longint;
end;
tppufile=class
@ -993,7 +993,10 @@ end;
end.
{
$Log$
Revision 1.44 2003-11-10 22:02:52 peter
Revision 1.45 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.44 2003/11/10 22:02:52 peter
* cross unit inlining fixed
Revision 1.43 2003/10/22 20:40:00 peter

View File

@ -39,7 +39,7 @@ unit rabase;
tcbaseasmreader = class of tbaseasmreader;
pasmmodeinfo = ^tasmmodeinfo;
tasmmodeinfo = packed record
tasmmodeinfo = record
id : tasmmode;
idtxt : string[8];
casmreader : tcbaseasmreader;
@ -106,7 +106,10 @@ finalization
end.
{
$Log$
Revision 1.2 2003-11-12 16:58:42 peter
Revision 1.3 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.2 2003/11/12 16:58:42 peter
* fixed wrong initialization
Revision 1.1 2003/11/12 16:05:39 florian

View File

@ -1141,7 +1141,7 @@ implementation
var
ps,nps : tvarsym;
pd,npd : tdef;
varalignrecord,
varalignrecord,varalign,
storesize,storealign : longint;
begin
storesize:=datasize;
@ -1162,8 +1162,14 @@ implementation
symsearch.insert(ps);
{ update address }
ps.fieldoffset:=datasize;
{ update alignment of this record }
varalignrecord:=used_align(ps.vartype.def.alignment,aktalignment.recordalignmin,aktalignment.recordalignmax);
varalign:=ps.vartype.def.alignment;
{
if varalign=0 then
varalign:=size_2_align(ps.getvaluesize);
}
varalignrecord:=used_align(varalign,aktalignment.recordalignmin,aktalignment.recordalignmax);
recordalignment:=max(recordalignment,varalignrecord);
{ next }
ps:=nps;
@ -2333,7 +2339,10 @@ implementation
end.
{
$Log$
Revision 1.129 2004-01-29 16:51:29 peter
Revision 1.130 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.129 2004/01/29 16:51:29 peter
* fixed alignment calculation for variant records
* fixed alignment padding of records

View File

@ -179,7 +179,7 @@ interface
palignmentinfo = ^talignmentinfo;
talignmentinfo = packed record
talignmentinfo = record
procalign,
loopalign,
jumpalign,
@ -195,7 +195,7 @@ interface
end;
pasminfo = ^tasminfo;
tasminfo = packed record
tasminfo = record
id : tasm;
idtxt : string[9];
asmbin : string[8];
@ -211,13 +211,13 @@ interface
end;
parinfo = ^tarinfo;
tarinfo = packed record
tarinfo = record
id : tar;
arcmd : string[50];
end;
presinfo = ^tresinfo;
tresinfo = packed record
tresinfo = record
id : tres;
resbin : string[8];
rescmd : string[50];
@ -650,7 +650,10 @@ finalization
end.
{
$Log$
Revision 1.81 2004-01-28 15:36:46 florian
Revision 1.82 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.81 2004/01/28 15:36:46 florian
* fixed another couple of arm bugs
Revision 1.80 2004/01/21 20:53:50 marco

View File

@ -257,9 +257,9 @@ begin
end
else
first:=false;
writeln(confile,'NR_',names[i],' = ',numbers[i],';');
writeln(supfile,'RS_',names[i],' = ',supregs[i],';');
write(numfile,'NR_',names[i]);
writeln(confile,'NR_'+names[i],' = ','tregister(',numbers[i],')',';');
write(numfile,'tregister(',numbers[i],')');
write(stdfile,'''',stdnames[i],'''');
write(stabfile,stabs[i]);
write(rnifile,regnumber_index[i]);
@ -293,6 +293,9 @@ begin
end.
{
$Log$
Revision 1.2 2003-12-10 02:22:59 karoly
Revision 1.3 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.2 2003/12/10 02:22:59 karoly
* fixed logs
}

View File

@ -228,7 +228,7 @@ uses
type
{ reference record }
preference = ^treference;
treference = packed record
treference = record
segment,
base,
index : tregister;
@ -253,7 +253,7 @@ uses
References are given from the caller's point of view. The usual
TLocation isn't used, because contains a lot of unnessary fields.
}
tparalocation = packed record
tparalocation = record
size : TCGSize;
loc : TCGLoc;
alignment : byte;
@ -535,7 +535,10 @@ implementation
end.
{
$Log$
Revision 1.37 2004-01-15 14:01:32 florian
Revision 1.38 2004-01-30 13:42:03 florian
* fixed more alignment issues
Revision 1.37 2004/01/15 14:01:32 florian
+ x86 instruction tables for x86-64 extended
Revision 1.36 2004/01/14 23:39:05 florian