On Thu, Oct 26, 2017 at 2:16 PM, Eric Gallager <eg...@gwmail.gwu.edu> wrote: > On 10/26/17, Wilco Dijkstra <wilco.dijks...@arm.com> wrote: >> GCC's default optimization level is -O0. Unfortunately unlike other >> compilers, >> GCC generates extremely inefficient code with -O0. It is almost unusable >> for >> low-level debugging or manual inspection of generated code. So a -O option >> is >> always required for compilation. -Og not only allows for fast compilation, >> but >> also produces code that is efficient, readable as well as debuggable. >> Therefore -Og makes for a much better default setting. >> >> Any comments? > > There are a number of bugs with -Og that I'd want to see fixed before > making it the default; I'll follow this message up once I find them > all.
update: I've filed bug 82738 to track them all: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82738 https://gcc.gnu.org/ml/gcc-bugs/2017-10/msg03058.html > >> >> 2017-10-26 Wilco Dijkstra <wdijk...@arm.com> >> >> * opts.c (default_options_optimization): Set default to -Og. >> >> doc/ >> * invoke.texi (-O0) Remove default mention. >> (-Og): Add mention of default setting. >> >> -- >> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi >> index >> 3328a3b5fafa6a98007eff52d2a26af520de9128..74c33ea35b9f320b419a3417e6007d2391536f1b >> 100644 >> --- a/gcc/doc/invoke.texi >> +++ b/gcc/doc/invoke.texi >> @@ -7343,7 +7343,7 @@ by @option{-O2} and also turns on the following >> optimization flags: >> @item -O0 >> @opindex O0 >> Reduce compilation time and make debugging produce the expected >> -results. This is the default. >> +results. >> >> @item -Os >> @opindex Os >> @@ -7371,7 +7371,7 @@ Optimize debugging experience. @option{-Og} enables >> optimizations >> that do not interfere with debugging. It should be the optimization >> level of choice for the standard edit-compile-debug cycle, offering >> a reasonable level of optimization while maintaining fast compilation >> -and a good debugging experience. >> +and a good debugging experience. This is the default. >> @end table >> >> If you use multiple @option{-O} options, with or without level numbers, >> diff --git a/gcc/opts.c b/gcc/opts.c >> index >> dfad955e220870a3250198640f3790c804b191e0..74511215309f11445685db4894be2ab6881695d3 >> 100644 >> --- a/gcc/opts.c >> +++ b/gcc/opts.c >> @@ -565,6 +565,12 @@ default_options_optimization (struct gcc_options >> *opts, >> int opt2; >> bool openacc_mode = false; >> >> + /* Set the default optimization to -Og. */ >> + opts->x_optimize_size = 0; >> + opts->x_optimize = 1; >> + opts->x_optimize_fast = 0; >> + opts->x_optimize_debug = 1; >> + >> /* Scan to see what optimization level has been specified. That will >> determine the default value of many flags. */ >> for (i = 1; i < decoded_options_count; i++) >> >>