<div dir="ltr"><div dir="ltr">On Tue, Jul 16, 2019 at 5:28 AM Sven Barth via fpc-devel <<a href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto"><span style="font-family:sans-serif">The output will then be two different addresses, thus showing that the code had been generated twice. </span></div><div dir="auto"><span style="font-family:sans-serif"><br></span></div><div dir="auto"><span style="font-family:sans-serif">However the compiler/linker is good at leaving out unused code and in this case only the two Assign specializations are kept as their addresses are taken, everything else is discarded. If you'd change one of the two to another non-virtual method then Assign of the one specialization and the other method of the other specialization would be kept. </span></div><div dir="auto"><span style="font-family:sans-serif"><br></span></div><div dir="auto"><span style="font-family:sans-serif">If you use virtual methods inside generics then things are less likely to be removed.</span></div></div></blockquote><div><br></div><div>Ah, I understand now.</div><div><br></div><div>I guess my point overall was that, in my experience at least, while there's indeed probably room for improvement in that area via something like WPO / COMDAT support / e.t.c. as you'd suggested, the overall effect of generics in FPC on binary size is not *unreasonable*.</div><div><br></div><div>I use Delphi only semi-regularly, but it does seem to be somewhat more of an actual issue there (as frankly binary size in recent Delphis is in general, with generics or not, when compared to FPC.)</div></div></div>