Browse Source

* fixed bug #610
+ added $D- for TP in symtable.pas else it can't be compiled anymore
(too much symbols :()

florian 26 years ago
parent
commit
ed7dd22b82
3 changed files with 27 additions and 6 deletions
  1. 9 1
      compiler/cg386inl.pas
  2. 8 4
      compiler/symtable.pas
  3. 10 1
      compiler/tcinl.pas

+ 9 - 1
compiler/cg386inl.pas

@@ -1113,7 +1113,10 @@ implementation
               { second argument specified?, must be a s32bit in register }
                 if assigned(p^.left^.right) then
                  begin
+                   ispushed:=maybe_push(p^.left^.right^.left^.registers32,p^.left^.left,false);
                    secondpass(p^.left^.right^.left);
+                   if ispushed then
+                     restore(p^.left^.left,false);
                  { when constant, just multiply the addvalue }
                    if is_constintnode(p^.left^.right^.left) then
                     addvalue:=addvalue*get_ordinal_value(p^.left^.right^.left)
@@ -1406,7 +1409,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.72  1999-09-26 13:26:05  florian
+  Revision 1.73  1999-09-28 20:48:23  florian
+    * fixed bug 610
+    + added $D- for TP in symtable.pas else it can't be compiled anymore
+      (too much symbols :()
+
+  Revision 1.72  1999/09/26 13:26:05  florian
     * exception patch of Romio nevertheless the excpetion handling
       needs some corections regarding register saving
     * gettempansistring is again a procedure

+ 8 - 4
compiler/symtable.pas

@@ -20,7 +20,7 @@
  ****************************************************************************
 }
 {$ifdef TP}
-  {$N+,E+,F+}
+  {$N+,E+,F+,D-}
 {$endif}
 unit symtable;
 
@@ -924,8 +924,7 @@ implementation
       end;
 {$endif}
 
-    procedure write_refs(sym : pnamedindexobject);
-      begin
+    procedure write_refs(sym : pnamedindexobject);   begin
          psym(sym)^.write_references;
       end;
 
@@ -2410,7 +2409,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.49  1999-09-27 23:44:59  peter
+  Revision 1.50  1999-09-28 20:48:25  florian
+    * fixed bug 610
+    + added $D- for TP in symtable.pas else it can't be compiled anymore
+      (too much symbols :()
+
+  Revision 1.49  1999/09/27 23:44:59  peter
     * procinfo is now a pointer
     * support for result setting in sub procedure
 

+ 10 - 1
compiler/tcinl.pas

@@ -602,6 +602,10 @@ implementation
                                   (p^.left^.right^.left^.registers32<=1) then
                                   inc(p^.registers32);
 
+                                { do we need an additional register to restore the first parameter? }
+                                if p^.left^.right^.left^.registers32>=p^.registers32 then
+                                  inc(p^.registers32);
+
                                 if assigned(p^.left^.right^.right) then
                                   CGMessage(cg_e_illegal_expression);
                              end;
@@ -1250,7 +1254,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.52  1999-09-27 23:45:01  peter
+  Revision 1.53  1999-09-28 20:48:27  florian
+    * fixed bug 610
+    + added $D- for TP in symtable.pas else it can't be compiled anymore
+      (too much symbols :()
+
+  Revision 1.52  1999/09/27 23:45:01  peter
     * procinfo is now a pointer
     * support for result setting in sub procedure