+ define cpudelayslot: set during compiler compilation for CPUs having branch instructions with delay slot (MIPS, SPARC)

git-svn-id: trunk@36958 -
This commit is contained in:
florian 2017-08-20 17:20:38 +00:00
parent 049d7884cd
commit 7f286eb54e
3 changed files with 13 additions and 10 deletions

View File

@ -188,11 +188,11 @@ unit aoptbase;
Current := tai(Current.Next);
While Assigned(Current) And
((Current.typ In SkipInstr) or
{$if defined(SPARCGEN) or defined(MIPS)}
{$ifdef cpudelayslot}
((Current.typ=ait_instruction) and
(taicpu(Current).opcode=A_NOP)
) or
{$endif SPARCGEN or MIPS}
{$endif cpudelayslot}
((Current.typ = ait_label) And
labelCanBeSkipped(Tai_Label(Current)))) Do
Current := tai(Current.Next);

View File

@ -1049,9 +1049,9 @@ Unit AoptObj;
Repeat
While Assigned(StartPai) And
((StartPai.typ in (SkipInstr - [ait_regAlloc])) Or
{$if defined(MIPS) or defined(SPARCGEN)}
{$ifdef cpudelayslot}
((startpai.typ=ait_instruction) and (taicpu(startpai).opcode=A_NOP)) or
{$endif MIPS or SPARC}
{$endif cpudelayslot}
((StartPai.typ = ait_label) and
Not(Tai_Label(StartPai).labsym.Is_Used))) Do
StartPai := Tai(StartPai.Next);
@ -1398,10 +1398,10 @@ Unit AoptObj;
no-line-info-start/end etc }
if hp1.typ<>ait_marker then
begin
{$if defined(SPARC) or defined(MIPS) }
{$ifdef cpudelayslot}
if (hp1.typ=ait_instruction) and (taicpu(hp1).is_jmp) then
RemoveDelaySlot(hp1);
{$endif SPARC or MIPS }
{$endif cpudelayslot}
asml.remove(hp1);
hp1.free;
stoploop:=false;
@ -1421,9 +1421,9 @@ Unit AoptObj;
(p<>blockstart) then
begin
tasmlabel(JumpTargetOp(taicpu(p))^.ref^.symbol).decrefs;
{$if defined(SPARC) or defined(MIPS)}
{$ifdef cpudelayslot}
RemoveDelaySlot(p);
{$endif SPARC or MIPS}
{$endif cpudelayslot}
hp2:=tai(hp1.next);
asml.remove(p);
p.free;
@ -1468,9 +1468,9 @@ Unit AoptObj;
taicpu(p).oper[0]^.ref^.symbol.increfs;
}
{$if defined(SPARC) or defined(MIPS)}
{$ifdef cpudelayslot}
RemoveDelaySlot(hp1);
{$endif SPARC or MIPS}
{$endif cpudelayslot}
asml.remove(hp1);
hp1.free;
stoploop:=false;

View File

@ -109,6 +109,7 @@
{$define cpuflags}
{$define cputargethasfixedstack}
{$define cpurefshaveindexreg}
{$define cpudelayslot}
{$define SUPPORT_SAFECALL}
{$define sparcgen}
@ -124,6 +125,7 @@
{$define cpuflags}
{$define cputargethasfixedstack}
{$define cpurefshaveindexreg}
{$define cpudelayslot}
{$define SUPPORT_SAFECALL}
{$define sparcgen}
{$endif sparc64}
@ -238,6 +240,7 @@
{$define cpurequiresproperalignment}
{ define cpumm}
{$define cpurefshaveindexreg}
{$define cpudelayslot}
{$define SUPPORT_GET_FRAME}
{$define SUPPORT_SAFECALL}
{$endif mips}