|
@@ -70,14 +70,22 @@ implementation
|
|
begin
|
|
begin
|
|
if resultdef.typ<>procvardef then
|
|
if resultdef.typ<>procvardef then
|
|
internalerror(2018040401);
|
|
internalerror(2018040401);
|
|
- exclude(tprocvardef(resultdef).procoptions,po_far);
|
|
|
|
|
|
+ if po_far in tprocvardef(resultdef).procoptions then
|
|
|
|
+ begin
|
|
|
|
+ resultdef:=cprocvardef.getreusableprocaddr(tabstractprocdef(left.resultdef),pc_offset);
|
|
|
|
+ exclude(tprocvardef(resultdef).procoptions,po_far);
|
|
|
|
+ end;
|
|
end
|
|
end
|
|
else if (tcnf_proc_2_procvar_2_voidpointer in convnodeflags) and
|
|
else if (tcnf_proc_2_procvar_2_voidpointer in convnodeflags) and
|
|
(current_settings.x86memorymodel in x86_far_code_models) then
|
|
(current_settings.x86memorymodel in x86_far_code_models) then
|
|
begin
|
|
begin
|
|
if resultdef.typ<>procvardef then
|
|
if resultdef.typ<>procvardef then
|
|
internalerror(2018040402);
|
|
internalerror(2018040402);
|
|
- include(tprocvardef(resultdef).procoptions,po_far);
|
|
|
|
|
|
+ if not (po_far in tprocvardef(resultdef).procoptions) then
|
|
|
|
+ begin
|
|
|
|
+ resultdef:=cprocvardef.getreusableprocaddr(tabstractprocdef(left.resultdef),pc_far_address);
|
|
|
|
+ include(tprocvardef(resultdef).procoptions,po_far);
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|