Browse Source

* 8086: Fixed using far procvars in a near code memory model and vice versa.

git-svn-id: trunk@46558 -
yury 5 years ago
parent
commit
eee67af684
1 changed files with 4 additions and 2 deletions
  1. 4 2
      compiler/i8086/hlcgcpu.pas

+ 4 - 2
compiler/i8086/hlcgcpu.pas

@@ -249,14 +249,16 @@ implementation
          (size.typ=classrefdef) then
          (size.typ=classrefdef) then
         size:=voidpointertype;
         size:=voidpointertype;
 
 
-      { procvars follow the default code pointer size for the current memory model }
       if size.typ=procvardef then
       if size.typ=procvardef then
         if ((po_methodpointer in tprocvardef(size).procoptions) or
         if ((po_methodpointer in tprocvardef(size).procoptions) or
             is_nested_pd(tprocvardef(size))) and
             is_nested_pd(tprocvardef(size))) and
            not(po_addressonly in tprocvardef(size).procoptions) then
            not(po_addressonly in tprocvardef(size).procoptions) then
           internalerror(2015120101)
           internalerror(2015120101)
         else
         else
-          size:=voidcodepointertype;
+          if is_proc_far(tabstractprocdef(size)) then
+            size:=voidfarpointertype
+          else
+            size:=voidnearpointertype;
 
 
       if is_farpointer(size) or is_hugepointer(size) then
       if is_farpointer(size) or is_hugepointer(size) then
         Result:=cg.getintregister(list,OS_32)
         Result:=cg.getintregister(list,OS_32)