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

* handling of C styled varargs fixed

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

+ 17 - 1
compiler/sparc/cpupara.pas

@@ -222,6 +222,19 @@ implementation
         hp:=firstpara;
         hp:=firstpara;
         while assigned(hp) do
         while assigned(hp) do
           begin
           begin
+            { currently only support C-style array of const,
+              there should be no location assigned to the vararg array itself }
+            if (p.proccalloption in [pocall_cdecl,pocall_cppdecl]) and
+               is_array_of_const(hp.paratype.def) then
+              begin
+                paraloc:=hp.paraloc[side].add_location;
+                { hack: the paraloc must be valid, but is not actually used }
+                paraloc^.loc:=LOC_REGISTER;
+                paraloc^.register:=NR_G0;
+                paraloc^.size:=OS_ADDR;
+                break;
+              end;
+
             if push_addr_param(hp.paratyp,hp.paratype.def,p.proccalloption) then
             if push_addr_param(hp.paratyp,hp.paratype.def,p.proccalloption) then
               paracgsize:=OS_ADDR
               paracgsize:=OS_ADDR
             else
             else
@@ -309,7 +322,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.41  2004-09-21 17:25:13  peter
+  Revision 1.42  2004-09-25 20:28:39  florian
+    * handling of C styled varargs fixed
+
+  Revision 1.41  2004/09/21 17:25:13  peter
     * paraloc branch merged
     * paraloc branch merged
 
 
   Revision 1.40.4.4  2004/09/19 18:08:15  peter
   Revision 1.40.4.4  2004/09/19 18:08:15  peter