Explorar o código

Set register_used boolean only for calleeside

git-svn-id: trunk@22335 -
pierre %!s(int64=13) %!d(string=hai) anos
pai
achega
bf46526cc7
Modificáronse 1 ficheiros con 7 adicións e 4 borrados
  1. 7 4
      compiler/mips/cpupara.pas

+ 7 - 4
compiler/mips/cpupara.pas

@@ -32,6 +32,8 @@ interface
 
     const
       MIPS_MAX_OFFSET = 20;
+
+      { The value below is OK for O32 and N32 calling conventions }
       MIPS_MAX_REGISTERS_USED_IN_CALL = 6;
 
       { All ABI seem to start with $4 i.e. $a0 }
@@ -53,10 +55,10 @@ interface
 
       { Set O32 ABI as default }
     const
-      mips_nb_used_registers = MIPS_NB_REGISTERS_USED_IN_CALL_O32;
+      mips_nb_used_registers  : longint = MIPS_NB_REGISTERS_USED_IN_CALL_O32;
 
       { Might need to be changed if we support N64 ABI later }
-      mips_sizeof_register_param = 4;
+      mips_sizeof_register_param : longint = 4;
 
     type
       tparasupregs = array[0..MIPS_MAX_REGISTERS_USED_IN_CALL-1] of tsuperregister;
@@ -66,6 +68,7 @@ interface
       tparasupregsoffset = array[0..MIPS_MAX_REGISTERS_USED_IN_CALL-1] of longint;
 
     const
+
       parasupregs : tparasupregs = (RS_R4, RS_R5, RS_R6, RS_R7, RS_R8, RS_R9);
 
     type
@@ -369,7 +372,7 @@ implementation
                 if vo_is_funcret in hp.varoptions then
                   begin
                     { This should be the first parameter }
-                    if assigned(current_procinfo) then
+                    if (side=calleeside) and assigned(current_procinfo) then
                       begin
                         TMIPSProcInfo(current_procinfo).register_used[0]:=true;
                         TMIPSProcInfo(current_procinfo).register_name[0]:='result';
@@ -429,7 +432,7 @@ implementation
                       end
                     else { not can use float }
                      begin
-                       if assigned(current_procinfo) then
+                       if (side=calleeside) and assigned(current_procinfo) then
                          begin
                            TMIPSProcInfo(current_procinfo).register_used[intparareg]:=true;
                            TMIPSProcInfo(current_procinfo).register_name[intparareg]:=hp.prettyname;