Browse Source

* set inital costs of assigning a variable to a register to 120 for
non-i386, because the used register must be store to memory at the
start and loaded again at the end

Jonas Maebe 22 years ago
parent
commit
f67e370ce1
1 changed files with 14 additions and 1 deletions
  1. 14 1
      compiler/rgobj.pas

+ 14 - 1
compiler/rgobj.pas

@@ -1146,6 +1146,14 @@ unit rgobj;
       begin
         fillchar(reg_pushes_int,sizeof(reg_pushes_int),0);
         fillchar(reg_pushes_other,sizeof(reg_pushes_other),0);
+{ifndef i386}
+        { all used registers will have to be saved at the start and restored }
+        { at the end, but otoh regpara's do not have to be saved to memory   }
+        { at the start (there is a move from regpara to regvar most of the   }
+        { time though) -> set cost to 100+20                                 }
+        filldword(reg_pushes_int[firstsaveintreg],lastsaveintreg-firstsaveintreg+1,120);
+        filldword(reg_pushes_other[firstsavefpureg],ord(lastsavefpureg)-ord(firstsavefpureg)+1,120);
+{endif not i386}
         fillchar(is_reg_var_other,sizeof(is_reg_var_other),false);
         is_reg_var_int:=[];
         fillchar(regvar_loaded_other,sizeof(regvar_loaded_other),false);
@@ -2051,7 +2059,12 @@ end.
 
 {
   $Log$
-  Revision 1.46  2003-05-30 18:55:21  jonas
+  Revision 1.47  2003-05-31 20:31:11  jonas
+    * set inital costs of assigning a variable to a register to 120 for
+      non-i386, because the used register must be store to memory at the
+      start and loaded again at the end
+
+  Revision 1.46  2003/05/30 18:55:21  jonas
     * fixed several regvar related bugs for non-i386. make cycle with -Or now
       works for ppc