[PATCH][Middle-end][Version 3]Add a new option to control inlining only on static functions

Qing Zhao qing.zhao@oracle.com
Wed Sep 19 15:07:00 GMT 2018


thanks, Martin.

> On Sep 18, 2018, at 5:26 PM, Martin Sebor <msebor@gmail.com> wrote:
>> 
>> gcc/ChangeLog
>> 
>> +2018-09-18  Qing Zhao  <qing.zhao@oracle.com <mailto:qing.zhao@oracle.com>>
>> +
>> +	* cif-code.def (FUNCTION_EXTERN): New CIFCODE.
>> +	* common.opt (-finline-only-static): New option.
>> +	* doc/invoke.texi: Document -finline-only-static.
>> +	* ipa-inline.c (can_inline_edge_p): Control inlining based on
>> +	function's visibility.
> 
> Probably "linkage" would be a more fitting term here.
Okay.

> 
>> 
>> gcc/testsuite/ChangeLog
>> 
>> +2018-09-18  Qing Zhao  <qing.zhao@oracle.com <mailto:qing.zhao@oracle.com>>
>> +
>> +	* gcc.dg/inline_only_static.c: New test.
>> +
> 
> 
> diff --git a/gcc/cif-code.def b/gcc/cif-code.def
> index 19a7621..64b2b1a 100644
> --- a/gcc/cif-code.def
> +++ b/gcc/cif-code.def
> @@ -132,6 +132,12 @@
> DEFCIFCODE(USES_COMDAT_LOCAL, CIF_FINAL_ERROR,
> DEFCIFCODE(ATTRIBUTE_MISMATCH, CIF_FINAL_ERROR,
> 	   N_("function attribute mismatch"))
> 
> +/* We can't inline because the user requests only inlining static function
> +   but the function is external visible.  */
> 
> I suspect you meant: "only static functions" (plural) and
> "the function has external linkage" (as defined in the C and
> C++ standards).
Okay.

> 
> +DEFCIFCODE(FUNCTION_EXTERN, CIF_FINAL_ERROR,
> +	   N_("function is external visible when the user requests only"
> +	      " inlining static"))
> +
> 
> Here as well: either "function has external linkage" or "function
> is extern.”
Okay.
> 
> =======================================
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index ec12711..b6b0db5 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @ -8066,6 +8067,15 @@
> having large chains of nested wrapper functions.
> 
> Enabled by default.
> 
> +@item -finline-only-static
> +@opindex finline-only-static
> +By default, GCC inlines functions without considering whether they are static
> +or not. This flag guides inliner to only inline static functions.
> 
> Guides "the inliner" (missing article).
Okay.

> 
> +This option has any effect only when inlining itself is turned on by the
> +-finline-functions or -finline-small-fiunctions.
> 
> "by the -f... options."  (Missing "options") and
> -finline-small-functions (note the spelling of functions).

Okay.
> 
> +
> +Off by default.
> 
> I think the customary way to word it is: "Disabled by default."
> or "The finline-only-static option/flag is disabled/off by default”

Okay.

Qing
> 
> Martin



More information about the Gcc-patches mailing list