diff --git a/compiler/globtype.pas b/compiler/globtype.pas index 2044d15631..05a80b8834 100644 --- a/compiler/globtype.pas +++ b/compiler/globtype.pas @@ -350,7 +350,8 @@ interface cs_opt_forcenostackframe, cs_opt_use_load_modify_store, cs_opt_unused_para, - cs_opt_consts + cs_opt_consts, + cs_opt_forloop ); toptimizerswitches = set of toptimizerswitch; @@ -415,7 +416,7 @@ interface 'ORDERFIELDS','FASTMATH','DEADVALUES','REMOVEEMPTYPROCS', 'CONSTPROP', 'DEADSTORE','FORCENOSTACKFRAME','USELOADMODIFYSTORE', - 'UNUSEDPARA','CONSTS' + 'UNUSEDPARA','CONSTS','FORLOOP' ); WPOptimizerSwitchStr : array [twpoptimizerswitch] of string[14] = ( 'DEVIRTCALLS','OPTVMTS','SYMBOLLIVENESS' @@ -441,7 +442,9 @@ 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,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,cs_opt_forloop]; genericlevel4optimizerswitches = [cs_opt_level4,cs_opt_reorder_fields,cs_opt_dead_values,cs_opt_fastmath]; { whole program optimizations whose information generation requires diff --git a/compiler/psub.pas b/compiler/psub.pas index 01868ecada..ed5fd43cb4 100644 --- a/compiler/psub.pas +++ b/compiler/psub.pas @@ -1223,7 +1223,8 @@ implementation include(flags,pi_dfaavailable); end; - RedoDFA:=OptimizeForLoop(code); + if cs_opt_forloop in current_settings.optimizerswitches then + RedoDFA:=OptimizeForLoop(code); RedoDFA:=ConvertForLoops(code) or RedoDFA; diff --git a/compiler/utils/ppuutils/ppudump.pp b/compiler/utils/ppuutils/ppudump.pp index a4f78fb9f9..63cf47340e 100644 --- a/compiler/utils/ppuutils/ppudump.pp +++ b/compiler/utils/ppuutils/ppudump.pp @@ -2446,7 +2446,8 @@ const 'cs_opt_forcenostackframe', 'cs_opt_use_load_modify_store', 'cs_opt_unused_para', - 'cs_opt_consts' + 'cs_opt_consts', + 'cs_opt_forloop' ); var globalswitch : tglobalswitch;