Browse Source

* 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 years ago
parent
commit
b957d59391
1 changed files with 8 additions and 0 deletions
  1. 8 0
      compiler/symsym.pas

+ 8 - 0
compiler/symsym.pas

@@ -943,8 +943,16 @@ implementation
 
 
 
 
     procedure tabstractvarsym.deref;
     procedure tabstractvarsym.deref;
+      var
+        oldvarregable: tvarregable;
       begin
       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);
         vardef:=tdef(vardefderef.resolve);
+        varregable:=oldvarregable;
       end;
       end;