lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <49809C2E.3000005@redhat.com>
Date:	Wed, 28 Jan 2009 12:55:58 -0500
From:	Chris Snook <csnook@...hat.com>
To:	Davide Libenzi <davidel@...ilserver.org>
CC:	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: if (unlikely(...)) == unnecessary?

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@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ