From 87179c7a6e2a210ea57951d444a3055e883d08fa Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Tue, 1 Aug 2023 20:18:33 -0400 Subject: Update bcachefs sources to 33a60d9b05 bcachefs: Assorted fixes for clang --- include/linux/math.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'include/linux/math.h') diff --git a/include/linux/math.h b/include/linux/math.h index db7cdd23..85c8c8aa 100644 --- a/include/linux/math.h +++ b/include/linux/math.h @@ -153,4 +153,19 @@ static inline u32 int_sqrt64(u64 x) } #endif +#define abs(x) __abs_choose_expr(x, long long, \ + __abs_choose_expr(x, long, \ + __abs_choose_expr(x, int, \ + __abs_choose_expr(x, short, \ + __abs_choose_expr(x, char, \ + __builtin_choose_expr( \ + __builtin_types_compatible_p(typeof(x), char), \ + (char)({ signed char __x = (x); __x<0?-__x:__x; }), \ + ((void)0))))))) + +#define __abs_choose_expr(x, type, other) __builtin_choose_expr( \ + __builtin_types_compatible_p(typeof(x), signed type) || \ + __builtin_types_compatible_p(typeof(x), unsigned type), \ + ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other) + #endif /* _LINUX_MATH_H */ -- cgit v1.2.3