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>
* 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
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
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