Browse Source

* reuse simple memory paralocs, since we always setup a stack frame and
we can address them via the frame pointer

git-svn-id: trunk@29941 -

Jonas Maebe 10 years ago
parent
commit
e2d21a5716
1 changed files with 10 additions and 0 deletions
  1. 10 0
      compiler/aarch64/cpupara.pas

+ 10 - 0
compiler/aarch64/cpupara.pas

@@ -42,6 +42,7 @@ unit cpupara;
           function create_paraloc_info(p: tabstractprocdef; side: tcallercallee):longint;override;
           function create_varargs_paraloc_info(p: tabstractprocdef; varargspara: tvarargsparalist):longint;override;
           function get_funcretloc(p: tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
+          function param_use_paraloc(const cgpara: tcgpara): boolean; override;
          private
           curintreg,
           curmmreg: tsuperregister;
@@ -331,6 +332,15 @@ unit cpupara;
            internalerror(2014113001);
       end;
 
+    function taarch64paramanager.param_use_paraloc(const cgpara: tcgpara): boolean;
+      begin
+        { we always set up a stack frame -> we can always access the parameters
+          this way }
+        result:=
+          (cgpara.location^.loc=LOC_REFERENCE) and
+          not assigned(cgpara.location^.next);
+      end;
+
 
     procedure taarch64paramanager.init_para_alloc_values;
       begin