* fix m68k compile

This commit is contained in:
peter 2003-04-23 13:40:33 +00:00
parent 7ff85f0779
commit 2bb32541be
4 changed files with 30 additions and 25 deletions

View File

@ -176,7 +176,6 @@ Implementation
var r:Tregister;
rs:Tsuperregister;
i:longint;
begin
if unusedscratchregisters=[] then
@ -201,12 +200,11 @@ Implementation
var r:Tregister;
rs:Tsuperregister;
i:longint;
begin
if unusedscratchregisters=[] then
internalerror(68996);
if RS_A0 in unusedscratchregisters then
rs:=RS_A0
else if RS_A1 in unusedscratchregisters then
@ -227,8 +225,6 @@ Implementation
{****************************************************************************}
function tcg68k.fixref(list: taasmoutput; var ref: treference): boolean;
var
tmpreg: tregister;
begin
result := false;
{ The Coldfire and MC68020+ have extended
@ -1030,9 +1026,6 @@ Implementation
reference_release(list,hp2);
end;
{ loading SELF-reference again }
g_maybe_loadself(list);
if delsource then
tg.ungetiftemp(list,source);
@ -1048,9 +1041,9 @@ Implementation
end;
procedure tcg68k.g_stackframe_entry(list : taasmoutput;localsize : longint);
var r,r2,rsp:Tregister;
begin
r.enum:=frame_pointer_reg;
rsp.enum:=stack_pointer_reg;
@ -1072,9 +1065,9 @@ Implementation
end;
procedure tcg68k.g_restore_frame_pointer(list : taasmoutput);
var r:Tregister;
begin
r.enum:=frame_pointer_reg;
list.concat(taicpu.op_reg(A_UNLK,S_NO,r));
@ -1137,7 +1130,7 @@ Implementation
var tosave:Tsupregset;
r:Tregister;
begin
tosave:=std_saved_registers;
{ only save the registers which are not used and must be saved }
@ -1344,7 +1337,10 @@ end.
{
$Log$
Revision 1.18 2003-02-19 22:00:16 daniel
Revision 1.19 2003-04-23 13:40:33 peter
* fix m68k compile
Revision 1.18 2003/02/19 22:00:16 daniel
* Code generator converted to new register notation
- Horribily outdated todo.txt removed

View File

@ -174,6 +174,9 @@ uses
first_supreg = $01;
last_supreg = $10;
first_imreg = $11;
last_imreg = $ff;
{# First register in the tregister enumeration }
firstreg = low(Toldregister);
{# Last register in the tregister enumeration }
@ -706,7 +709,10 @@ implementation
end.
{
$Log$
Revision 1.19 2003-04-23 12:35:35 florian
Revision 1.20 2003-04-23 13:40:33 peter
* fix m68k compile
Revision 1.19 2003/04/23 12:35:35 florian
* fixed several issues with powerpc
+ applied a patch from Jonas for nested function calls (PowerPC only)
* ...

View File

@ -164,7 +164,7 @@ implementation
begin
{ byte(boolean) or word(wordbool) or longint(longbool) must }
{ be accepted for var parameters }
if (nf_explizit in flags) and
if (nf_explicit in flags) and
(left.resulttype.def.size=resulttype.def.size) and
(left.location.loc in [LOC_REFERENCE,LOC_CREFERENCE,LOC_CREGISTER]) then
begin
@ -296,7 +296,10 @@ begin
end.
{
$Log$
Revision 1.8 2003-02-19 22:00:16 daniel
Revision 1.9 2003-04-23 13:40:33 peter
* fix m68k compile
Revision 1.8 2003/02/19 22:00:16 daniel
* Code generator converted to new register notation
- Horribily outdated todo.txt removed
@ -326,4 +329,4 @@ end.
* out of bound references should now be handled correctly
}
}

View File

@ -35,9 +35,6 @@ unit rgcpu;
type
trgcpu = class(trgobj)
unusedregsaddr,usableregsaddr:Tsupregset;
countunusedregsaddr,
countusableregsaddr : byte;
procedure saveStateForInline(var state: pointer);override;
procedure restoreStateAfterInline(var state: pointer);override;
procedure saveUnusedState(var state: pointer);override;
@ -78,11 +75,11 @@ unit rgcpu;
usedintinproc,
unusedregsint,
countunusedregsint);
end;
function trgcpu.isaddressregister(reg: tregister): boolean;
begin
isaddressregister := reg.enum in addrregs;
end;
@ -215,7 +212,10 @@ end.
{
$Log$
Revision 1.8 2003-04-22 10:09:35 daniel
Revision 1.9 2003-04-23 13:40:33 peter
* fix m68k compile
Revision 1.8 2003/04/22 10:09:35 daniel
+ Implemented the actual register allocator
+ Scratch registers unavailable when new register allocator used
+ maybe_save/maybe_restore unavailable when new register allocator used