* TP compatibility: For retro CPUs always copy the function result to

the register(s) on function exit if assembler blocks are present.
This commit is contained in:
Yuriy Sydorov 2021-08-16 00:40:06 +03:00
parent c78e9557f8
commit 64ddf22e1b

View File

@ -1085,7 +1085,13 @@ implementation
{ Mark procedure that it has assembler blocks } { Mark procedure that it has assembler blocks }
include(current_procinfo.flags,pi_has_assembler_block); include(current_procinfo.flags,pi_has_assembler_block);
{$if defined(cpu8bitalu) or defined(cpu16bitalu)}
{ We assume the function result is always used in the TP mode }
if (m_tp7 in current_settings.modeswitches) and
not (po_assembler in current_procinfo.procdef.procoptions) and
assigned(current_procinfo.procdef.funcretsym) then
current_procinfo.procdef.funcretsym.IncRefCount;
{$endif}
{ Read first the _ASM statement } { Read first the _ASM statement }
consume(_ASM); consume(_ASM);