[fpc-devel] Does FPC optimize unused parameters ?
Jonas Maebe
jonas.maebe at elis.ugent.be
Wed Aug 8 16:55:47 CEST 2012
michael.vancanneyt wrote on Wed, 08 Aug 2012:
> On Wed, 8 Aug 2012, Jonas Maebe wrote:
>> After the body of the called routine has been parsed, it would be
>> possible in theory (with indeed all the caveats the compiler would
>> have to take care of such as side effects -- note that these may
>> include non-obvious side-effects, such as potential overflow
>> exceptions and invalid pointer accesses).
>
> You'd need to check the caller routine as well, values for parameters might
> still be used after the call to the function.
There's a difference between not loading/evaluating expressions passed
as a parameter, and completely eliminating the program slice that
contributed to calculating every value used in the parameter
expression. Obviously, the latter has much more stringent requirements.
> I still use ifdefs for debug messages, and have a template to
> quickly insert :
>
> {$ifdef debugmsg}SendDebug('|');{$endif debugmsg}
>
> This way, there is no extra code in my final build.
It's possible to do that in a more compact way with a macro (the
following is used in a couple of places in the RTL):
{$macro on}
{$ifdef debugmsg}
{$define CallSendDebug:=SendDebug}
{$else}
{$define CallSendDebug:=//}
{$endif}
CallSendDebug('|');
Jonas
More information about the fpc-devel
mailing list