Patchwork Clarify inline flag documentation

login
register
mail settings
Submitter Richard Guenther
Date Feb. 1, 2012, 9:19 a.m.
Message ID <alpine.LNX.2.00.1202011019050.4999@zhemvz.fhfr.qr>
Download mbox | patch
Permalink /patch/138926/
State New
Headers show

Comments

Richard Guenther - Feb. 1, 2012, 9:19 a.m.
On Tue, 31 Jan 2012, Richard Guenther wrote:

> 
> Thus, the following tries to clarify the documentation of
> -fno-inline and -finline-functions.
> 
> Does that help?

lxo noticed a completely off comment in common.opt so I adjusted
documentation therein as well.

Committed.

Richard.

2012-02-01  Richard Guenther  <rguenther@suse.de>

	* doc/invoke.texi (fno-inline): Clarify documentation.
	(finline-small-functions): Likewise.
	(finline-functions): Likewise.
	* common.opt (finline): Adjust comment and documentation.
	(finline-small-functions): Clarify documentation.
	(finline-functions): Likewise.
	(finline-functions-called-once): Likewise.

Index: gcc/doc/invoke.texi
===================================================================
*** gcc/doc/invoke.texi	(revision 183751)
--- gcc/doc/invoke.texi	(working copy)
*************** Enabled at levels @option{-O2}, @option{
*** 6335,6350 ****
  
  @item -fno-inline
  @opindex fno-inline
! Don't pay attention to the @code{inline} keyword.  Normally this option
! is used to keep the compiler from expanding any functions inline.
! Note that if you are not optimizing, no functions can be expanded inline.
  
  @item -finline-small-functions
  @opindex finline-small-functions
  Integrate functions into their callers when their body is smaller than expected
  function call code (so overall size of program gets smaller).  The compiler
  heuristically decides which functions are simple enough to be worth integrating
! in this way.
  
  Enabled at level @option{-O2}.
  
--- 6335,6354 ----
  
  @item -fno-inline
  @opindex fno-inline
! Do not expand any functions inline apart from those marked with
! the @code{always_inline} attribute.  This is the default when not
! optimizing.
! 
! Single functions can be exempted from inlining by marking them
! with the @code{noinline} attribute.
  
  @item -finline-small-functions
  @opindex finline-small-functions
  Integrate functions into their callers when their body is smaller than expected
  function call code (so overall size of program gets smaller).  The compiler
  heuristically decides which functions are simple enough to be worth integrating
! in this way.  This inlining applies to all functions, even those not declared
! inline.
  
  Enabled at level @option{-O2}.
  
*************** Enabled at level @option{-O2}.
*** 6359,6367 ****
  
  @item -finline-functions
  @opindex finline-functions
! Integrate all simple functions into their callers.  The compiler
! heuristically decides which functions are simple enough to be worth
! integrating in this way.
  
  If all calls to a given function are integrated, and the function is
  declared @code{static}, then the function is normally not output as
--- 6363,6371 ----
  
  @item -finline-functions
  @opindex finline-functions
! Consider all functions for inlining, even if they are not declared inline.
! The compiler heuristically decides which functions are worth integrating
! in this way.
  
  If all calls to a given function are integrated, and the function is
  declared @code{static}, then the function is normally not output as

Patch

Index: gcc/common.opt
===================================================================
--- gcc/common.opt	(revision 183791)
+++ gcc/common.opt	(working copy)
@@ -1245,26 +1245,23 @@  findirect-inlining
 Common Report Var(flag_indirect_inlining)
 Perform indirect inlining
 
-; Nonzero means that functions declared `inline' will be treated
-; as `static'.  Prevents generation of zillions of copies of unused
-; static inline functions; instead, `inlines' are written out
-; only when actually used.  Used in conjunction with -g.  Also
-; does the right thing with #pragma interface.
+; General flag to enable inlining.  Specifying -fno-inline will disable
+; all inlining apart from always-inline functions.
 finline
 Common Report Var(flag_no_inline,0) Init(0)
-Pay attention to the \"inline\" keyword
+Enable inlining of function declared \"inline\", disabling disables all inlining
 
 finline-small-functions
 Common Report Var(flag_inline_small_functions) Optimization
-Integrate simple functions into their callers when code size is known to not growth
+Integrate functions into their callers when code size is known not to grow
 
 finline-functions
 Common Report Var(flag_inline_functions) Optimization
-Integrate simple functions into their callers
+Integrate functions not declared \"inline\" into their callers when profitable
 
 finline-functions-called-once
 Common Report Var(flag_inline_functions_called_once) Optimization
-Integrate functions called once into their callers
+Integrate functions only required by their single caller
 
 finline-limit-
 Common RejectNegative Joined Alias(finline-limit=)