mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-02-19 19:36:26 +01:00
* get rid of aktcallnode
This commit is contained in:
parent
342abd9cc0
commit
9ae7eba247
1404
compiler/ncal.pas
1404
compiler/ncal.pas
File diff suppressed because it is too large
Load Diff
@ -334,13 +334,13 @@ implementation
|
||||
begin
|
||||
hlcg.maybe_change_load_node_reg(current_asmdata.CurrAsmList,left,true);
|
||||
|
||||
paramanager.createtempparaloc(current_asmdata.CurrAsmList,aktcallnode.procdefinition.proccalloption,parasym,not followed_by_stack_tainting_call_cached,tempcgpara);
|
||||
paramanager.createtempparaloc(current_asmdata.CurrAsmList,callnode.procdefinition.proccalloption,parasym,not followed_by_stack_tainting_call_cached,tempcgpara);
|
||||
|
||||
{ handle varargs first, because parasym is not valid }
|
||||
if (cpf_varargs_para in callparaflags) then
|
||||
begin
|
||||
if paramanager.push_addr_param(vs_value,left.resultdef,
|
||||
aktcallnode.procdefinition.proccalloption) then
|
||||
callnode.procdefinition.proccalloption) then
|
||||
push_addr_para
|
||||
else
|
||||
push_value_para;
|
||||
@ -362,13 +362,13 @@ implementation
|
||||
param if the method is part of a type helper which
|
||||
extends a pointer type }
|
||||
(vo_is_self in parasym.varoptions) and
|
||||
(aktcallnode.procdefinition.owner.symtabletype=objectsymtable) and
|
||||
(is_objectpascal_helper(tdef(aktcallnode.procdefinition.owner.defowner))) and
|
||||
(tobjectdef(aktcallnode.procdefinition.owner.defowner).extendeddef.typ=pointerdef)
|
||||
(callnode.procdefinition.owner.symtabletype=objectsymtable) and
|
||||
(is_objectpascal_helper(tdef(callnode.procdefinition.owner.defowner))) and
|
||||
(tobjectdef(callnode.procdefinition.owner.defowner).extendeddef.typ=pointerdef)
|
||||
)
|
||||
) and
|
||||
paramanager.push_addr_param(parasym.varspez,parasym.vardef,
|
||||
aktcallnode.procdefinition.proccalloption));
|
||||
callnode.procdefinition.proccalloption));
|
||||
|
||||
if pushaddr then
|
||||
begin
|
||||
@ -385,7 +385,7 @@ implementation
|
||||
push_formal_para
|
||||
{ Normal parameter }
|
||||
else if paramanager.push_copyout_param(parasym.varspez,parasym.vardef,
|
||||
aktcallnode.procdefinition.proccalloption) then
|
||||
callnode.procdefinition.proccalloption) then
|
||||
push_copyout_para
|
||||
else
|
||||
begin
|
||||
@ -396,7 +396,7 @@ implementation
|
||||
(left.resultdef.typ in [pointerdef,classrefdef])
|
||||
) and
|
||||
paramanager.push_addr_param(parasym.varspez,parasym.vardef,
|
||||
aktcallnode.procdefinition.proccalloption)) and
|
||||
callnode.procdefinition.proccalloption)) and
|
||||
{ dyn. arrays passed to an array of const must be passed by value, see tests/webtbs/tw4219.pp }
|
||||
not(
|
||||
is_array_of_const(parasym.vardef) and
|
||||
@ -432,12 +432,12 @@ implementation
|
||||
{ for type helper/record constructor check that it is self parameter }
|
||||
(
|
||||
(vo_is_self in parasym.varoptions) and
|
||||
(aktcallnode.procdefinition.proctypeoption=potype_constructor) and
|
||||
(callnode.procdefinition.proctypeoption=potype_constructor) and
|
||||
(parasym.vardef.typ<>objectdef)
|
||||
) or
|
||||
(vo_is_funcret in parasym.varoptions)
|
||||
) then
|
||||
location_copy(aktcallnode.location,left.location);
|
||||
location_copy(callnode.location,left.location);
|
||||
end;
|
||||
|
||||
|
||||
@ -989,7 +989,6 @@ implementation
|
||||
href : treference;
|
||||
pop_size : longint;
|
||||
pvreg : tregister;
|
||||
oldaktcallnode : tcallnode;
|
||||
retlocitem: pcgparalocation;
|
||||
callpvdef: tabstractprocdef;
|
||||
pd : tprocdef;
|
||||
@ -1050,14 +1049,8 @@ implementation
|
||||
end;
|
||||
end;
|
||||
|
||||
{ Process parameters, register parameters will be loaded
|
||||
in imaginary registers. The actual load to the correct
|
||||
register is done just before the call }
|
||||
oldaktcallnode:=aktcallnode;
|
||||
aktcallnode:=self;
|
||||
if assigned(left) then
|
||||
tcallparanode(left).secondcallparan;
|
||||
aktcallnode:=oldaktcallnode;
|
||||
|
||||
{ procedure variable or normal function call ? }
|
||||
if (right=nil) then
|
||||
|
||||
Loading…
Reference in New Issue
Block a user