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/