diff --git a/compiler/aarch64/cpupara.pas b/compiler/aarch64/cpupara.pas index 463f852dec..880a791aea 100644 --- a/compiler/aarch64/cpupara.pas +++ b/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