2
0
Эх сурвалжийг харах

* fixed funcret_paraloc writing in units

florian 21 жил өмнө
parent
commit
aba734edc9

+ 4 - 2
compiler/powerpc/cpupara.pas

@@ -202,7 +202,6 @@ unit cpupara;
       end;
       end;
 
 
 
 
-
     procedure tppcparamanager.create_funcret_paraloc_info(p : tabstractprocdef; side: tcallercallee);
     procedure tppcparamanager.create_funcret_paraloc_info(p : tabstractprocdef; side: tcallercallee);
       var
       var
         paraloc : tparalocation;
         paraloc : tparalocation;
@@ -556,7 +555,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.66  2004-07-17 13:51:57  florian
+  Revision 1.67  2004-07-19 19:15:50  florian
+    * fixed funcret_paraloc writing in units
+
+  Revision 1.66  2004/07/17 13:51:57  florian
     * function result location for syscalls on MOS hopefully correctly set now
     * function result location for syscalls on MOS hopefully correctly set now
 
 
   Revision 1.65  2004/07/09 21:45:24  jonas
   Revision 1.65  2004/07/09 21:45:24  jonas

+ 14 - 4
compiler/symdef.pas

@@ -454,7 +454,7 @@ interface
 {$ifdef i386}
 {$ifdef i386}
           fpu_used        : byte;    { how many stack fpu must be empty }
           fpu_used        : byte;    { how many stack fpu must be empty }
 {$endif i386}
 {$endif i386}
-          funcret_paraloc : array[tcallercallee] of tparalocation;
+          funcret_paraloc : packed array[tcallercallee] of tparalocation;
           has_paraloc_info : boolean; { paraloc info is available }
           has_paraloc_info : boolean; { paraloc info is available }
           constructor create(level:byte);
           constructor create(level:byte);
           constructor ppuload(ppufile:tcompilerppufile);
           constructor ppuload(ppufile:tcompilerppufile);
@@ -3446,6 +3446,10 @@ implementation
          proctypeoption:=tproctypeoption(ppufile.getbyte);
          proctypeoption:=tproctypeoption(ppufile.getbyte);
          proccalloption:=tproccalloption(ppufile.getbyte);
          proccalloption:=tproccalloption(ppufile.getbyte);
          ppufile.getsmallset(procoptions);
          ppufile.getsmallset(procoptions);
+
+         if po_explicitparaloc in procoptions then
+           ppufile.getdata(funcret_paraloc,sizeof(funcret_paraloc));
+
          { get the number of parameters }
          { get the number of parameters }
          count:=ppufile.getbyte;
          count:=ppufile.getbyte;
          savesize:=sizeof(aint);
          savesize:=sizeof(aint);
@@ -3462,8 +3466,7 @@ implementation
             hp.is_hidden:=boolean(ppufile.getbyte);
             hp.is_hidden:=boolean(ppufile.getbyte);
             if po_explicitparaloc in procoptions then
             if po_explicitparaloc in procoptions then
               begin
               begin
-                if po_explicitparaloc in procoptions then
-                  ppufile.getdata(hp.paraloc,sizeof(hp.paraloc));
+                ppufile.getdata(hp.paraloc,sizeof(hp.paraloc));
                 has_paraloc_info:=true;
                 has_paraloc_info:=true;
               end;
               end;
             { Parameters are stored left to right in both ppu and memory }
             { Parameters are stored left to right in both ppu and memory }
@@ -3495,6 +3498,10 @@ implementation
          ppufile.putbyte(ord(proccalloption));
          ppufile.putbyte(ord(proccalloption));
          ppufile.putsmallset(procoptions);
          ppufile.putsmallset(procoptions);
          ppufile.do_interface_crc:=oldintfcrc;
          ppufile.do_interface_crc:=oldintfcrc;
+
+         if po_explicitparaloc in procoptions then
+           ppufile.putdata(funcret_paraloc,sizeof(funcret_paraloc));
+
          { we need to store the count including vs_hidden }
          { we need to store the count including vs_hidden }
          ppufile.putbyte(para.count);
          ppufile.putbyte(para.count);
          hp:=TParaItem(Para.first);
          hp:=TParaItem(Para.first);
@@ -6130,7 +6137,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.247  2004-07-14 21:37:41  olle
+  Revision 1.248  2004-07-19 19:15:50  florian
+    * fixed funcret_paraloc writing in units
+
+  Revision 1.247  2004/07/14 21:37:41  olle
     - removed unused types
     - removed unused types
 
 
   Revision 1.246  2004/07/12 09:14:04  jonas
   Revision 1.246  2004/07/12 09:14:04  jonas