Commit 2d526072 by Sandra Loosemore Committed by Sandra Loosemore

invoke.texi (Link Options): Further editorial changes to -flinker-output docs.

2019-07-01  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* doc/invoke.texi (Link Options): Further editorial changes to
	-flinker-output docs.

From-SVN: r272887
parent b94eec3b
2019-07-01 Sandra Loosemore <sandra@codesourcery.com>
* doc/invoke.texi (Link Options): Further editorial changes to
-flinker-output docs.
2019-07-01 Segher Boessenkool <segher@kernel.crashing.org> 2019-07-01 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem): * config/rs6000/rs6000.c (rs6000_force_indexed_or_indirect_mem):
......
...@@ -6007,8 +6007,9 @@ Warn about types with virtual methods where code quality would be improved ...@@ -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, if the type were declared with the C++11 @code{final} specifier,
or, if possible, or, if possible,
declared in an anonymous namespace. This allows GCC to more aggressively declared in an anonymous namespace. This allows GCC to more aggressively
devirtualize the polymorphic calls. This warning is more effective with link devirtualize the polymorphic calls. This warning is more effective with
time optimization, where the information about the class hierarchy graph is link-time optimization,
where the information about the class hierarchy graph is
more complete. more complete.
@item -Wsuggest-final-methods @item -Wsuggest-final-methods
...@@ -13190,49 +13191,49 @@ Options}. ...@@ -13190,49 +13191,49 @@ Options}.
@item -flinker-output=@var{type} @item -flinker-output=@var{type}
@opindex flinker-output @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 default the linker output is automatically determined by the linker
plugin. For debugging the compiler and if incremental linking with a 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 non-LTO object file is desired, it may be useful to control the type
manually. 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 binary. In this case @option{-fpic} and @option{-fpie} are both
disabled. 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, library. In this case @option{-fpic} or @option{-fPIC} is preserved,
but not enabled automatically. This allows to build shared libraries 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. 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} executable. This results in similar optimizations as @samp{exec}
except that @option{-fpie} is not disabled if specified at compilation except that @option{-fpie} is not disabled if specified at compilation
time. 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 done. The sections containing intermediate code for link-time optimization are
merged, pre-optimized, and output to the resulting object file. In addition, if 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 @option{-ffat-lto-objects} is specified, binary code is produced for future
non-LTO linking. The object file produced by incremental linking will be smaller 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 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. library assuming that the majority of objects in the library are used.
Finally @samp{nolto-rel} configures the compiler for incremental linking where 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 code for later link-time optimization is stripped. When multiple object files
are linked together the resulting code will be optimized better than with are linked together the resulting code is better optimized than with
link-time optimizations disabled (for example, cross-module inlining will link-time optimizations disabled (for example, cross-module inlining
happen), most of benefits of whole program optimizations are however lost. 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 @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 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 mixed object file. If any of object files in incremental link cannot
be used for link-time optimization the linker plugin will issue a warning and be used for link-time optimization, the linker plugin issues a warning and
use @samp{nolto-rel}. To maintain the whole program optimization it is uses @samp{nolto-rel}. To maintain whole program optimization, it is
recommended to link such objects into static library instead. Alternatively it 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. is possible to use H.J. Lu's binutils with support for mixed objects.
...@@ -15379,8 +15380,8 @@ Disabled by default. ...@@ -15379,8 +15380,8 @@ Disabled by default.
@item -flto-report-wpa @item -flto-report-wpa
@opindex flto-report-wpa @opindex flto-report-wpa
Like @option{-flto-report}, but only print for the WPA phase of Link Like @option{-flto-report}, but only print for the WPA phase of link-time
Time Optimization. optimization.
@item -fmem-report @item -fmem-report
@opindex fmem-report @opindex fmem-report
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment