[PATCH] Simplify -fwhole-program documentation

Richard Biener rguenther@suse.de
Tue Mar 5 12:51:00 GMT 2013


This removes all encouragement to use -fwhole-program with -flto
from the documentation.  As can be seen in PR56533 it can be
most confusing ... instead advise to rely on a linker plugin.

Ok?

Thanks,
Richard.

2013-03-05  Richard Biener  <rguenther@suse.de>

	* doc/invoke.texi (fwhole-program): Discourage use in combination
	with -flto.

Index: gcc/doc/invoke.texi
===================================================================
*** gcc/doc/invoke.texi	(revision 196451)
--- gcc/doc/invoke.texi	(working copy)
*************** Enabled by default with @option{-funroll
*** 8168,8182 ****
  Assume that the current compilation unit represents the whole program being
  compiled.  All public functions and variables with the exception of @code{main}
  and those merged by attribute @code{externally_visible} become static functions
! and in effect are optimized more aggressively by interprocedural optimizers. If @command{gold} is used as the linker plugin, @code{externally_visible} attributes are automatically added to functions (not variable yet due to a current @command{gold} issue) that are accessed outside of LTO objects according to resolution file produced by @command{gold}.  For other linkers that cannot generate resolution file, explicit @code{externally_visible} attributes are still necessary.
! While this option is equivalent to proper use of the @code{static} keyword for
! programs consisting of a single file, in combination with option
! @option{-flto} this flag can be used to
! compile many smaller scale programs since the functions and variables become
! local for the whole combined compilation unit, not for the single source file
! itself.
  
! This option implies @option{-fwhole-file} for Fortran programs.
  
  @item -flto[=@var{n}]
  @opindex flto
--- 8168,8178 ----
  Assume that the current compilation unit represents the whole program being
  compiled.  All public functions and variables with the exception of @code{main}
  and those merged by attribute @code{externally_visible} become static functions
! and in effect are optimized more aggressively by interprocedural optimizers.
  
! In combination with @code{-flto} using this option should not be used.
! Instead relying on a linker plugin should provide safer and more precise
! information.
  
  @item -flto[=@var{n}]
  @opindex flto



More information about the Gcc-patches mailing list