[fpc-pascal] Smart-linking versus Whole Program Optimization
jura at cp-lab.com
Wed Mar 10 19:49:59 CET 2021
On 10.03.2021 14:29, Jonas Maebe via fpc-pascal wrote:
> On 10/03/2021 13:17, Yuriy Sydorov via fpc-pascal wrote:
>> On 10.03.2021 11:34, LacaK via fpc-pascal wrote:
>>> A.) I compile my (units) program/library with -CX -XX (set in Project
>> Just a small note:
>> -CX -XX are not needed for the top-tier targets nowadays. The section
>> based smart linking is a default option in recent FPC versions.
> At least -XX is still necessary, otherwise we don't enable dead
> code/data stripping in the linker (at least not on Linux). And on macOS,
> -CX is also needed, otherwise the compiler does not emit a directive in
> the object files that dead code/data stripping should be enabled based
> on whether or not there are references to the global symbols preceding them.
Yes, you are right. On Windows, since introduction of the internal linker long time ago, both -CX -XX are ignored and
smart linking is always ON. I've supposed that this is also true for any target which supports tf_smartlink_sections and
these options are only needed for older smart linking method which involves generation of static libraries containing
tons of object files.
> Neither parameter may be necessary on Windows, but that's probably the
> only one.
Android and MS-DOS targets also ignore -CX -XX
More information about the fpc-pascal