Quellcode durchsuchen

* TP compatibility: For retro CPUs always copy the function result to
the register(s) on function exit if assembler blocks are present.

Yuriy Sydorov vor 4 Jahren
Ursprung
Commit
64ddf22e1b
1 geänderte Dateien mit 7 neuen und 1 gelöschten Zeilen
  1. 7 1
      compiler/pstatmnt.pas

+ 7 - 1
compiler/pstatmnt.pas

@@ -1085,7 +1085,13 @@ implementation
 
          { Mark procedure that it has assembler blocks }
          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 }
          consume(_ASM);