diff --git a/compiler/i8086/symcpu.pas b/compiler/i8086/symcpu.pas index c7d9ae05bd..e613970c18 100644 --- a/compiler/i8086/symcpu.pas +++ b/compiler/i8086/symcpu.pas @@ -109,7 +109,7 @@ type { tcpuprocvardef } tcpuprocvardef = class(ti86procvardef) - constructor create(level:byte);override; + constructor create(level:byte;doregister:boolean);override; function getcopyas(newtyp:tdeftyp;copytyp:tproccopytyp;const paraprefix:string):tstoreddef;override; function address_type:tdef;override; function ofs_address_type:tdef;override; @@ -440,9 +440,9 @@ implementation tcpuprocvardef ****************************************************************************} - constructor tcpuprocvardef.create(level: byte); + constructor tcpuprocvardef.create(level: byte;doregister:boolean); begin - inherited create(level); + inherited create(level,doregister); if current_settings.x86memorymodel in x86_far_code_models then procoptions:=procoptions+[po_far]; end; diff --git a/compiler/pdecsub.pas b/compiler/pdecsub.pas index 00b090284f..b9a4f658ad 100644 --- a/compiler/pdecsub.pas +++ b/compiler/pdecsub.pas @@ -336,7 +336,7 @@ implementation if parseprocvar<>pv_none then begin { inline procvar definitions are always nested procvars } - pv:=cprocvardef.create(normal_function_level+1); + pv:=cprocvardef.create(normal_function_level+1,true); if token=_LKLAMMER then parse_parameter_dec(pv); if parseprocvar=pv_func then diff --git a/compiler/pdecvar.pas b/compiler/pdecvar.pas index 633ef1a78e..a48a37dd42 100644 --- a/compiler/pdecvar.pas +++ b/compiler/pdecvar.pas @@ -647,7 +647,7 @@ implementation procsym : begin { Create a temporary procvardef to handle parameters } - storedprocdef:=cprocvardef.create(normal_function_level); + storedprocdef:=cprocvardef.create(normal_function_level,true); include(storedprocdef.procoptions,po_methodpointer); { Return type must be boolean } storedprocdef.returndef:=pasbool1type; diff --git a/compiler/ptype.pas b/compiler/ptype.pas index 59d38a9b3c..ae65cefa94 100644 --- a/compiler/ptype.pas +++ b/compiler/ptype.pas @@ -1580,7 +1580,7 @@ implementation is_func:=(token=_FUNCTION); consume(token); - pd:=cprocvardef.create(normal_function_level); + pd:=cprocvardef.create(normal_function_level,true); { usage of specialized type inside its generic template } if assigned(genericdef) then diff --git a/compiler/symdef.pas b/compiler/symdef.pas index 0ad0cd9df0..3ef8e245c9 100644 --- a/compiler/symdef.pas +++ b/compiler/symdef.pas @@ -729,7 +729,7 @@ interface end; tprocvardef = class(tabstractprocdef) - constructor create(level:byte);virtual; + constructor create(level:byte;doregister:boolean);virtual; { returns a procvardef that represents the address of a proc(var)def } class function getreusableprocaddr(def: tabstractprocdef; copytyp: tcacheableproccopytyp): tprocvardef; virtual; { same as above, but in case the def must never be freed after the @@ -5787,7 +5787,7 @@ implementation end else begin - result:=cprocvardef.create(nestinglevel); + result:=cprocvardef.create(nestinglevel,true); end; tabstractprocdef(result).returndef:=returndef; tabstractprocdef(result).returndefderef:=returndefderef; @@ -7243,9 +7243,9 @@ implementation TPROCVARDEF ***************************************************************************} - constructor tprocvardef.create(level:byte); + constructor tprocvardef.create(level:byte;doregister:boolean); begin - inherited create(procvardef,level,true); + inherited create(procvardef,level,doregister); end; @@ -7307,7 +7307,7 @@ implementation i : tcallercallee; j : longint; begin - result:=cprocvardef.create(parast.symtablelevel); + result:=cprocvardef.create(parast.symtablelevel,true); tprocvardef(result).returndef:=returndef; tprocvardef(result).returndefderef:=returndefderef; tprocvardef(result).parast:=parast.getcopy;