diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/compiler_types.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h index e970f97a7f..72393a8c1a 100644 --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h @@ -129,13 +129,22 @@ struct ftrace_likely_data { #define __compiler_offsetof(a, b) __builtin_offsetof(a, b) /* + * Force always-inline if the user requests it so via the .config. * Prefer gnu_inline, so that extern inline functions do not emit an * externally visible function. This makes extern inline behave as per gnu89 * semantics rather than c99. This prevents multiple symbol definition errors * of extern inline functions at link time. * A lot of inline functions can cause havoc with function tracing. + * Do not use __always_inline here, since currently it expands to inline again + * (which would break users of __always_inline). */ -#define inline inline __gnu_inline __inline_maybe_unused notrace +#if !defined(CONFIG_OPTIMIZE_INLINING) +#define inline inline __attribute__((__always_inline__)) __gnu_inline \ + __inline_maybe_unused notrace +#else +#define inline inline __gnu_inline \ + __inline_maybe_unused notrace +#endif /* * gcc provides both __inline__ and __inline as alternate spellings of |