Browse Source

* simplified code generation for paramaddr for a register parameter

git-svn-id: trunk@6276 -
florian 18 years ago
parent
commit
d50bc40cbe
1 changed files with 8 additions and 3 deletions
  1. 8 3
      compiler/cgobj.pas

+ 8 - 3
compiler/cgobj.pas

@@ -900,9 +900,14 @@ implementation
          hr : tregister;
       begin
          cgpara.check_simple_location;
-         hr:=getaddressregister(list);
-         a_loadaddr_ref_reg(list,r,hr);
-         a_param_reg(list,OS_ADDR,hr,cgpara);
+         if cgpara.location^.loc in [LOC_CREGISTER,LOC_REGISTER] then
+           a_loadaddr_ref_reg(list,r,cgpara.location^.register)
+         else
+           begin
+             hr:=getaddressregister(list);
+             a_loadaddr_ref_reg(list,r,hr);
+             a_param_reg(list,OS_ADDR,hr,cgpara);
+           end;
       end;