Browse Source

* added copyvaluepara call again

peter 25 years ago
parent
commit
ac3c08daca
3 changed files with 19 additions and 16 deletions
  1. 9 10
      compiler/i386/cgai386.pas
  2. 5 3
      compiler/i386/n386cal.pas
  3. 5 3
      compiler/i386/n386ld.pas

+ 9 - 10
compiler/i386/cgai386.pas

@@ -2309,8 +2309,7 @@ implementation
 
       { initialize return value }
       if (procinfo^.returntype.def<>pdef(voiddef)) and
-        (procinfo^.returntype.def^.needs_inittable) and
-        not(is_class(procinfo^.returntype.def)) then
+         (procinfo^.returntype.def^.needs_inittable) then
         begin
            procinfo^.flags:=procinfo^.flags or pi_needs_implicit_finally;
            reset_reference(r);
@@ -2333,18 +2332,15 @@ implementation
          else
            aktprocsym^.definition^.localst^.foreach({$ifndef TP}@{$endif}initialize_data);
       end;
-      {
+
+      { initialisizes temp. ansi/wide string data }
+      inittempvariables;
+
       { generate copies of call by value parameters }
       if not(po_assembler in aktprocsym^.definition^.procoptions) and
          (([pocall_cdecl,pocall_cppdecl]*aktprocsym^.definition^.proccalloptions)=[]) then
         aktprocsym^.definition^.parast^.foreach({$ifndef TP}@{$endif}copyvalueparas);
 
-      { add a reference to all call by value/const parameters }
-      aktprocsym^.definition^.parast^.foreach({$ifndef TP}@{$endif}incr_data);
-      }
-      { initialisizes temp. ansi/wide string data }
-      inittempvariables;
-
       { do we need an exception frame because of ansi/widestrings/interfaces ? }
       if not inlined and
          ((procinfo^.flags and pi_needs_implicit_finally)<>0) and
@@ -2932,7 +2928,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.7  2000-11-04 14:25:23  florian
+  Revision 1.8  2000-11-06 23:15:01  peter
+    * added copyvaluepara call again
+
+  Revision 1.7  2000/11/04 14:25:23  florian
     + merged Attila's changes for interfaces, not tested yet
 
   Revision 1.6  2000/10/31 22:02:55  peter

+ 5 - 3
compiler/i386/n386cal.pas

@@ -1318,8 +1318,7 @@ implementation
               if location.loc in [LOC_MEM,LOC_REFERENCE] then
                 begin
                    { data which must be finalized ? }
-                   if (resulttype^.needs_inittable) and
-                     not(is_class(resulttype)) then
+                   if (resulttype^.needs_inittable) then
                       finalize(resulttype,location.reference,false);
                    { release unused temp }
                    ungetiftemp(location.reference)
@@ -1557,7 +1556,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.4  2000-11-04 14:25:23  florian
+  Revision 1.5  2000-11-06 23:15:01  peter
+    * added copyvaluepara call again
+
+  Revision 1.4  2000/11/04 14:25:23  florian
     + merged Attila's changes for interfaces, not tested yet
 
   Revision 1.3  2000/11/04 13:12:14  jonas

+ 5 - 3
compiler/i386/n386ld.pas

@@ -625,8 +625,7 @@ implementation
                            end
                          else
                            begin
-                              if (right.resulttype^.needs_inittable) and
-                                  not(is_class(right.resulttype)) then
+                              if (right.resulttype^.needs_inittable) then
                                 begin
                                    { this would be a problem }
                                    if not(left.resulttype^.needs_inittable) then
@@ -1065,7 +1064,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.3  2000-11-04 14:25:23  florian
+  Revision 1.4  2000-11-06 23:15:02  peter
+    * added copyvaluepara call again
+
+  Revision 1.3  2000/11/04 14:25:23  florian
     + merged Attila's changes for interfaces, not tested yet
 
   Revision 1.2  2000/10/31 22:02:56  peter