mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 20:29:17 +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_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];
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user