Forráskód Böngészése

* fixed bug with intregvars
* locapara.loc can also be LOC_CFPUREGISTER -> also fixed
rcgppc.a_param_ref, which previously got bogus size values

Jonas Maebe 22 éve
szülő
commit
fefdcc6331
2 módosított fájl, 16 hozzáadás és 8 törlés
  1. 8 3
      compiler/ncgutil.pas
  2. 8 5
      compiler/powerpc/cgcpu.pas

+ 8 - 3
compiler/ncgutil.pas

@@ -817,7 +817,7 @@ implementation
              LOC_REFERENCE,
              LOC_CREFERENCE :
                begin
-                 if locpara.loc=LOC_FPUREGISTER then
+                 if locpara.loc in [LOC_FPUREGISTER,LOC_CFPUREGISTER] then
                    cg.a_paramfpu_ref(list,def_cgsize(p.resulttype.def),p.location.reference,locpara)
                  else
                    begin
@@ -1342,7 +1342,7 @@ implementation
                  hp:=tparaitem(current_procdef.para.first);
                  while assigned(hp) do
                    begin
-                     if Tvarsym(hp.parasym).reg.enum>lastreg then
+                     if Tvarsym(hp.parasym).reg.enum>R_INTREGISTER then
                        internalerror(200301081);
                      if (tvarsym(hp.parasym).reg.enum<>R_NO) then
                        case hp.paraloc.loc of
@@ -1904,7 +1904,12 @@ implementation
 end.
 {
   $Log$
-  Revision 1.109  2003-05-27 21:19:08  jonas
+  Revision 1.110  2003-05-30 18:52:10  jonas
+    * fixed bug with intregvars
+    * locapara.loc can also be LOC_CFPUREGISTER -> also fixed
+      rcgppc.a_param_ref, which previously got bogus size values
+
+  Revision 1.109  2003/05/27 21:19:08  jonas
     * fixed ppc cycle
 
   Revision 1.108  2003/05/27 14:28:14  jonas

+ 8 - 5
compiler/powerpc/cgcpu.pas

@@ -201,10 +201,8 @@ const
             end;
           LOC_FPUREGISTER,LOC_CFPUREGISTER:
             case size of
-               OS_32:
-                 a_loadfpu_ref_reg(list,OS_F32,r,locpara.register);
-               OS_64:
-                 a_loadfpu_ref_reg(list,OS_F64,r,locpara.register);
+               OS_F32, OS_F64:
+                 a_loadfpu_ref_reg(list,size,r,locpara.register);
                else
                  internalerror(2002072801);
             end;
@@ -2542,7 +2540,12 @@ begin
 end.
 {
   $Log$
-  Revision 1.100  2003-05-29 21:17:27  jonas
+  Revision 1.101  2003-05-30 18:52:10  jonas
+    * fixed bug with intregvars
+    * locapara.loc can also be LOC_CFPUREGISTER -> also fixed
+      rcgppc.a_param_ref, which previously got bogus size values
+
+  Revision 1.100  2003/05/29 21:17:27  jonas
     * compile with -dppc603 to not use unaligned float loads in move() and
       g_concatcopy, because the 603 and 604 take an exception for those
       (and netbsd doesn't even handle those in the kernel). There are