瀏覽代碼

* fixed init/final for value parameters

peter 24 年之前
父節點
當前提交
869ca12ddb
共有 1 個文件被更改,包括 13 次插入4 次删除
  1. 13 4
      compiler/i386/cga.pas

+ 13 - 4
compiler/i386/cga.pas

@@ -1727,7 +1727,10 @@ implementation
 
                reset_reference(hrv);
                hrv.base:=procinfo^.framepointer;
-               hrv.offset:=tvarsym(p).address+procinfo^.para_offset;
+               if assigned(tvarsym(p).localvarsym) then
+                hrv.offset:=-tvarsym(p).localvarsym.address+tvarsym(p).localvarsym.owner.address_fixup
+               else
+                hrv.offset:=tvarsym(p).address+procinfo^.para_offset;
 
                if is_ansistring(tvarsym(p).vartype.def) or
                   is_widestring(tvarsym(p).vartype.def) then
@@ -1779,7 +1782,10 @@ implementation
 
                reset_reference(hrv);
                hrv.base:=procinfo^.framepointer;
-               hrv.offset:=tvarsym(p).address+procinfo^.para_offset;
+               if assigned(tvarsym(p).localvarsym) then
+                hrv.offset:=-tvarsym(p).localvarsym.address+tvarsym(p).localvarsym.owner.address_fixup
+               else
+                hrv.offset:=tvarsym(p).address+procinfo^.para_offset;
 
                if is_ansistring(tvarsym(p).vartype.def) or
                   is_widestring(tvarsym(p).vartype.def) then
@@ -2976,8 +2982,11 @@ implementation
 end.
 {
   $Log$
-  Revision 1.13  2001-12-30 17:24:45  jonas
-    * range checking is now processor independent (part in cgobj, part in
    cg64f32) and should work correctly again (it needed some changes after
    the changes of the low and high of tordef's to int64)
  * maketojumpbool() is now processor independent (in ncgutil)
  * getregister32 is now called getregisterint
+  Revision 1.14  2002-01-19 14:21:17  peter
+    * fixed init/final for value parameters
+
+  Revision 1.13  2001/12/30 17:24:45  jonas
+    * range checking is now processor independent (part in cgobj, part in    cg64f32) and should work correctly again (it needed some changes after    the changes of the low and high of tordef's to int64)  * maketojumpbool() is now processor independent (in ncgutil)  * getregister32 is now called getregisterint
 
   Revision 1.12  2001/12/29 15:28:58  jonas
     * powerpc/cgcpu.pas compiles :)