On Sun, May 22, 2022 at 12:38:17AM +0900, Masahiro Yamada wrote: > (+CC: Arnd, Changbin Du) > > > If -O1 support does not require additional effort, > I have no objection to this patch. > > (but I do not have enough insight about > the compiler's inlining heuristic) > > > > BTW, when we attempted to add the -Og support, > we fixed various parts, and Linus rejected it. > > https://lore.kernel.org/linux-kbuild/CAK7LNARQggM3aKEPRKJqa4tunFAfmfErMZuS-rrnRv6UB1VpPQ@xxxxxxxxxxxxxx/ > > > > > > > I am afraid that '-O1' has the same situation with '-Og'. As described in GCC mannual: Like -O0, -Og completely disables a number of optimization passes so that individual options controlling them have no effect. Otherwise -Og enables all -O1 optimization flags except for those that may interfere with debugging: -fbranch-count-reg -fdelayed-branch -fdse -fif-conversion -fif-conversion2 -finline-functions-called-once -fmove-loop-invariants -fmove-loop-stores -fssa-phiopt -ftree-bit-ccp -ftree-dse -ftree-pta -ftree-sra > On Sat, May 21, 2022 at 6:04 PM Christophe JAILLET > <christophe.jaillet@xxxxxxxxxx> wrote: > > > > Add a new compilation option which speeds-up compilation time. > > This can be useful when using static checker such as smatch or build-bots. > > In such cases, the speed and quality of the generated code is not > > important. > > > > Using -O0 would be even better, but unfortunately, building fails with > > this option. > > > > Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> > > --- > > Makefile | 5 ++++- > > init/Kconfig | 8 ++++++++ > > 2 files changed, 12 insertions(+), 1 deletion(-) > > > > diff --git a/Makefile b/Makefile > > index 1f8bef92868f..14467386f947 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -817,7 +817,10 @@ KBUILD_CFLAGS += $(call cc-disable-warning, format-truncation) > > KBUILD_CFLAGS += $(call cc-disable-warning, format-overflow) > > KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) > > > > -ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE > > +ifdef CONFIG_CC_OPTIMIZE_FOR_COMPILATION_SPEED > > +KBUILD_CFLAGS += -O1 > > +KBUILD_RUSTFLAGS_OPT_LEVEL_MAP := 1 > > +else ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE > > KBUILD_CFLAGS += -O2 > > KBUILD_RUSTFLAGS_OPT_LEVEL_MAP := 2 > > else ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 > > diff --git a/init/Kconfig b/init/Kconfig > > index a96776a9b080..3177a1830c9a 100644 > > --- a/init/Kconfig > > +++ b/init/Kconfig > > @@ -1384,6 +1384,14 @@ choice > > prompt "Compiler optimization level" > > default CC_OPTIMIZE_FOR_PERFORMANCE > > > > +config CC_OPTIMIZE_FOR_COMPILATION_SPEED > > + bool "Optimize for compilation speed (-O1)" > > + help > > + This option can be useful when running a static checker such as smatch > > + or a build-bot. > > + Compilation time is slighly faster than -O2 and it requires less > > + memory. > > + > > config CC_OPTIMIZE_FOR_PERFORMANCE > > bool "Optimize for performance (-O2)" > > help > > -- > > 2.34.1 > > > > > -- > Best Regards > Masahiro Yamada -- Cheers, Changbin Du