Ben Grasset <operato...@gmail.com> schrieb am Mi., 19. Juni 2019, 16:21:
> On Tue, Jun 18, 2019 at 11:08 AM Sven Barth via fpc-devel < > fpc-devel@lists.freepascal.org> wrote: > >> Those operators can't be inlined, because they're called from helper >> code, not from the compiler directly. The LLVM backend won't change >> anything here. >> > > Is there any real purpose to implementing `Copy` versus just implementing > `operator :=` (or `operator Implicit` when in {$mode Delphi})? Those can be > inlined, and in practice are used in essentially all the places `Copy` is. > By which I mean, IIRC you never really see calls to `fpc_copy_proc` in the > generated assembler unless you've specifically implemented `Copy` yourself. > It wouldn't matter if the function is called Copy, operator:= or "jdjfjsje". Once a copy management operator is defined the record type is considered "managed" and thus all assignment operations are routed through fpc_copy_proc just as is the case when a record contains at least one field of a managed type (e.g. AnsiString). Also using operator:= would go against the principle that existing, internal operators can't be overloaded. Regards, Sven >
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel