diff options
Diffstat (limited to 'fpc-src-svn')
-rw-r--r-- | fpc-src-svn/38680_refined_htypechk.pas-2.patch | 195 | ||||
-rw-r--r-- | fpc-src-svn/PKGBUILD | 13 |
2 files changed, 3 insertions, 205 deletions
diff --git a/fpc-src-svn/38680_refined_htypechk.pas-2.patch b/fpc-src-svn/38680_refined_htypechk.pas-2.patch deleted file mode 100644 index e859cddd6..000000000 --- a/fpc-src-svn/38680_refined_htypechk.pas-2.patch +++ /dev/null @@ -1,195 +0,0 @@ -Index: compiler/htypechk.pas -=================================================================== ---- compiler/htypechk.pas (리비전 49131) -+++ compiler/htypechk.pas (작업 사본) -@@ -2892,11 +2892,15 @@ - obj_to : tobjectdef; - def_from, - def_to : tdef; -+ tempn, - currpt, - pt : tcallparanode; -+ eqtemp, - eq, - mineq : tequaltype; -+ nconvtyp, - convtype : tconverttype; -+ npd, - pdtemp, - pdoper : tprocdef; - releasecurrpt : boolean; -@@ -3001,7 +3005,10 @@ - is_integer(def_to) and - is_in_limit(def_from,def_to) then - begin -- eq:=te_equal; -+ if torddef(def_from).ordtype=torddef(def_to).ordtype then -+ eq:=te_exact -+ else -+ eq:=te_equal; - hp^.ordinal_distance:=hp^.ordinal_distance+ - abs(bestreal(torddef(def_from).low)-bestreal(torddef(def_to).low)); - rth:=bestreal(torddef(def_to).high); -@@ -3023,7 +3030,10 @@ - is_real_or_cextended(def_from) and - is_real_or_cextended(def_to) then - begin -- eq:=te_equal; -+ if tfloatdef(def_from).floattype=tfloatdef(def_to).floattype then -+ eq:=te_exact -+ else -+ eq:=te_equal; - if is_extended(def_to) then - rth:=4 - else -@@ -3130,6 +3140,30 @@ - para_allowed(eq,currpt,def_to); - end; - end; -+ { to specialize pointer } -+ if (eq<te_exact) and -+ is_pointer(def_from) and is_pointer(def_to) and -+ (tstoreddef(tpointerdef(def_to).pointeddef).is_specialization) then -+ begin -+ eqtemp:=compare_defs_ext(tpointerdef(def_from).pointeddef,tpointerdef(def_to).pointeddef,nothingn,nconvtyp,npd,[cdo_equal_check]); -+ if eqtemp<>te_exact then -+ { void pointer } -+ if currpt.left.nodetype=addrn then -+ begin -+ tempn:=tcallparanode(currpt.left); -+ while assigned(tempn) do -+ begin -+ if tempn.nodetype in [loadn,derefn] then -+ begin -+ eqtemp:=compare_defs_ext(tempn.resultdef,tpointerdef(def_to).pointeddef,nothingn,nconvtyp,npd,[cdo_equal_check]); -+ break; -+ end; -+ tempn:=tcallparanode(tempn.left); -+ end; -+ end; -+ if eqtemp=te_exact then -+ eq:=te_exact; -+ end; - - { univ parameters match if the size matches (don't override the - comparison result if it was ok, since a match based on the -@@ -3145,7 +3179,6 @@ - procvar is choosen. See tb0471 (PFV) } - if (pt<>currpt) and (eq=te_exact) then - eq:=te_equal; -- - { increase correct counter } - case eq of - te_exact : -@@ -3291,53 +3324,53 @@ - res:=(bestpd^.coper_count-currpd^.coper_count); - if (res=0) then - begin -- { less cl6 parameters? } -- res:=(bestpd^.cl6_count-currpd^.cl6_count); -- if (res=0) then -- begin -- { less cl5 parameters? } -- res:=(bestpd^.cl5_count-currpd^.cl5_count); -- if (res=0) then -- begin -- { less cl4 parameters? } -- res:=(bestpd^.cl4_count-currpd^.cl4_count); -+ { more exact parameters? } -+ res:=(currpd^.exact_count-bestpd^.exact_count); -+ if (res=0) then -+ begin -+ { less cl6 parameters? } -+ res:=(bestpd^.cl6_count-currpd^.cl6_count); -+ if (res=0) then -+ begin -+ { less cl5 parameters? } -+ res:=(bestpd^.cl5_count-currpd^.cl5_count); - if (res=0) then - begin -- { less cl3 parameters? } -- res:=(bestpd^.cl3_count-currpd^.cl3_count); -+ { less cl4 parameters? } -+ res:=(bestpd^.cl4_count-currpd^.cl4_count); - if (res=0) then - begin -- { less cl2 parameters? } -- res:=(bestpd^.cl2_count-currpd^.cl2_count); -- if (res=0) then -- begin -- { less cl1 parameters? } -- res:=(bestpd^.cl1_count-currpd^.cl1_count); -- if (res=0) then -- begin -- { more exact parameters? } -- res:=(currpd^.exact_count-bestpd^.exact_count); -- if (res=0) then -- begin -- { less equal parameters? } -- res:=(bestpd^.equal_count-currpd^.equal_count); -- if (res=0) then -- begin -- { smaller ordinal distance? } -- if (currpd^.ordinal_distance<bestpd^.ordinal_distance) then -- res:=1 -- else -- if (currpd^.ordinal_distance>bestpd^.ordinal_distance) then -- res:=-1 -- else -- res:=0; -- end; -- end; -- end; -- end; -+ { less cl3 parameters? } -+ res:=(bestpd^.cl3_count-currpd^.cl3_count); -+ if (res=0) then -+ begin -+ { less cl2 parameters? } -+ res:=(bestpd^.cl2_count-currpd^.cl2_count); -+ if (res=0) then -+ begin -+ { less cl1 parameters? } -+ res:=(bestpd^.cl1_count-currpd^.cl1_count); -+ if (res=0) then -+ begin -+ { less equal parameters? } -+ res:=(bestpd^.equal_count-currpd^.equal_count); -+ if (res=0) then -+ begin -+ { smaller ordinal distance? } -+ if (currpd^.ordinal_distance<bestpd^.ordinal_distance) then -+ res:=1 -+ else -+ if (currpd^.ordinal_distance>bestpd^.ordinal_distance) then -+ res:=-1 -+ else -+ res:=0; -+ end; -+ end; -+ end; -+ end; - end; - end; -- end; -+ end; - end; - end; - end; -@@ -3608,7 +3641,7 @@ - cpoptions:=cpoptions+[cpo_rtlproc]; - - compare_by_old_sortout_check := 0; // can't decide, bestpd probably wasn't sorted out in unpatched -- if (compare_paras(pd^.data.paras,bestpd^.data.paras,cp_value_equal_const,cpoptions)>=te_equal) and -+ if (compare_paras(pd^.data.paras,bestpd^.data.paras,cp_value_equal_const,cpoptions)>te_equal) and - (not(po_objc in bestpd^.data.procoptions) or (bestpd^.data.messageinf.str^=pd^.data.messageinf.str^)) then - compare_by_old_sortout_check := 1; // bestpd was sorted out before patch - end; -@@ -3643,7 +3676,6 @@ - end; - end; - -- - function tcallcandidates.choose_best(var bestpd:tabstractprocdef; singlevariant: boolean):integer; - var - pd: tprocdef; diff --git a/fpc-src-svn/PKGBUILD b/fpc-src-svn/PKGBUILD index e367ec512..7fc98c7cc 100644 --- a/fpc-src-svn/PKGBUILD +++ b/fpc-src-svn/PKGBUILD @@ -9,7 +9,7 @@ # See http://bbs.archlinux.org/viewtopic.php?t=9318&highlight=fpc pkgname='fpc-src-svn' -pkgver=3.3.1.r11045.9f47e21d +pkgver=3.3.1.r11549.01220442 _pkgver="${pkgver%.r*}" _commit="${pkgver##*.}" pkgrel=1 @@ -23,10 +23,8 @@ options=('!strip') conflicts=('fpc-src') provides=("fpc-src=${pkgver}") -source=('38680_refined_htypechk.pas-2.patch' -'git+https://gitlab.com/freepascal.org/fpc/source.git#commit='"${_commit}") -sha512sums=('583e26eca23d4fde9b6dc163c8e97cd5f271ca98e38560e0da0b79d30652a876f5c66e4b7c2ea32b429f34855b1cdc48987f4fd7bb7cf63eeafcbb6a08ee9693' - 'SKIP') +source=('git+https://gitlab.com/freepascal.org/fpc/source.git#commit='"${_commit}") +sha512sums=('SKIP') pkgver() { cd "${srcdir}"/source @@ -49,11 +47,6 @@ pkgver() { "${_commit}" } -prepare() { - cd "${srcdir}"/source - patch -p0 -i "${srcdir}/38680_refined_htypechk.pas-2.patch" -} - package() { install -dm755 "${pkgdir}"/usr/lib/fpc/src mv "${srcdir}"/source/* "${pkgdir}"/usr/lib/fpc/src/ |