mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-23 00:09:31 +02:00
* finetuned register allocation info for assignments
This commit is contained in:
parent
bed5714643
commit
32deddeab1
@ -1274,10 +1274,6 @@ implementation
|
||||
end;
|
||||
|
||||
begin
|
||||
{$IfNDef regallocfix}
|
||||
If delsource then
|
||||
del_reference(source);
|
||||
{$EndIf regallocfix}
|
||||
if (not loadref) and
|
||||
((size<=8) or
|
||||
(not(cs_littlesize in aktglobalswitches ) and (size<=12))) then
|
||||
@ -1287,10 +1283,8 @@ implementation
|
||||
for i:=1 to helpsize do
|
||||
begin
|
||||
emit_ref_reg(A_MOV,S_L,newreference(source),R_EDI);
|
||||
{$ifdef regallocfix}
|
||||
If (size = 4) and delsource then
|
||||
del_reference(source);
|
||||
{$endif regallocfix}
|
||||
exprasmList.concat(Taicpu.Op_reg_ref(A_MOV,S_L,R_EDI,newreference(dest)));
|
||||
inc(source.offset,4);
|
||||
inc(dest.offset,4);
|
||||
@ -1299,10 +1293,8 @@ implementation
|
||||
if size>1 then
|
||||
begin
|
||||
emit_ref_reg(A_MOV,S_W,newreference(source),R_DI);
|
||||
{$ifdef regallocfix}
|
||||
If (size = 2) and delsource then
|
||||
del_reference(source);
|
||||
{$endif regallocfix}
|
||||
exprasmList.concat(Taicpu.Op_reg_ref(A_MOV,S_W,R_DI,newreference(dest)));
|
||||
inc(source.offset,2);
|
||||
inc(dest.offset,2);
|
||||
@ -1345,10 +1337,8 @@ implementation
|
||||
emit_reg_reg(A_MOV,S_L,reg32,R_EDI);
|
||||
end;
|
||||
emit_ref_reg(A_MOV,S_B,newreference(source),reg8);
|
||||
{$ifdef regallocfix}
|
||||
If delsource then
|
||||
del_reference(source);
|
||||
{$endif regallocfix}
|
||||
exprasmList.concat(Taicpu.Op_reg_ref(A_MOV,S_B,reg8,newreference(dest)));
|
||||
if swap then
|
||||
begin
|
||||
@ -1363,20 +1353,14 @@ implementation
|
||||
begin
|
||||
getexplicitregister32(R_EDI);
|
||||
emit_ref_reg(A_LEA,S_L,newreference(dest),R_EDI);
|
||||
{$ifdef regallocfix}
|
||||
{is this ok?? (JM)}
|
||||
del_reference(dest);
|
||||
{$endif regallocfix}
|
||||
exprasmList.concat(Tairegalloc.Alloc(R_ESI));
|
||||
if loadref then
|
||||
emit_ref_reg(A_MOV,S_L,newreference(source),R_ESI)
|
||||
else
|
||||
begin
|
||||
emit_ref_reg(A_LEA,S_L,newreference(source),R_ESI);
|
||||
{$ifdef regallocfix}
|
||||
if delsource then
|
||||
del_reference(source);
|
||||
{$endif regallocfix}
|
||||
end;
|
||||
|
||||
exprasmList.concat(Taicpu.Op_none(A_CLD,S_NO));
|
||||
@ -2985,7 +2969,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2001-09-30 21:28:34 peter
|
||||
Revision 1.6 2001-10-14 11:49:51 jonas
|
||||
* finetuned register allocation info for assignments
|
||||
|
||||
Revision 1.5 2001/09/30 21:28:34 peter
|
||||
* int64->boolean fixed
|
||||
|
||||
Revision 1.4 2001/08/30 20:13:57 peter
|
||||
|
@ -658,10 +658,11 @@ implementation
|
||||
end;
|
||||
|
||||
concatcopy(right.location.reference,
|
||||
left.location.reference,left.resulttype.def.size,false,false);
|
||||
left.location.reference,left.resulttype.def.size,true,false);
|
||||
del_reference(left.location.reference);
|
||||
{ done by concatcopy
|
||||
del_reference(right.location.reference);
|
||||
ungetiftemp(right.location.reference);
|
||||
ungetiftemp(right.location.reference); }
|
||||
end;
|
||||
end;
|
||||
{$ifdef SUPPORT_MMX}
|
||||
@ -1084,7 +1085,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.23 2001-10-04 14:33:28 jonas
|
||||
Revision 1.24 2001-10-14 11:49:51 jonas
|
||||
* finetuned register allocation info for assignments
|
||||
|
||||
Revision 1.23 2001/10/04 14:33:28 jonas
|
||||
* fixed range check errors
|
||||
|
||||
Revision 1.22 2001/09/09 08:51:09 jonas
|
||||
|
Loading…
Reference in New Issue
Block a user