summaryrefslogtreecommitdiff
path: root/scripts/atomic/fallbacks/sub_and_test
diff options
context:
space:
mode:
authorMarco Elver <elver@google.com>2019-11-26 15:04:05 +0100
committerPaul E. McKenney <paulmck@kernel.org>2020-01-07 07:47:23 -0800
commit944bc9cca7c392879fa2c3f911bbef7422707679 (patch)
tree2cface9e7cb16c595d2b4c758eb179f7d7360555 /scripts/atomic/fallbacks/sub_and_test
parentc020395b6634b7a674ee6aa91a971b08e268caba (diff)
downloadlinux-944bc9cca7c392879fa2c3f911bbef7422707679.tar.gz
linux-944bc9cca7c392879fa2c3f911bbef7422707679.tar.bz2
linux-944bc9cca7c392879fa2c3f911bbef7422707679.zip
asm-generic/atomic: Use __always_inline for fallback wrappers
Use __always_inline for atomic fallback wrappers. When building for size (CC_OPTIMIZE_FOR_SIZE), some compilers appear to be less inclined to inline even relatively small static inline functions that are assumed to be inlinable such as atomic ops. This can cause problems, for example in UACCESS regions. While the fallback wrappers aren't pure wrappers, they are trivial nonetheless, and the function they wrap should determine the final inlining policy. For x86 tinyconfig we observe: - vmlinux baseline: 1315988 - vmlinux with patch: 1315928 (-60 bytes) Suggested-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Marco Elver <elver@google.com> Acked-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'scripts/atomic/fallbacks/sub_and_test')
-rwxr-xr-xscripts/atomic/fallbacks/sub_and_test2
1 files changed, 1 insertions, 1 deletions
diff --git a/scripts/atomic/fallbacks/sub_and_test b/scripts/atomic/fallbacks/sub_and_test
index 289ef17a2d7a..6cfe4ed49746 100755
--- a/scripts/atomic/fallbacks/sub_and_test
+++ b/scripts/atomic/fallbacks/sub_and_test
@@ -8,7 +8,7 @@ cat <<EOF
* true if the result is zero, or false for all
* other cases.
*/
-static inline bool
+static __always_inline bool
${atomic}_sub_and_test(${int} i, ${atomic}_t *v)
{
return ${atomic}_sub_return(i, v) == 0;