Browse Source

* fpu_used=0 when simplify_ppu is used
* small crc updating fixes for tprocdef

peter 24 years ago
parent
commit
a9044dd538
1 changed files with 21 additions and 12 deletions
  1. 21 12
      compiler/symdef.pas

+ 21 - 12
compiler/symdef.pas

@@ -3041,12 +3041,12 @@ implementation
          para:=TParaLinkedList.Create;
          para:=TParaLinkedList.Create;
          minparacount:=0;
          minparacount:=0;
          maxparacount:=0;
          maxparacount:=0;
-         fpu_used:=0;
          proctypeoption:=potype_none;
          proctypeoption:=potype_none;
          proccalloptions:=[];
          proccalloptions:=[];
          procoptions:=[];
          procoptions:=[];
          rettype:=voidtype;
          rettype:=voidtype;
          symtablelevel:=0;
          symtablelevel:=0;
+         fpu_used:=0;
          savesize:=target_info.size_of_pointer;
          savesize:=target_info.size_of_pointer;
       end;
       end;
 
 
@@ -3143,6 +3143,8 @@ implementation
          ppufile.puttype(rettype);
          ppufile.puttype(rettype);
          oldintfcrc:=ppufile.do_interface_crc;
          oldintfcrc:=ppufile.do_interface_crc;
          ppufile.do_interface_crc:=false;
          ppufile.do_interface_crc:=false;
+         if simplify_ppu then
+          fpu_used:=0;
          ppufile.putbyte(fpu_used);
          ppufile.putbyte(fpu_used);
          ppufile.putlongint(ord(proctypeoption));
          ppufile.putlongint(ord(proctypeoption));
          ppufile.putsmallset(proccalloptions);
          ppufile.putsmallset(proccalloptions);
@@ -3453,7 +3455,7 @@ implementation
          inherited write(ppufile);
          inherited write(ppufile);
          oldintfcrc:=ppufile.do_interface_crc;
          oldintfcrc:=ppufile.do_interface_crc;
          ppufile.do_interface_crc:=false;
          ppufile.do_interface_crc:=false;
-   { set all registers to used for simplified compilation PM }
+         { set all registers to used for simplified compilation PM }
          if simplify_ppu then
          if simplify_ppu then
            begin
            begin
 {$ifdef newcg}
 {$ifdef newcg}
@@ -3493,36 +3495,39 @@ implementation
          ppufile.putderef(_class);
          ppufile.putderef(_class);
          ppufile.putposinfo(fileinfo);
          ppufile.putposinfo(fileinfo);
 
 
-         { inline stuff }
-         oldintfcrc:=ppufile.do_interface_crc;
-         ppufile.do_interface_crc:=false;
+         { inline stuff references to localsymtable, no influence
+           on the crc }
+         oldintfcrc:=ppufile.do_crc;
+         ppufile.do_crc:=false;
          if (pocall_inline in proccalloptions) then
          if (pocall_inline in proccalloptions) then
            ppufile.putderef(funcretsym);
            ppufile.putderef(funcretsym);
-         ppufile.do_interface_crc:=oldintfcrc;
+         ppufile.do_crc:=oldintfcrc;
 
 
          { write this entry }
          { write this entry }
          ppufile.writeentry(ibprocdef);
          ppufile.writeentry(ibprocdef);
 
 
-         { Save the para and local symtable, for easier reading
-           save both always, they don't influence the interface crc }
-         oldintfcrc:=ppufile.do_interface_crc;
-         ppufile.do_interface_crc:=false;
+         { Save the para symtable, this is taken from the interface }
          if not assigned(parast) then
          if not assigned(parast) then
           begin
           begin
             parast:=tparasymtable.create;
             parast:=tparasymtable.create;
             parast.defowner:=self;
             parast.defowner:=self;
           end;
           end;
          tparasymtable(parast).write(ppufile);
          tparasymtable(parast).write(ppufile);
+
+         { save localsymtable for inline procedures, this has no influence
+           on the crc }
          if (pocall_inline in proccalloptions) then
          if (pocall_inline in proccalloptions) then
           begin
           begin
+            oldintfcrc:=ppufile.do_crc;
+            ppufile.do_crc:=false;
             if not assigned(localst) then
             if not assigned(localst) then
              begin
              begin
                localst:=tlocalsymtable.create;
                localst:=tlocalsymtable.create;
                localst.defowner:=self;
                localst.defowner:=self;
              end;
              end;
             tlocalsymtable(localst).write(ppufile);
             tlocalsymtable(localst).write(ppufile);
+            ppufile.do_crc:=oldintfcrc;
           end;
           end;
-         ppufile.do_interface_crc:=oldintfcrc;
       end;
       end;
 
 
 
 
@@ -5540,7 +5545,11 @@ Const local_symtable_index : longint = $8001;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.40  2001-08-06 21:40:48  peter
+  Revision 1.41  2001-08-12 20:04:33  peter
+    * fpu_used=0 when simplify_ppu is used
+    * small crc updating fixes for tprocdef
+
+  Revision 1.40  2001/08/06 21:40:48  peter
     * funcret moved from tprocinfo to tprocdef
     * funcret moved from tprocinfo to tprocdef
 
 
   Revision 1.39  2001/08/01 21:47:48  peter
   Revision 1.39  2001/08/01 21:47:48  peter