[PATCH] Fix PR15366, -fno-inline-functions is ignored for static functions

Richard Guenther rguenther@suse.de
Wed Aug 31 13:01:00 GMT 2005


This makes it possible to disable inlining of functions called once
by -fno-inline-functions-called-once.

Ok for mainline?

Thanks,
Richard.


2005-08-31  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/15366
	* common.opt: Add -finline-functions-called-once.
	Put -fearly-inlining in alphabetically ordered place.
	* doc/invoke.texi: Document new option.
	* ipa-inline.c (cgraph_decide_inlining): Honour
	flag_inline_functions_called_once.

Index: common.opt
===================================================================
RCS file: /cvs/gcc/gcc/gcc/common.opt,v
retrieving revision 1.87
diff -c -3 -p -r1.87 common.opt
*** common.opt	1 Aug 2005 12:34:17 -0000	1.87
--- common.opt	31 Aug 2005 12:51:56 -0000
*************** fdump-unnumbered
*** 359,364 ****
--- 359,368 ----
  Common Report Var(flag_dump_unnumbered) VarExists
  Suppress output of instruction numbers and line number notes in debugging dumps
  
+ fearly-inlining
+ Common Report Var(flag_early_inlining) Init(1)
+ Perform early inlining
+ 
  feliminate-dwarf2-dups
  Common Report Var(flag_eliminate_dwarf2_dups)
  Perform DWARF2 duplicate elimination
*************** finline-functions
*** 480,488 ****
  Common Report Var(flag_inline_functions)
  Integrate simple functions into their callers
  
! fearly-inlining
! Common Report Var(flag_early_inlining) Init(1)
! Perform early inlining
  
  finline-limit-
  Common RejectNegative Joined UInteger
--- 484,492 ----
  Common Report Var(flag_inline_functions)
  Integrate simple functions into their callers
  
! finline-functions-called-once
! Common Report Var(flag_inline_functions_called_once) Init(1)
! Integrate functions called once into their callers
  
  finline-limit-
  Common RejectNegative Joined UInteger
Index: ipa-inline.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ipa-inline.c,v
retrieving revision 2.16
diff -c -3 -p -r2.16 ipa-inline.c
*** ipa-inline.c	29 Aug 2005 17:48:49 -0000	2.16
--- ipa-inline.c	31 Aug 2005 12:51:56 -0000
*************** cgraph_decide_inlining (void)
*** 944,952 ****
      }
  
    if (!flag_really_no_inline)
!     {
!       cgraph_decide_inlining_of_small_functions ();
  
        if (dump_file)
  	fprintf (dump_file, "\nDeciding on functions called once:\n");
  
--- 944,954 ----
      }
  
    if (!flag_really_no_inline)
!     cgraph_decide_inlining_of_small_functions ();
  
+   if (!flag_really_no_inline
+       && flag_inline_functions_called_once)
+     {
        if (dump_file)
  	fprintf (dump_file, "\nDeciding on functions called once:\n");
  
Index: doc/invoke.texi
===================================================================
RCS file: /cvs/gcc/gcc/gcc/doc/invoke.texi,v
retrieving revision 1.673
diff -c -3 -p -r1.673 invoke.texi
*** doc/invoke.texi	24 Aug 2005 20:28:07 -0000	1.673
--- doc/invoke.texi	31 Aug 2005 12:51:56 -0000
*************** Objective-C and Objective-C++ Dialects}.
*** 306,312 ****
  -fforce-addr  -ffunction-sections @gol
  -fgcse  -fgcse-lm  -fgcse-sm  -fgcse-las  -fgcse-after-reload @gol
  -floop-optimize -fcrossjumping  -fif-conversion  -fif-conversion2 @gol
! -finline-functions  -finline-limit=@var{n}  -fkeep-inline-functions @gol
  -fkeep-static-consts  -fmerge-constants  -fmerge-all-constants @gol
  -fmodulo-sched -fno-branch-count-reg @gol
  -fno-default-inline  -fno-defer-pop -floop-optimize2 -fmove-loop-invariants @gol
--- 306,313 ----
  -fforce-addr  -ffunction-sections @gol
  -fgcse  -fgcse-lm  -fgcse-sm  -fgcse-las  -fgcse-after-reload @gol
  -floop-optimize -fcrossjumping  -fif-conversion  -fif-conversion2 @gol
! -finline-functions  -finline-functions-called-once @gol
! -finline-limit=@var{n}  -fkeep-inline-functions @gol
  -fkeep-static-consts  -fmerge-constants  -fmerge-all-constants @gol
  -fmodulo-sched -fno-branch-count-reg @gol
  -fno-default-inline  -fno-defer-pop -floop-optimize2 -fmove-loop-invariants @gol
*************** assembler code in its own right.
*** 4480,4485 ****
--- 4481,4497 ----
  
  Enabled at level @option{-O3}.
  
+ @item -finline-functions-called-once
+ @opindex finline-functions-called-once
+ Integrate all functions called once into their callers.  The compiler
+ heuristically decides which functions are simple enough to be worth
+ integrating in this way.
+ 
+ If a calls to a given function is integrated, then the function is
+ not output as assembler code in its own right.
+ 
+ Enabled if @option{-funit-at-a-time} is enabled.
+ 
  @item -fearly-inlining
  @opindex fearly-inlining
  Inline functions marked by @code{always_inline} and functions whose body seems



More information about the Gcc-patches mailing list