* 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:
yury 2020-06-20 18:47:42 +00:00
parent 7bffafdf8b
commit 4e1e35aef5
2 changed files with 7 additions and 5 deletions

View File

@ -342,7 +342,8 @@ interface
cs_opt_constant_propagate, cs_opt_constant_propagate,
cs_opt_dead_store_eliminate, cs_opt_dead_store_eliminate,
cs_opt_forcenostackframe, cs_opt_forcenostackframe,
cs_opt_use_load_modify_store cs_opt_use_load_modify_store,
cs_opt_unused_para
); );
toptimizerswitches = set of toptimizerswitch; toptimizerswitches = set of toptimizerswitch;
@ -400,7 +401,8 @@ interface
'DFA','STRENGTH','SCHEDULE','AUTOINLINE','USEEBP','USERBP', 'DFA','STRENGTH','SCHEDULE','AUTOINLINE','USEEBP','USERBP',
'ORDERFIELDS','FASTMATH','DEADVALUES','REMOVEEMPTYPROCS', 'ORDERFIELDS','FASTMATH','DEADVALUES','REMOVEEMPTYPROCS',
'CONSTPROP', 'CONSTPROP',
'DEADSTORE','FORCENOSTACKFRAME','USELOADMODIFYSTORE' 'DEADSTORE','FORCENOSTACKFRAME','USELOADMODIFYSTORE',
'UNUSEDPARA'
); );
WPOptimizerSwitchStr : array [twpoptimizerswitch] of string[14] = ( WPOptimizerSwitchStr : array [twpoptimizerswitch] of string[14] = (
'DEVIRTCALLS','OPTVMTS','SYMBOLLIVENESS' 'DEVIRTCALLS','OPTVMTS','SYMBOLLIVENESS'
@ -425,7 +427,7 @@ interface
{ switches being applied to all CPUs at the given level } { switches being applied to all CPUs at the given level }
genericlevel1optimizerswitches = [cs_opt_level1,cs_opt_peephole]; 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]; 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]; genericlevel4optimizerswitches = [cs_opt_level4,cs_opt_reorder_fields,cs_opt_dead_values,cs_opt_fastmath];

View File

@ -841,13 +841,13 @@ implementation
pd: tprocdef; pd: tprocdef;
begin begin
{ The parameter can be optimized as unused when: { 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 this is a direct call to a routine, not a procvar
and the routine is not an exception filter and the routine is not an exception filter
and the parameter is not used by the routine and the parameter is not used by the routine
and implementation of the routine is already processed. 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 assigned(parasym.Owner) and
(parasym.Owner.defowner.typ=procdef); (parasym.Owner.defowner.typ=procdef);
if not result then if not result then