Browse Source

* 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 years ago
parent
commit
fefdcc6331
2 changed files with 16 additions and 8 deletions
  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_REFERENCE,
              LOC_CREFERENCE :
              LOC_CREFERENCE :
                begin
                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)
                    cg.a_paramfpu_ref(list,def_cgsize(p.resulttype.def),p.location.reference,locpara)
                  else
                  else
                    begin
                    begin
@@ -1342,7 +1342,7 @@ implementation
                  hp:=tparaitem(current_procdef.para.first);
                  hp:=tparaitem(current_procdef.para.first);
                  while assigned(hp) do
                  while assigned(hp) do
                    begin
                    begin
-                     if Tvarsym(hp.parasym).reg.enum>lastreg then
+                     if Tvarsym(hp.parasym).reg.enum>R_INTREGISTER then
                        internalerror(200301081);
                        internalerror(200301081);
                      if (tvarsym(hp.parasym).reg.enum<>R_NO) then
                      if (tvarsym(hp.parasym).reg.enum<>R_NO) then
                        case hp.paraloc.loc of
                        case hp.paraloc.loc of
@@ -1904,7 +1904,12 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $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
     * fixed ppc cycle
 
 
   Revision 1.108  2003/05/27 14:28:14  jonas
   Revision 1.108  2003/05/27 14:28:14  jonas

+ 8 - 5
compiler/powerpc/cgcpu.pas

@@ -201,10 +201,8 @@ const
             end;
             end;
           LOC_FPUREGISTER,LOC_CFPUREGISTER:
           LOC_FPUREGISTER,LOC_CFPUREGISTER:
             case size of
             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
                else
                  internalerror(2002072801);
                  internalerror(2002072801);
             end;
             end;
@@ -2542,7 +2540,12 @@ begin
 end.
 end.
 {
 {
   $Log$
   $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
     * compile with -dppc603 to not use unaligned float loads in move() and
       g_concatcopy, because the 603 and 604 take an exception for those
       g_concatcopy, because the 603 and 604 take an exception for those
       (and netbsd doesn't even handle those in the kernel). There are
       (and netbsd doesn't even handle those in the kernel). There are