lkml.org 
[lkml]   [2003]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] 2.4.22pre10: {,un}likely_p() macros for pointers
Willy Tarreau wrote:
> > I looked at the assembly (ppc, gcc 3.2.3) and didn't
> > see any overhead.
>
> same here on x86, gcc-2.95.3 and gcc-3.3.1. The compiler is smart enough not
> to add several intermediate tests for !!(x).

What I recall is no additional tests, but the different forms affected
the compilers choice of instructions on x86, making one form better
than another. Unfortunately I don't recall what that was, or what
test it showed up in :(

> I agree (I didn't think about pointers, BTW). But what I meant is that we
> don't need the result to be precisely 1, but we need it to be something the
> compiler interpretes as different from zero, to match the condition. So it
> should be cleaner to always check against 0 which is also OK for pointers,
> whatever their type (according to Chip's link) :
>
> likely => __builtin_expect(!(x), 0)

This will break "if (likely(p)) { ... }"

> unlikely => __builtin_expect((x), 0)

This will give a warning with "if (unlikely(p)) { ... }"

-- Jamie
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:47    [W:0.125 / U:3.740 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site