If I'm right in thinking, things like "fpc_abs_real" are fallback functions that have to be overridden by a platform-specific implementation, and return runtime errors if they aren't implemented.  In many cases, such internal compiler routines are not called at all because there's a direct instruction available in the architecture (e.g. for integer min and max functions, AArch64 has SMIN and SMAX respectively, but x86 doesn't have such direct operations).

I may have gotten a few details wrong - it's been a while since I worked on the RTL (last time was to implement a more optimised exponential function, and to be cleverer with optimising min/max functions).

Kit

On 25/06/2025 07:07, Mattias Gaertner via fpc-devel wrote:
Hi,

How do the fpc_ compileprocs in the rtl like fpc_abs_real work?

Some platforms have assembler code, others just raises an error.

They are included by a comment:

{ documenting compiler proc. is useless, they shouldn't be used by the user anyways }
{$ifndef fpdocsystem}
{$i compproc.inc}

They are included if fpdocsystem is *not* defined, but the comment says they are for documentation only. Confusing.


Mattias


_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel


--
This email has been checked for viruses by Avast antivirus software.
www.avast.com
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to