From 433d6b398610cadfd7ee1e73165b72b3a6c5009d Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sat, 8 Mar 2014 23:13:26 +0100 Subject: [PATCH] libgfortran.h (unlikely, likely): Add usage comment. 2014-03-08 Tobias Burnus * libgfortran.h (unlikely, likely): Add usage comment. From-SVN: r208434 --- libgfortran/ChangeLog | 4 ++++ libgfortran/libgfortran.h | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 4005df08919..c82daa2564f 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,7 @@ +2014-03-08 Tobias Burnus + + * libgfortran.h (unlikely, likely): Add usage comment. + 2014-03-08 Dominique d'Humieres PR libgfortran/60128 diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h index d7e15add3ca..0d6f432a24b 100644 --- a/libgfortran/libgfortran.h +++ b/libgfortran/libgfortran.h @@ -97,6 +97,16 @@ typedef off_t gfc_offset; #define NULL (void *) 0 #endif + +/* The following macros can be used to annotate conditions which are likely or + unlikely to be true. Avoid using them when a condition is only slightly + more likely/less unlikely than average to avoid the performance penalties of + branch misprediction. In addition, as __builtin_expect overrides the compiler + heuristic, do not use in conditions where one of the branches ends with a + call to a function with __attribute__((noreturn)): the compiler internal + heuristic will mark this branch as much less likely as unlikely() would + do. */ + #ifndef __GNUC__ #define __attribute__(x) #define likely(x) (x)