|
@@ -91,7 +91,7 @@ Unit Rax86int;
|
|
|
{ register allocator }
|
|
|
rabase,rautils,itx86int,
|
|
|
{ codegen }
|
|
|
- cgbase,cgobj,procinfo
|
|
|
+ cgbase,cgobj,procinfo,paramgr
|
|
|
;
|
|
|
|
|
|
type
|
|
@@ -1722,7 +1722,8 @@ Unit Rax86int;
|
|
|
and when the parameter is in a register (delphi compatible) }
|
|
|
if (not oper.hastype) and
|
|
|
(oper.opr.localsym.owner.symtabletype=parasymtable) and
|
|
|
- (current_procinfo.procdef.proccalloption<>pocall_register) then
|
|
|
+ ((oper.opr.localsym.localloc.loc<>LOC_REGISTER) or
|
|
|
+ not paramanager.push_addr_param(oper.opr.localsym.varspez,oper.opr.localsym.vardef,current_procinfo.procdef.proccalloption)) then
|
|
|
Message(asmr_e_cannot_access_field_directly_for_parameters);
|
|
|
|
|
|
oper.opr.localforceref:=true;
|