--- Merging r35545 into '.':

U    compiler/arm/aoptcpu.pas
--- Recording mergeinfo for merge of r35545 into '.':
 U   .
--- Merging r35552 into '.':
G    compiler/arm/aoptcpu.pas
--- Recording mergeinfo for merge of r35552 into '.':
 G   .

# revisions: 35545,35552

git-svn-id: branches/fixes_3_0@36371 -
This commit is contained in:
marco 2017-05-30 11:28:15 +00:00
parent ae0e1255bb
commit 32124fd64c

View File

@ -2500,13 +2500,14 @@ Implementation
hp3:=tai(p.Previous);
hp5:=tai(p.next);
asml.Remove(p);
{ if there is a reg. dealloc instruction or address labels (e.g. for GOT-less PIC)
{ if there is a reg. alloc/dealloc/sync instructions or address labels (e.g. for GOT-less PIC)
associated with p, move it together with p }
{ before the instruction? }
{ find reg allocs,deallocs and PIC labels }
while assigned(hp3) and (hp3.typ<>ait_instruction) do
begin
if ( (hp3.typ=ait_regalloc) and (tai_regalloc(hp3).ratype in [ra_dealloc]) and
if ( (hp3.typ=ait_regalloc) and (tai_regalloc(hp3).ratype in [ra_alloc, ra_dealloc]) and
RegInInstruction(tai_regalloc(hp3).reg,p) )
or ( (hp3.typ=ait_label) and (tai_label(hp3).labsym.typ=AT_ADDR) )
then
@ -2514,7 +2515,7 @@ Implementation
hp4:=hp3;
hp3:=tai(hp3.Previous);
asml.Remove(hp4);
list.Concat(hp4);
list.Insert(hp4);
end
else
hp3:=tai(hp3.Previous);
@ -2524,9 +2525,10 @@ Implementation
SwapRegLive(taicpu(p),taicpu(hp1));
{ after the instruction? }
{ find reg deallocs and reg syncs }
while assigned(hp5) and (hp5.typ<>ait_instruction) do
begin
if (hp5.typ=ait_regalloc) and (tai_regalloc(hp5).ratype in [ra_dealloc]) and
if (hp5.typ=ait_regalloc) and (tai_regalloc(hp5).ratype in [ra_dealloc, ra_sync]) and
RegInInstruction(tai_regalloc(hp5).reg,p) then
begin
hp4:=hp5;