[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Use unlikely() in BUG_ON()/WARN_ON()
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1238502132 -3600 # Node ID 2fa1d38097dadddb866a4a17ad68476e9e9a7081 # Parent 4b602fff137b8c9ccd23e17c3df6423341e7757d Use unlikely() in BUG_ON()/WARN_ON() -fno-reorder-blocks was added in c/s 1712, when x86-64 just started to become enabled. The reason it got added is entirely unclear to me, and it prevents the intended effect of unlikely() constructs (in particular the ones added here) of moving out of line code which is expected to never get executed, as well as using forward branches (which are statically predicted taken by various processors' branch prediction units) preferably to reach infrequently executed code. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> --- xen/arch/x86/Rules.mk | 2 +- xen/include/xen/lib.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff -r 4b602fff137b -r 2fa1d38097da xen/arch/x86/Rules.mk --- a/xen/arch/x86/Rules.mk Tue Mar 31 13:21:36 2009 +0100 +++ b/xen/arch/x86/Rules.mk Tue Mar 31 13:22:12 2009 +0100 @@ -42,7 +42,7 @@ endif endif ifeq ($(TARGET_SUBARCH),x86_64) -CFLAGS += -mno-red-zone -fpic -fno-reorder-blocks +CFLAGS += -mno-red-zone -fpic CFLAGS += -fno-asynchronous-unwind-tables # -fvisibility=hidden reduces -fpic cost, if it's available ifneq ($(call cc-option,$(CC),-fvisibility=hidden,n),n) diff -r 4b602fff137b -r 2fa1d38097da xen/include/xen/lib.h --- a/xen/include/xen/lib.h Tue Mar 31 13:21:36 2009 +0100 +++ b/xen/include/xen/lib.h Tue Mar 31 13:22:12 2009 +0100 @@ -12,8 +12,8 @@ void __bug(char *file, int line) __attri void __bug(char *file, int line) __attribute__((noreturn)); void __warn(char *file, int line); -#define BUG_ON(p) do { if (p) BUG(); } while (0) -#define WARN_ON(p) do { if (p) WARN(); } while (0) +#define BUG_ON(p) do { if (unlikely(p)) BUG(); } while (0) +#define WARN_ON(p) do { if (unlikely(p)) WARN(); } while (0) /* Force a compilation error if condition is true */ #define BUILD_BUG_ON(condition) ((void)sizeof(struct { int:-!!(condition); })) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |