[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