Hi,

this is the 2nd version of the patch to add a new first-class option

-finline-only-static

to guide inlining only on static functions.

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

  Off by default.

The major purpose of this option is to provide a way for the user to disable 
inlining of global functions.
this is mainly to help online patching users to control the memory consumption 
and ease the debugging.

please take a look and let me know any comments and suggestions:

thanks a lot.

Qing

gcc/ChangeLog

+2018-09-13  Qing Zhao  <qing.z...@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. 

gcc/testsuite/ChangeLog

+2018-09-13  Qing Zhao  <qing.z...@oracle.com>
+
+       * gcc.dg/inline_only_static.c: New test.
+

Attachment: 0001-Add-a-new-option-to-limit-inlining-on-static-functio.patch
Description: Binary data


> On Sep 11, 2018, at 10:12 AM, Qing Zhao <qing.z...@oracle.com> wrote:
> 
> Hi, 
> 
> This is a simple patch to add a new first-class option 
> 
> -finline-visibility={all|extern|static}
> 
> to finer control inlining based on function’s visibility. 
> 
> '-finline-visibility=[all|extern|static]'
>     By default, GCC inlines functions without considering their
>     visibility.  This flag allows finer control of inlining based on
>     their visibility.
> 
>     The value 'extern' tells the compiler to only inline functions with
>     external visibility.  The value 'static' tells the compiler to only
>     inline functions with static visibility.  The value 'all' tells the
>     compilers to inline functions without considering their visibility.
> 
>     The default value of '-finline-visibility' is 'all'.
> 
> The major purpose of this option is to provide a way for the user 
> to finer choose the inline candidates based on function’s visibility.
> For example, some online patching users might want to limit the inlining
> to only static functions to avoid patching the callers of global functions
> in order to control the memory consumption caused by online patching. 
> 
> let me know any comments and suggestions.
> 
> thanks.
> 
> Qing

Reply via email to