Parcourir la source

add a few gcc helpers, including [un]likely() and __deprecated

David Kalnischkies il y a 16 ans
Parent
commit
3d43e5390d
1 fichiers modifiés avec 22 ajouts et 0 suppressions
  1. 22 0
      apt-pkg/contrib/system.h

+ 22 - 0
apt-pkg/contrib/system.h

@@ -55,4 +55,26 @@
 #define CLRFLAG(v,f)	((v) &=~FLAG(f))
 #define	CHKFLAG(v,f)	((v) &  FLAG(f) ? true : false)
 
+// some nice optional GNUC features
+#if __GNUC__ >= 3
+        #define __must_check    __attribute__ ((warn_unused_result))
+        #define __deprecated    __attribute__ ((deprecated))
+        /* likely() and unlikely() can be used to mark boolean expressions
+           as (not) likely true which will help the compiler to optimise */
+        #define likely(x)       __builtin_expect (!!(x), 1)
+        #define unlikely(x)     __builtin_expect (!!(x), 0)
+#else
+        #define __must_check    /* no warn_unused_result */
+        #define __deprecated    /* no deprecated */
+        #define likely(x)       (x)
+        #define unlikely(x)     (x)
+#endif
+
+// cold functions are unlikely() to be called
+#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4
+        #define __cold  __attribute__ ((__cold__))
+#else
+        #define __cold  /* no cold marker */
+#endif
+
 #endif