Sven Barth wrote:
Adriaan van Os via fpc-devel <fpc-devel@lists.freepascal.org
<mailto:fpc-devel@lists.freepascal.org>> schrieb am Do., 2. Feb. 2023,
02:47:
Sven Barth via fpc-devel wrote:
> There is no full documentation for that parameter modifier (someone
> might want to file a bug report for that), but the documentation for
> “const” (
>
https://www.freepascal.org/docs-html/current/ref/refsu67.html#x183-20700014.4.4
> ) contains this:
>
> === doc begin ===
>
> Contrary to Delphi, no assumptions should be made about how const
> parameters are passed to the underlying routine. In particular, the
> assumption that parameters with large size are passed by
reference is
> not correct. For this the constref parameter type should be used,
which
> is available as of version 2.5.1 of the compiler.
>
> === doc end ===
On debate, see FPC issue 17442.
There is no debate planned for this in the near future. So even if this
might change some time in the future it does not *now* and very likely
also not for 3.4.0. Not to mention that things wouldn't change for most
platforms anyway, because they only have the platform ABI available and
that *must not* change for compatibility with C code.
"Will not change" and "ABI" are non arguments. They do not address the
questions put forward here:
- under what circumstances (and in what compiler mode) does FPC pass large (say 1 MB or 1 GB)
"const" parameters by value (which is extremely inefficient) ?
- for what reasons ?
As long as these questions are not addressed and cleared and documented "const" parameters are not
a useable in actual code.
Regards,
Adriaan van Os
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel