diff options
author | Jose Alonso Cardenas Marquez <acm@FreeBSD.org> | 2022-02-03 04:49:16 +0000 |
---|---|---|
committer | Jose Alonso Cardenas Marquez <acm@FreeBSD.org> | 2022-02-03 05:07:13 +0000 |
commit | 0de5507c162d2a04212efa2770a1a9ed56626030 (patch) | |
tree | e877fc3edea713673a0c3b68d30a58eb846769a3 /lang/fpc | |
parent | 381d3c56b018693931cf71b616cc0965887b6a66 (diff) | |
download | ports-0de5507c162d2a04212efa2770a1a9ed56626030.tar.gz ports-0de5507c162d2a04212efa2770a1a9ed56626030.zip |
lang/fpc: Fix build issue on lazarus i386 and amd64
- Bump PORTREVISION
- Disable some default OPTIONS
Obtained from: https://forum.lazarus.freepascal.org/index.php/topic,57752.msg429737.html#msg429737
Diffstat (limited to 'lang/fpc')
-rw-r--r-- | lang/fpc/Makefile | 2 | ||||
-rw-r--r-- | lang/fpc/files/patch-compiler-x86_aoptx86.pas | 72 |
2 files changed, 73 insertions, 1 deletions
diff --git a/lang/fpc/Makefile b/lang/fpc/Makefile index ca156b85ee75..b64e3d709aa0 100644 --- a/lang/fpc/Makefile +++ b/lang/fpc/Makefile @@ -2,7 +2,7 @@ PORTNAME= fpc PORTVERSION= 3.2.2 -PORTREVISION?= 0 +PORTREVISION?= 1 CATEGORIES?= lang MASTER_SITES= ftp://ftp.freepascal.org/pub/fpc/dist/${PORTVERSION}/source/:source \ ftp://planetmirror.com/pub/fpc/dist/${PORTVERSION}/source/:source \ diff --git a/lang/fpc/files/patch-compiler-x86_aoptx86.pas b/lang/fpc/files/patch-compiler-x86_aoptx86.pas new file mode 100644 index 000000000000..d07688bb55ed --- /dev/null +++ b/lang/fpc/files/patch-compiler-x86_aoptx86.pas @@ -0,0 +1,72 @@ +--- compiler/x86/aoptx86.pas 2022-01-25 22:18:01.236523000 -0500 ++++ compiler/x86/aoptx86.pas 2022-01-25 22:34:15.492397000 -0500 +@@ -2761,6 +2761,7 @@ + if (l<=4) and (l>0) then + begin + condition:=inverse_cond(taicpu(p).condition); ++ UpdateUsedRegs(tai(p.next)); + GetNextInstruction(p,hp1); + repeat + if not Assigned(hp1) then +@@ -2768,7 +2769,7 @@ + + taicpu(hp1).opcode:=A_CMOVcc; + taicpu(hp1).condition:=condition; +- UpdateUsedRegs(hp1); ++ UpdateUsedRegs(tai(hp1.next)); + GetNextInstruction(hp1,hp1); + until not(CanBeCMOV(hp1)); + +@@ -2815,6 +2816,7 @@ + asml.Remove(p); + p.Free; + ++ UpdateUsedRegs(tai(hp2.next)); + GetNextInstruction(hp2, p); { Instruction after the label } + + { Remove the label if this is its final reference } +@@ -2878,6 +2880,7 @@ + FindLabel(tasmlabel(taicpu(hp2).oper[0]^.ref^.symbol),hp1) then + begin + condition:=inverse_cond(taicpu(p).condition); ++ UpdateUsedRegs(tai(p.next)); + GetNextInstruction(p,hp1); + repeat + taicpu(hp1).opcode:=A_CMOVcc; +@@ -2888,19 +2891,23 @@ + not(CanBeCMOV(hp1)); + + condition:=inverse_cond(condition); ++ if GetLastInstruction(hpmov2,hp1) then ++ UpdateUsedRegs(tai(hp1.next)); ++ + hp1 := hpmov2; + { hp1 is now at <several movs 2> } + while Assigned(hp1) and CanBeCMOV(hp1) do + begin + taicpu(hp1).opcode:=A_CMOVcc; + taicpu(hp1).condition:=condition; +- UpdateUsedRegs(hp1); ++ UpdateUsedRegs(tai(hp1.next)); + GetNextInstruction(hp1,hp1); + end; + + hp1 := p; + + { Get first instruction after label } ++ UpdateUsedRegs(tai(hp3.next)); + GetNextInstruction(hp3, p); + + if assigned(p) and (hp3.typ = ait_align) then +@@ -2955,10 +2962,7 @@ + end; + + if Assigned(p) then +- begin +- UpdateUsedRegs(p); +- result:=true; +- end; ++ result:=true; + exit; + end; + end; |