> +choice > + prompt "Optimization level" > + default RUST_OPT_LEVEL_SIMILAR_AS_CHOSEN_FOR_C > + depends on RUST > + help > + Controls rustc's `-Copt-level` codegen option. > + > + This flag controls the optimization level. > + > + If unsure, say "Similar as chosen for C". > + > +config RUST_OPT_LEVEL_SIMILAR_AS_CHOSEN_FOR_C > + bool "Similar as chosen for C" > + help > + This choice will pick a similar optimization level as chosen in > + the "Compiler optimization level" for C: > + > + -O2 is currently mapped to -Copt-level=2 > + -O3 is currently mapped to -Copt-level=3 > + -Os is currently mapped to -Copt-level=s > + > + The mapping may change over time to follow the intended semantics > + of the choice for C as sensibly as possible. > + > + This is the default. > + > +config RUST_OPT_LEVEL_0 > + bool "No optimizations (-Copt-level=0)" > + help > + Not recommended for most purposes. It may come in handy for debugging > + suspected optimizer bugs, unexpected undefined behavior, etc. > + > + Note that this level will *not* enable debug assertions nor overflow > + checks on its own (like it happens when interacting with rustc > + directly). Use the corresponding configuration options to control > + that instead, orthogonally. > + > + Note this level may cause excessive stack usage, which can lead to stack > + overflow and subsequent crashes. > + > +config RUST_OPT_LEVEL_1 > + bool "Basic optimizations (-Copt-level=1)" > + help > + Useful for debugging without getting too lost, but without > + the overhead and boilerplate of no optimizations at all. > + > + Note this level may cause excessive stack usage, which can lead to stack > + overflow and subsequent crashes. > + > +config RUST_OPT_LEVEL_2 > + bool "Some optimizations (-Copt-level=2)" > + help > + The sensible choice in most cases. > + > +config RUST_OPT_LEVEL_3 > + bool "All optimizations (-Copt-level=3)" > + help > + Yet more performance (hopefully). > + > +config RUST_OPT_LEVEL_S > + bool "Optimize for size (-Copt-level=s)" > + help > + Smaller kernel, ideally without too much performance loss. > + > +config RUST_OPT_LEVEL_Z > + bool "Optimize for size, no loop vectorization (-Copt-level=z)" > + help > + Like the previous level, but also turn off loop vectorization. I'm super not into having the rust optimization level differ from the C optimization level. This is just someone having too much fun wrapping every compiler flag in a kbuild option. Either folks wan't smaller size or more optimizations. Allowing for RUST_OPT_LEVEL_S and CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE or RUST_OPT_LEVEL_3 and CONFIG_CC_OPTIMIZE_FOR_SIZE is just wacky nonsense that's going to make randconfig bug reports more confusing to tease out. -- Thanks, ~Nick Desaulniers