diff options
Diffstat (limited to 'gcc/doc/invoke.texi')
-rw-r--r-- | gcc/doc/invoke.texi | 43 |
1 files changed, 22 insertions, 21 deletions
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 |