Browse Source

* better fix for muln register allocation

peter 26 years ago
parent
commit
57cf1e75a7
2 changed files with 11 additions and 3 deletions
  1. 6 1
      compiler/cg386add.pas
  2. 5 2
      compiler/tcadd.pas

+ 6 - 1
compiler/cg386add.pas

@@ -1015,6 +1015,8 @@ implementation
                        popedx:=false;
                        popedx:=false;
                        { here you need to free the symbol first }
                        { here you need to free the symbol first }
                        clear_location(p^.location);
                        clear_location(p^.location);
+                       release_loc(p^.right^.location);
+                       release_loc(p^.left^.location);
                        p^.location.register:=getregister32;
                        p^.location.register:=getregister32;
                        p^.location.loc:=LOC_REGISTER;
                        p^.location.loc:=LOC_REGISTER;
 {$IfNDef NoShlMul}
 {$IfNDef NoShlMul}
@@ -2122,7 +2124,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.72  1999-08-04 13:45:17  florian
+  Revision 1.73  1999-08-07 11:29:26  peter
+    * better fix for muln register allocation
+
+  Revision 1.72  1999/08/04 13:45:17  florian
     + floating point register variables !!
     + floating point register variables !!
     * pairegalloc is now generated for register variables
     * pairegalloc is now generated for register variables
 
 

+ 5 - 2
compiler/tcadd.pas

@@ -505,7 +505,7 @@ implementation
                   end;
                   end;
                  calcregisters(p,1,0,0);
                  calcregisters(p,1,0,0);
                  { for unsigned mul we need an extra register }
                  { for unsigned mul we need an extra register }
-                 p^.registers32:=p^.left^.registers32+p^.right^.registers32;
+{                 p^.registers32:=p^.left^.registers32+p^.right^.registers32; }
                  if p^.treetype=muln then
                  if p^.treetype=muln then
                   inc(p^.registers32);
                   inc(p^.registers32);
                  convdone:=true;
                  convdone:=true;
@@ -1115,7 +1115,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.41  1999-08-05 21:58:57  peter
+  Revision 1.42  1999-08-07 11:29:27  peter
+    * better fix for muln register allocation
+
+  Revision 1.41  1999/08/05 21:58:57  peter
     * fixed register count ord*ord
     * fixed register count ord*ord
 
 
   Revision 1.40  1999/08/04 13:03:13  jonas
   Revision 1.40  1999/08/04 13:03:13  jonas