[fpc-pascal] Feature announcement: implicit generic function specializations
Martin Frb
lazarus at mfriebe.de
Sat Apr 23 00:18:26 CEST 2022
On 22/04/2022 23:12, Sven Barth via fpc-pascal wrote:
> Am 22.04.2022 um 20:51 schrieb Martin Frb via fpc-pascal:
>>
>>
>> So why does it generate "Add$1" if it does not use it? (Or rather why
>> does it warn, if this is some internal details?)
>
> Add$1 is the symbol of the generic itself, *not* the specialization.
> But please report it, cause that definitely shouldn't be the case
> anyway, as the generic is after all used by the specializations (and I
> should compile with -vh more often...)
>
>> => Then you get an additional hint: "project1.lpr(81,41) Hint: Local
>> proc "Add$1$crc9AB0BCED" is not used"
>> So then that very line generates a specialized version for the call,
>> and then the compiler does not use it.
>
> The compiler essentially works like this: it generates a suitable set
> of overloads. This includes the non-generic routines as well as all
> generic routines for which suitable type parameters can be found. Out
> of this set the compiler will then pick the function it will finally
> use with a preference for non-generic functions (even if parameters
> might be a worse, though not incompatible match).
>
> That said: if the compiler does not pick one of the specializations it
> should totally discard them, so please report a bug for this as well.
Done
https://gitlab.com/freepascal.org/fpc/source/-/issues/39684
https://gitlab.com/freepascal.org/fpc/source/-/issues/39685
More information about the fpc-pascal
mailing list