Re: if (unlikely(...)) == unnecessary?
From: Chris Snook
Date: Wed Jan 28 2009 - 12:57:40 EST
Davide Libenzi wrote:
I noticed that GCC >= 3.3 (not tried the ones before) automatically
branches out the "if" code (and follow-through the "else" code, if there).
Is that a coincidence or a rule we can rely on going forward?
That's the default behavior, but there are lots of things that can cause it to
behave differently. Also, not all branch predictors behave the same way, and
some architectures use things like conditional instructions to fill their
pipeline bubbles, so it's still generally useful to have a real compiler hint in
fast-path code, even if it ends up being a no-op most of the time.
Most kernel code isn't so clock-cycle-critical that it needs these annotations.
If you're working on code that already has them, that's a good indication you
should probably use them too, but otherwise you don't need to worry about it
unless your code starts chewing up a lot of CPU time.
-- Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/