diff --git a/compiler/arm/cpuinfo.pas b/compiler/arm/cpuinfo.pas index 4a0a4d17d1..cf6bdd0c92 100644 --- a/compiler/arm/cpuinfo.pas +++ b/compiler/arm/cpuinfo.pas @@ -85,9 +85,9 @@ Const { Supported optimizations, only used for information } supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll,cs_opt_tailrecursion]; - level1optimizerswitches = [cs_opt_level1]; - level2optimizerswitches = level1optimizerswitches + [cs_opt_level2,cs_opt_regvar,cs_opt_stackframe,cs_opt_tailrecursion]; - level3optimizerswitches = level2optimizerswitches + [cs_opt_level3{,cs_opt_loopunroll}]; + level1optimizerswitches = genericlevel1optimizerswitches; + level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches + [cs_opt_regvar,cs_opt_stackframe,cs_opt_tailrecursion]; + level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}]; Implementation diff --git a/compiler/globals.pas b/compiler/globals.pas index a425e82731..29571b779c 100644 --- a/compiler/globals.pas +++ b/compiler/globals.pas @@ -70,7 +70,6 @@ interface macmodeswitches : tmodeswitches= [m_mac,m_all,m_result,m_cvar_support,m_mac_procvar]; - { maximum nesting of routines } maxnesting = 32; diff --git a/compiler/globtype.pas b/compiler/globtype.pas index afad5a73ea..70f186375e 100644 --- a/compiler/globtype.pas +++ b/compiler/globtype.pas @@ -160,6 +160,11 @@ than 255 characters. That's why using Ansi Strings} 'PEEPHOLE','ASMCSE','LOOPUNROLL','TAILREC' ); + { switches being applied to all CPUs at the given level } + genericlevel1optimizerswitches = [cs_opt_level1]; + genericlevel2optimizerswitches = [cs_opt_level2]; + genericlevel3optimizerswitches = [cs_opt_level3]; + type { Switches which can be changed by a mode (fpc,tp7,delphi) } tmodeswitch = (m_none,m_all, { needed for keyword } diff --git a/compiler/i386/cpuinfo.pas b/compiler/i386/cpuinfo.pas index c56d92a8b8..89d5a4987d 100644 --- a/compiler/i386/cpuinfo.pas +++ b/compiler/i386/cpuinfo.pas @@ -98,9 +98,9 @@ Const supported_optimizerswitches = [cs_opt_peephole,cs_opt_regvar,cs_opt_stackframe, cs_opt_asmcse,cs_opt_loopunroll,cs_opt_uncertain,cs_opt_tailrecursion]; - level1optimizerswitches = [cs_opt_level1,cs_opt_peephole]; - level2optimizerswitches = level1optimizerswitches + [cs_opt_level2,cs_opt_regvar,cs_opt_stackframe,cs_opt_asmcse,cs_opt_tailrecursion]; - level3optimizerswitches = level2optimizerswitches + [cs_opt_level3{,cs_opt_loopunroll}]; + level1optimizerswitches = genericlevel1optimizerswitches + [cs_opt_peephole]; + level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches + [cs_opt_regvar,cs_opt_stackframe,cs_opt_asmcse,cs_opt_tailrecursion]; + level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}]; Implementation diff --git a/compiler/m68k/cpuinfo.pas b/compiler/m68k/cpuinfo.pas index 92c3838dde..67e854ba9f 100644 --- a/compiler/m68k/cpuinfo.pas +++ b/compiler/m68k/cpuinfo.pas @@ -72,9 +72,9 @@ Const { Supported optimizations, only used for information } supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll]; - level1optimizerswitches = [cs_opt_level1]; - level2optimizerswitches = level1optimizerswitches + [cs_opt_level2,cs_opt_regvar,cs_opt_stackframe]; - level3optimizerswitches = level2optimizerswitches + [cs_opt_level3{,cs_opt_loopunroll}]; + level1optimizerswitches = genericlevel1optimizerswitches; + level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches + [cs_opt_regvar,cs_opt_stackframe]; + level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}]; Implementation diff --git a/compiler/powerpc/cpuinfo.pas b/compiler/powerpc/cpuinfo.pas index ad9f01bae7..9a67f2d96f 100644 --- a/compiler/powerpc/cpuinfo.pas +++ b/compiler/powerpc/cpuinfo.pas @@ -69,9 +69,9 @@ Const { Supported optimizations, only used for information } supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll]; - level1optimizerswitches = [cs_opt_level1]; - level2optimizerswitches = level1optimizerswitches + [cs_opt_level2,cs_opt_regvar]; - level3optimizerswitches = level2optimizerswitches + [cs_opt_level3{,cs_opt_loopunroll}]; + level1optimizerswitches = genericlevel1optimizerswitches; + level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches + [cs_opt_regvar]; + level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}]; Implementation diff --git a/compiler/powerpc64/cpuinfo.pas b/compiler/powerpc64/cpuinfo.pas index d10f55f8ed..69fc578eb1 100644 --- a/compiler/powerpc64/cpuinfo.pas +++ b/compiler/powerpc64/cpuinfo.pas @@ -63,9 +63,9 @@ const { Supported optimizations, only used for information } supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll]; - level1optimizerswitches = [cs_opt_level1]; - level2optimizerswitches = level1optimizerswitches + [cs_opt_level2,cs_opt_regvar,cs_opt_stackframe]; - level3optimizerswitches = level2optimizerswitches + [cs_opt_level3{,cs_opt_loopunroll}]; + level1optimizerswitches = genericlevel1optimizerswitches; + level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches + [cs_opt_regvar,cs_opt_stackframe]; + level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}]; implementation diff --git a/compiler/sparc/cpuinfo.pas b/compiler/sparc/cpuinfo.pas index d59c0c7b21..a92abdd665 100644 --- a/compiler/sparc/cpuinfo.pas +++ b/compiler/sparc/cpuinfo.pas @@ -73,9 +73,9 @@ const { Supported optimizations, only used for information } supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll,cs_opt_tailrecursion]; - level1optimizerswitches = [cs_opt_level1]; - level2optimizerswitches = level1optimizerswitches + [cs_opt_level2,cs_opt_regvar,cs_opt_tailrecursion]; - level3optimizerswitches = level2optimizerswitches + [cs_opt_level3{,cs_opt_loopunroll}]; + level1optimizerswitches = genericlevel1optimizerswitches; + level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches + [cs_opt_regvar,cs_opt_tailrecursion]; + level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}]; implementation diff --git a/compiler/x86_64/cpuinfo.pas b/compiler/x86_64/cpuinfo.pas index d8ca480758..54f8aea351 100644 --- a/compiler/x86_64/cpuinfo.pas +++ b/compiler/x86_64/cpuinfo.pas @@ -82,9 +82,9 @@ Const { Supported optimizations, only used for information } supported_optimizerswitches = [cs_opt_regvar,cs_opt_loopunroll,cs_opt_stackframe,cs_opt_tailrecursion]; - level1optimizerswitches = [cs_opt_level1]; - level2optimizerswitches = level1optimizerswitches + [cs_opt_level2{,cs_opt_regvar},cs_opt_stackframe,cs_opt_tailrecursion]; - level3optimizerswitches = level2optimizerswitches + [cs_opt_level3{,cs_opt_loopunroll}]; + level1optimizerswitches = genericlevel1optimizerswitches; + level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches + [{,cs_opt_regvar},cs_opt_stackframe,cs_opt_tailrecursion]; + level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}]; Implementation