diff --git a/compiler/cg386inl.pas b/compiler/cg386inl.pas index 9fef09417a..f988b81255 100644 --- a/compiler/cg386inl.pas +++ b/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 diff --git a/compiler/symtable.pas b/compiler/symtable.pas index bff452a0f2..0cac039655 100644 --- a/compiler/symtable.pas +++ b/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 diff --git a/compiler/tcinl.pas b/compiler/tcinl.pas index e302157316..de5610e4ff 100644 --- a/compiler/tcinl.pas +++ b/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