On Mon, Nov 14, 2022 at 12:43:28PM +0100, Jiri Slaby (SUSE) wrote: > +++ b/Documentation/kbuild/lto-build.rst > @@ -0,0 +1,76 @@ > +===================================================== > +gcc link time optimization (LTO) for the Linux kernel > +===================================================== > + > +Link Time Optimization allows the compiler to optimize the complete program > +instead of just each file. > + > +The compiler can inline functions between files and do various other global > +optimizations, like specializing functions for common parameters, > +determing when global variables are clobbered, making functions pure/const, > +propagating constants globally, removing unneeded data and others. > + > +It will also drop unused functions which can make the kernel > +image smaller in some circumstances, in particular for small kernel > +configurations. > + > +For small monolithic kernels it can throw away unused code very effectively > +(especially when modules are disabled) and usually shrinks > +the code size. > + > +Build time and memory consumption at build time will increase, depending > +on the size of the largest binary. Modular kernels are less affected. > +With LTO incremental builds are less incremental, as always the whole > +binary needs to be re-optimized (but not re-parsed) > + > +Oopses can be somewhat more difficult to read, due to the more aggressive > +inlining: it helps to use scripts/faddr2line. > + > +It is currently incompatible with live patching. ... because ? -- Josh