All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
hints.h File Reference
+ Include dependency graph for hints.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


#define ARCH_LIKELY(x)   (x)
#define ARCH_UNLIKELY(x)   (x)

Detailed Description

Compiler hints.

ARCH_LIKELY(bool-expr) and ARCH_UNLIKELY(bool-expr) will evaluate to the value of bool-expr but will also emit compiler intrinsics providing hints for branch prediction if the compiler has such intrinsics. It is advised that you only use these in cases where you empirically know the outcome of bool-expr to a very high degree of certainty. For example, fatal-error cases, invariants, first-time initializations, etc.

Definition in file hints.h.

Macro Definition Documentation


ARCH_GUARANTEE_TO_COMPILER(bool-expr) informs the compiler about value constraints to help it make better optimizations. It is of critical importance that the guarantee is in fact always 100% true, otherwise the compiler may generate invalid code.

This can be useful, for example, when an out-of-line function call could potentially change a value previously known to compiler, but does not, based on code invariants.

This hint is best used after investigating generated assembly code and seeing useless/unreachable code being generated that can be prevented with this hint. This hint is often times not necessary, and should never be inserted on a whim. The compiler will run with the promises we make it to the ends of the earth, and this can lead to surprising results (e.g. undefined behavior) if we are not careful.

Definition at line 80 of file hints.h.

#define ARCH_LIKELY (   x)    (x)

Definition at line 46 of file hints.h.

#define ARCH_UNLIKELY (   x)    (x)

Definition at line 47 of file hints.h.