mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 11:29:27 +02:00
* Added optimization option cs_opt_unused_para. It is enabled for -O2 and higher. The parentfp optimization is tied to cs_opt_unused_para.
git-svn-id: trunk@45666 -
This commit is contained in:
parent
7bffafdf8b
commit
4e1e35aef5
@ -342,7 +342,8 @@ interface
|
||||
cs_opt_constant_propagate,
|
||||
cs_opt_dead_store_eliminate,
|
||||
cs_opt_forcenostackframe,
|
||||
cs_opt_use_load_modify_store
|
||||
cs_opt_use_load_modify_store,
|
||||
cs_opt_unused_para
|
||||
);
|
||||
toptimizerswitches = set of toptimizerswitch;
|
||||
|
||||
@ -400,7 +401,8 @@ interface
|
||||
'DFA','STRENGTH','SCHEDULE','AUTOINLINE','USEEBP','USERBP',
|
||||
'ORDERFIELDS','FASTMATH','DEADVALUES','REMOVEEMPTYPROCS',
|
||||
'CONSTPROP',
|
||||
'DEADSTORE','FORCENOSTACKFRAME','USELOADMODIFYSTORE'
|
||||
'DEADSTORE','FORCENOSTACKFRAME','USELOADMODIFYSTORE',
|
||||
'UNUSEDPARA'
|
||||
);
|
||||
WPOptimizerSwitchStr : array [twpoptimizerswitch] of string[14] = (
|
||||
'DEVIRTCALLS','OPTVMTS','SYMBOLLIVENESS'
|
||||
@ -425,7 +427,7 @@ interface
|
||||
|
||||
{ switches being applied to all CPUs at the given level }
|
||||
genericlevel1optimizerswitches = [cs_opt_level1,cs_opt_peephole];
|
||||
genericlevel2optimizerswitches = [cs_opt_level2,cs_opt_remove_empty_proc];
|
||||
genericlevel2optimizerswitches = [cs_opt_level2,cs_opt_remove_empty_proc,cs_opt_unused_para];
|
||||
genericlevel3optimizerswitches = [cs_opt_level3,cs_opt_constant_propagate,cs_opt_nodedfa{$ifndef llvm},cs_opt_use_load_modify_store{$endif},cs_opt_loopunroll];
|
||||
genericlevel4optimizerswitches = [cs_opt_level4,cs_opt_reorder_fields,cs_opt_dead_values,cs_opt_fastmath];
|
||||
|
||||
|
@ -841,13 +841,13 @@ implementation
|
||||
pd: tprocdef;
|
||||
begin
|
||||
{ The parameter can be optimized as unused when:
|
||||
optimization level 1 and higher
|
||||
this optimization is enabled
|
||||
this is a direct call to a routine, not a procvar
|
||||
and the routine is not an exception filter
|
||||
and the parameter is not used by the routine
|
||||
and implementation of the routine is already processed.
|
||||
}
|
||||
result:=(cs_opt_level1 in current_settings.optimizerswitches) and
|
||||
result:=(cs_opt_unused_para in current_settings.optimizerswitches) and
|
||||
assigned(parasym.Owner) and
|
||||
(parasym.Owner.defowner.typ=procdef);
|
||||
if not result then
|
||||
|
Loading…
Reference in New Issue
Block a user