[fpc-pascal] Remove unused functions in a class
Jonas Maebe
jonas.maebe at elis.ugent.be
Sun Apr 5 11:20:59 CEST 2009
On 05 Apr 2009, at 00:40, JoshyFun wrote:
> If a virtual method of a class is not used at all in the programm will
> the compiler remove it from the executable ?
If you use FPC 2.3.1 with whole-program optimization and the compiler
can prove that it is never callable: yes. See http://wiki.freepascal.org/Whole_Program_Optimization
for more information. In case this is in relation to the thread on
the Lazarus list about the big executables: note that it has only a
limited effect on Lazarus programs, because almost all linked LCL code
can potentially be executed (due to the way the LCL is constructed).
In fact, I think most savings there come from making a number of
virtual method calls non-virtual, rather than from throwing away
unreachable code.
The internal linker can also do it (only throwing away virtual method
calls, not turning virtual method calls into static ones), but only on
Windows platforms. It is however not currently enabled in the
compiler, because the changes break the external linker. It should
therefore be turned into a command line option (along with a check
that produces an error if you try to link a unit compiled with the
option using the external linker), but that hasn't been done yet.
Jonas
More information about the fpc-pascal
mailing list