aboutsummaryrefslogtreecommitdiff
path: root/lang/fpc
diff options
context:
space:
mode:
authorJose Alonso Cardenas Marquez <acm@FreeBSD.org>2022-02-03 04:49:16 +0000
committerJose Alonso Cardenas Marquez <acm@FreeBSD.org>2022-02-03 05:07:13 +0000
commit0de5507c162d2a04212efa2770a1a9ed56626030 (patch)
treee877fc3edea713673a0c3b68d30a58eb846769a3 /lang/fpc
parent381d3c56b018693931cf71b616cc0965887b6a66 (diff)
downloadports-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/Makefile2
-rw-r--r--lang/fpc/files/patch-compiler-x86_aoptx86.pas72
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;