Parcourir la source

* factored out code to set the "regable" information from setvardef, and
removed outdated comment regarding unsupported static fpu regvars

git-svn-id: trunk@33178 -

Jonas Maebe il y a 9 ans
Parent
commit
2483ad5939
1 fichiers modifiés avec 15 ajouts et 14 suppressions
  1. 15 14
      compiler/symsym.pas

+ 15 - 14
compiler/symsym.pas

@@ -191,6 +191,7 @@ interface
           _vardef     : tdef;
           vardefderef : tderef;
 
+          procedure setregable;
           procedure setvardef(def:tdef);
         public
           property vardef: tdef read _vardef write setvardef;
@@ -1693,9 +1694,15 @@ implementation
     procedure tabstractvarsym.setvardef(def:tdef);
       begin
         _vardef := def;
+         setregable;
+      end;
+
+
+    procedure tabstractvarsym.setregable;
+      begin
          { can we load the value into a register ? }
         if not assigned(owner) or
-           (owner.symtabletype in [localsymtable,parasymtable]) or
+           (owner.symtabletype in [localsymtable, parasymtable]) or
            (
             (owner.symtabletype=staticsymtable) and
             not(cs_create_pic in current_settings.moduleswitches)
@@ -1718,19 +1725,13 @@ implementation
                 (typ=paravarsym) and
                 (varspez=vs_const)) then
               varregable:=vr_intreg
-            else
-{ $warning TODO: no fpu regvar in staticsymtable yet, need initialization with 0 }
-              if {(
-                  not assigned(owner) or
-                  (owner.symtabletype<>staticsymtable)
-                 ) and }
-                 tstoreddef(vardef).is_fpuregable then
-                 begin
-                   if use_vectorfpu(vardef) then
-                     varregable:=vr_mmreg
-                   else
-                     varregable:=vr_fpureg;
-                 end;
+            else if tstoreddef(vardef).is_fpuregable then
+              begin
+                if use_vectorfpu(vardef) then
+                  varregable:=vr_mmreg
+                else
+                  varregable:=vr_fpureg;
+              end;
           end;
       end;