Am 17.01.2018 um 16:38 schrieb Jonas Maebe:
> The LevelX switches are only intended for internal use by the compiler, 
> and were never intended to be exposed.
Good, that's what I thought too.

> The ability to have the equivalent of 
> -O1/-O2/-O3/-O4 in source code was never planned.
Florian wrote in 0025873,
> But there is indeed no equivalent for -O3/4 at source level ({$optimizations 
> on} equals to -O2). I'am open for suggestions how such a directive should 
> look like. 

May I propose to redefine {$optimization levelN} to do that? Reasons:
a) we agree the flags alone (should) have no use
b) it's always been documented that way
c) it's used as if that was true in live code

Rough patch attached...

-- 
Regards,
Martok

Ceterum censeo b32079 esse sanandam.
Index: scandir.pas
===================================================================
--- scandir.pas (revision 37943)
+++ scandir.pas (working copy)
@@ -1039,17 +1039,20 @@
         current_scanner.skipspace;
         { Support also the ON and OFF as switch }
         hs:=current_scanner.readid;
-        if (hs='ON') then
-          current_settings.optimizerswitches:=level2optimizerswitches
-        else if (hs='OFF') then
-          current_settings.optimizerswitches:=[]
-        else if (hs='DEFAULT') then
-          current_settings.optimizerswitches:=init_settings.optimizerswitches
+        case hs of
+          'OFF': current_settings.optimizerswitches:=[];
+          'ON': current_settings.optimizerswitches:=level2optimizerswitches;
+          'DEFAULT': 
current_settings.optimizerswitches:=init_settings.optimizerswitches;
+          'LEVEL1': 
current_settings.optimizerswitches:=level1optimizerswitches;
+          'LEVEL2': 
current_settings.optimizerswitches:=level2optimizerswitches;
+          'LEVEL3': 
current_settings.optimizerswitches:=level3optimizerswitches;
+          'LEVEL4': 
current_settings.optimizerswitches:=level4optimizerswitches;
         else
           begin
             if not UpdateOptimizerStr(hs,current_settings.optimizerswitches) 
then
               Message1(scan_e_illegal_optimization_specifier,hs);
           end;
+        end;
       end;
 
     procedure dir_overflowchecks;
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to