浏览代码

* don't override varregable for tabstractvarsyms loaded from a ppu when
setting their vardef (since the varregable was stored/loaded in the ppu
and should be kept the same -- fixes webtbs/tw7817a.pp and tw7817b.pp
when both compiled separately and with regvars)

git-svn-id: trunk@5540 -

Jonas Maebe 18 年之前
父节点
当前提交
b957d59391
共有 1 个文件被更改,包括 8 次插入0 次删除
  1. 8 0
      compiler/symsym.pas

+ 8 - 0
compiler/symsym.pas

@@ -943,8 +943,16 @@ implementation
 
 
     procedure tabstractvarsym.deref;
+      var
+        oldvarregable: tvarregable;
       begin
+        { setting the vardef also updates varregable. We just loaded this }
+        { value from a ppu, so it must not be changed (e.g. tw7817a.pp/   }
+        { tw7817b.pp: the address is taken of a local variable in an      }
+        { inlined procedure -> must remain non-regable when inlining)     }
+        oldvarregable:=varregable;
         vardef:=tdef(vardefderef.resolve);
+        varregable:=oldvarregable;
       end;