Just a thought that I'd chuck in on this... I did wonder how practical it would be to store checksums of all compiled procedures and the like and to look for collisions.  When studying how the compiler is built, I noticed a lot of the internal methods, due to conditional defines, would compile into identical code, so merging them would reduce the binary size if the linker is able to strip out procedures that are never called.  Granted, I haven't done research on how Free Pascal does Whole Program Optimisation yet, especially as it requiring a separate compilation pass has always put me off.  I would have thought that the linker should be able to handle it right there and then because it has all the information it needs.

Gareth aka. Kit

On 14/07/2019 02:01, Sven Barth via fpc-devel wrote:
Ben Grasset <operato...@gmail.com <mailto:operato...@gmail.com>> schrieb am Sa., 13. Juli 2019, 21:52:

    On Sat, Jul 13, 2019 at 3:47 PM Michael Van Canneyt
    <mich...@freepascal.org <mailto:mich...@freepascal.org>> wrote:

        No doubt, but this will lead to a bloated binary. I want less
        code (both
        source and assembler), not more.


    Well, it would be one instantiation per unique type it was used on.


Not necessarily. If you have two units that don't know about each other that specialize the function with the same enum then you'd have two specializations already.

This would need either a WPO pass or COMDAT support. Both are on my ToDo list, especially as the former is needed if the output format does not support the idea of COMDATs (e.g. PE/COFF and ELF do).

Regards,
Sven

_______________________________________________
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.
https://www.avast.com/antivirus
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to