* fixed misplaced getexplicitreg(r_edi) which broke make cycle

This commit is contained in:
peter 2000-01-09 15:19:23 +00:00
parent 23d69a5126
commit 7b87725809

View File

@ -827,19 +827,20 @@ implementation
end end
else else
{ call can have happend with a property } { call can have happend with a property }
if (p^.left^.resulttype^.deftype=objectdef) and
pobjectdef(p^.left^.resulttype)^.is_class then
begin
{$ifndef noAllocEdi} {$ifndef noAllocEdi}
getexplicitregister32(R_EDI); getexplicitregister32(R_EDI);
{$endif noAllocEdi} {$endif noAllocEdi}
if { (p^.left^.treetype=calln) and Don't think that
this is necessary (FK) }
(p^.left^.resulttype^.deftype=objectdef) and
pobjectdef(p^.left^.resulttype)^.is_class then
begin
emit_mov_loc_reg(p^.left^.location,R_EDI); emit_mov_loc_reg(p^.left^.location,R_EDI);
usetemp:=true; usetemp:=true;
end end
else else
begin begin
{$ifndef noAllocEdi}
getexplicitregister32(R_EDI);
{$endif noAllocEdi}
emit_lea_loc_reg(p^.left^.location,R_EDI,false); emit_lea_loc_reg(p^.left^.location,R_EDI,false);
usetemp:=true; usetemp:=true;
end; end;
@ -864,8 +865,7 @@ implementation
gettempofsizereference(4,p^.withreference^); gettempofsizereference(4,p^.withreference^);
normaltemptopersistant(p^.withreference^.offset); normaltemptopersistant(p^.withreference^.offset);
{ move to temp reference } { move to temp reference }
emit_reg_ref(A_MOV,S_L, emit_reg_ref(A_MOV,S_L,R_EDI,newreference(p^.withreference^));
R_EDI,newreference(p^.withreference^));
{$ifndef noAllocEdi} {$ifndef noAllocEdi}
ungetregister32(R_EDI); ungetregister32(R_EDI);
{$endif noAllocEdi} {$endif noAllocEdi}
@ -891,7 +891,10 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.68 2000-01-09 12:35:02 jonas Revision 1.69 2000-01-09 15:19:23 peter
* fixed misplaced getexplicitreg(r_edi) which broke make cycle
Revision 1.68 2000/01/09 12:35:02 jonas
* changed edi allocation to use getexplicitregister32/ungetregister * changed edi allocation to use getexplicitregister32/ungetregister
(adapted tgeni386 a bit for this) and enabled it by default (adapted tgeni386 a bit for this) and enabled it by default
* fixed very big and stupid bug of mine in cg386mat that broke the * fixed very big and stupid bug of mine in cg386mat that broke the