On Sun, 20 Jun 2021, Dimitar Dimitrov wrote:

> Slim LTO object files have been the default for quite a while, since:
>   commit e9f67e625c2a4225a7169d7220dcb85b6fdd7ca9
>   Author:     Jan Hubicka <hubi...@gcc.gnu.org>
>   common.opt (ffat-lto-objects): Disable by default.
> 
> That commit did not update lto.texi, so do it now.

LGTM.  Btw, on targets where linker plugin support is not detected
by configury fat objects are still the default.

> gcc/ChangeLog:
> 
>       * doc/lto.texi (Design Overview): Update that slim objects are
>       the default.
> 
> Signed-off-by: Dimitar Dimitrov <dimi...@dinux.eu>
> ---
>  gcc/doc/lto.texi | 23 ++++++++++-------------
>  1 file changed, 10 insertions(+), 13 deletions(-)
> 
> diff --git a/gcc/doc/lto.texi b/gcc/doc/lto.texi
> index 1f55216328a..755258ccb2b 100644
> --- a/gcc/doc/lto.texi
> +++ b/gcc/doc/lto.texi
> @@ -36,11 +36,16 @@ bytecode representation of GIMPLE that is emitted in 
> special sections
>  of @code{.o} files.  Currently, LTO support is enabled in most
>  ELF-based systems, as well as darwin, cygwin and mingw systems.
>  
> -Since GIMPLE bytecode is saved alongside final object code, object
> -files generated with LTO support are larger than regular object files.
> -This ``fat'' object format makes it easy to integrate LTO into
> -existing build systems, as one can, for instance, produce archives of
> -the files.  Additionally, one might be able to ship one set of fat
> +Object files generated with LTO support contain only GIMPLE bytecode.
> +Such objects are called ``slim'', and they require that tools like
> +@code{ar} and @code{nm} understand symbol tables of LTO sections.  These 
> tools
> +have been extended to use the plugin infrastructure, so GCC can support
> +``slim'' objects consisting of the intermediate code alone.
> +
> +GIMPLE bytecode could also be saved alongside final object code if the
> +@option{-ffat-lto-objects} option is passed.  But this would make the
> +object files generated with LTO support larger than regular object
> +files.  This ``fat'' object format allows to ship one set of fat
>  objects which could be used both for development and the production of
>  optimized builds.  A, perhaps surprising, side effect of this feature
>  is that any mistake in the toolchain leads to LTO information not
> @@ -49,14 +54,6 @@ This is both an advantage, as the system is more robust, 
> and a
>  disadvantage, as the user is not informed that the optimization has
>  been disabled.
>  
> -The current implementation only produces ``fat'' objects, effectively
> -doubling compilation time and increasing file sizes up to 5x the
> -original size.  This hides the problem that some tools, such as
> -@code{ar} and @code{nm}, need to understand symbol tables of LTO
> -sections.  These tools were extended to use the plugin infrastructure,
> -and with these problems solved, GCC will also support ``slim'' objects
> -consisting of the intermediate code alone.
> -
>  At the highest level, LTO splits the compiler in two.  The first half
>  (the ``writer'') produces a streaming representation of all the
>  internal data structures needed to optimize and generate code.  This
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)

Reply via email to