]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: compiler: also enable __builtin_assume() for ASSUME()
authorWilly Tarreau <w@1wt.eu>
Tue, 17 Dec 2024 08:19:20 +0000 (09:19 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 17 Dec 2024 15:46:46 +0000 (16:46 +0100)
Clang apparently has __builtin_assume() which does exactly the same
as our macro, since at least v3.8. Let's enable it, in case it may
even better detect assumptions vs unreachable code.

include/haproxy/compiler.h

index dbafdac59eda99f8de66ce79e7ed6660be300f4d..c3a610aed964ee79cdd226d5ecfbeb1a4592f2aa 100644 (file)
  * know that some conditions are not supposed to happen. This can only be used
  * with compilers that support it, and we do not want to emit any static code
  * for other ones, so we use a construct that the compiler should easily be
- * able to optimize away.
+ * able to optimize away. Clang also has __builtin_assume() since at least 3.x.
  */
-#if __has_builtin(__builtin_unreachable)
+#if __has_builtin(__builtin_assume)
+# define ASSUME(expr) __builtin_assume(expr)
+#elif __has_builtin(__builtin_unreachable)
 # define ASSUME(expr) do { if (!(expr)) __builtin_unreachable(); } while (0)
 #else
 # define ASSUME(expr) do { if (!(expr)) break; } while (0)