Browse Source

* allocate dedicated register for a_call_ref() to avoid problems with R0-usage on ppc64.

git-svn-id: trunk@3439 -
tom_at_work 19 years ago
parent
commit
540af422ca
1 changed files with 5 additions and 4 deletions
  1. 5 4
      compiler/ppcgen/cgppc.pas

+ 5 - 4
compiler/ppcgen/cgppc.pas

@@ -44,11 +44,12 @@ unit cgppc;
        rgobj,tgobj,cpupi,procinfo,paramgr;
 
   procedure tcgppcgen.a_call_ref(list : TAsmList;ref: treference);
+    var
+      tempreg : TRegister;
     begin
-      a_reg_alloc(list,NR_R0);
-      a_load_ref_reg(list,OS_ADDR,OS_ADDR,ref,NR_R0);
-      a_call_reg(list,NR_R0);
-      a_reg_dealloc(list,NR_R0);
+      tempreg := getintregister(list, OS_ADDR);
+      a_load_ref_reg(list,OS_ADDR,OS_ADDR,ref,tempreg);
+      a_call_reg(list,tempreg);
     end;
 
 end.