compilers: Introduce options for forcing inlining on SPL/TPL

There are cases where when we allow the compiler to decide about making
inline decisions rather than forcing them it can save us space.

For now, we keep the default values for inlining that we have had
historically.

Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Tom Rini 2020-05-14 08:30:08 -04:00
parent 1f1a0f3db3
commit 72c4d40d8c
2 changed files with 22 additions and 2 deletions

22
Kconfig
View file

@ -65,7 +65,27 @@ config CC_OPTIMIZE_FOR_SIZE
This option is enabled by default for U-Boot. This option is enabled by default for U-Boot.
config OPTIMIZE_INLINING config OPTIMIZE_INLINING
bool "Allow compiler to uninline functions marked 'inline'" bool "Allow compiler to uninline functions marked 'inline' in full U-Boot"
default n
help
This option determines if U-Boot forces gcc to inline the functions
developers have marked 'inline'. Doing so takes away freedom from gcc to
do what it thinks is best, which is desirable in some cases for size
reasons.
config SPL_OPTIMIZE_INLINING
bool "Allow compiler to uninline functions marked 'inline' in SPL"
depends on SPL
default n
help
This option determines if U-Boot forces gcc to inline the functions
developers have marked 'inline'. Doing so takes away freedom from gcc to
do what it thinks is best, which is desirable in some cases for size
reasons.
config TPL_OPTIMIZE_INLINING
bool "Allow compiler to uninline functions marked 'inline' in TPL"
depends on TPL
default n default n
help help
This option determines if U-Boot forces gcc to inline the functions This option determines if U-Boot forces gcc to inline the functions

View file

@ -138,7 +138,7 @@ struct ftrace_likely_data {
* Do not use __always_inline here, since currently it expands to inline again * Do not use __always_inline here, since currently it expands to inline again
* (which would break users of __always_inline). * (which would break users of __always_inline).
*/ */
#if !defined(CONFIG_OPTIMIZE_INLINING) #if !CONFIG_IS_ENABLED(OPTIMIZE_INLINING)
#define inline inline __attribute__((__always_inline__)) __gnu_inline \ #define inline inline __attribute__((__always_inline__)) __gnu_inline \
__inline_maybe_unused notrace __inline_maybe_unused notrace
#else #else