From 2d526072efb83eacfe0695794f36eb89d260b453 Mon Sep 17 00:00:00 2001 From: Sandra Loosemore Date: Mon, 1 Jul 2019 11:42:49 -0400 Subject: [PATCH] invoke.texi (Link Options): Further editorial changes to -flinker-output docs. 2019-07-01 Sandra Loosemore gcc/ * doc/invoke.texi (Link Options): Further editorial changes to -flinker-output docs. From-SVN: r272887 --- gcc/ChangeLog | 5 +++++ gcc/doc/invoke.texi | 43 ++++++++++++++++++++++--------------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 868ac76..fdd5e71 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-07-01 Sandra Loosemore + + * doc/invoke.texi (Link Options): Further editorial changes to + -flinker-output docs. + 2019-07-01 Segher Boessenkool * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem): diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 6382a84..9c6050b 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -6007,8 +6007,9 @@ Warn about types with virtual methods where code quality would be improved if the type were declared with the C++11 @code{final} specifier, or, if possible, declared in an anonymous namespace. This allows GCC to more aggressively -devirtualize the polymorphic calls. This warning is more effective with link -time optimization, where the information about the class hierarchy graph is +devirtualize the polymorphic calls. This warning is more effective with +link-time optimization, +where the information about the class hierarchy graph is more complete. @item -Wsuggest-final-methods @@ -13190,49 +13191,49 @@ Options}. @item -flinker-output=@var{type} @opindex flinker-output -This option controls code generation of the link time optimizer. By +This option controls code generation of the link-time optimizer. By default the linker output is automatically determined by the linker plugin. For debugging the compiler and if incremental linking with a non-LTO object file is desired, it may be useful to control the type manually. -If @var{type} is @samp{exec} code generation produces a static +If @var{type} is @samp{exec}, code generation produces a static binary. In this case @option{-fpic} and @option{-fpie} are both disabled. -If @var{type} is @samp{dyn} code generation produces a shared +If @var{type} is @samp{dyn}, code generation produces a shared library. In this case @option{-fpic} or @option{-fPIC} is preserved, but not enabled automatically. This allows to build shared libraries -without position independent code on architectures where this is +without position-independent code on architectures where this is possible, i.e.@: on x86. -If @var{type} is @samp{pie} code generation produces an @option{-fpie} +If @var{type} is @samp{pie}, code generation produces an @option{-fpie} executable. This results in similar optimizations as @samp{exec} except that @option{-fpie} is not disabled if specified at compilation time. -If @var{type} is @samp{rel} the compiler assumes that incremental linking is +If @var{type} is @samp{rel}, the compiler assumes that incremental linking is done. The sections containing intermediate code for link-time optimization are merged, pre-optimized, and output to the resulting object file. In addition, if -@option{-ffat-lto-objects} is specified the binary code is produced for future -non-LTO linking. The object file produced by incremental linking will be smaller +@option{-ffat-lto-objects} is specified, binary code is produced for future +non-LTO linking. The object file produced by incremental linking is smaller than a static library produced from the same object files. At link time the -result of incremental linking will also load faster to compiler than a static +result of incremental linking also loads faster than a static library assuming that the majority of objects in the library are used. Finally @samp{nolto-rel} configures the compiler for incremental linking where -code generation is forced, a final binary is produced and the intermediate +code generation is forced, a final binary is produced, and the intermediate code for later link-time optimization is stripped. When multiple object files -are linked together the resulting code will be optimized better than with -link-time optimizations disabled (for example, cross-module inlining will -happen), most of benefits of whole program optimizations are however lost. +are linked together the resulting code is better optimized than with +link-time optimizations disabled (for example, cross-module inlining +happens), but most of benefits of whole program optimizations are lost. -During the incremental link (by @option{-r}) the linker plugin will default to +During the incremental link (by @option{-r}) the linker plugin defaults to @option{rel}. With current interfaces to GNU Binutils it is however not possible to incrementally link LTO objects and non-LTO objects into a single -mixed object file. In the case any of object files in incremental link cannot -be used for link-time optimization the linker plugin will issue a warning and -use @samp{nolto-rel}. To maintain the whole program optimization it is +mixed object file. If any of object files in incremental link cannot +be used for link-time optimization, the linker plugin issues a warning and +uses @samp{nolto-rel}. To maintain whole program optimization, it is recommended to link such objects into static library instead. Alternatively it is possible to use H.J. Lu's binutils with support for mixed objects. @@ -15379,8 +15380,8 @@ Disabled by default. @item -flto-report-wpa @opindex flto-report-wpa -Like @option{-flto-report}, but only print for the WPA phase of Link -Time Optimization. +Like @option{-flto-report}, but only print for the WPA phase of link-time +optimization. @item -fmem-report @opindex fmem-report -- 2.7.4