From: Nick Mathewson Date: Thu, 11 Dec 2008 20:23:46 +0000 (+0000) Subject: Remove some cargo-cult gcc hacks around tor_assert and predict_unlikely; instead... X-Git-Tag: tor-0.2.1.9-alpha~111 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4277b0e9265ca24d324e210ded904f1588b24df1;p=thirdparty%2Ftor.git Remove some cargo-cult gcc hacks around tor_assert and predict_unlikely; instead, use the standard convert-to-boolean hack of "svn st" svn:r17597 --- diff --git a/src/common/compat.h b/src/common/compat.h index df3cfba952..336c8cd136 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -143,7 +143,7 @@ extern INLINE double U64_TO_DBL(uint64_t x) { * except that it tells the compiler that the branch will be taken most of the * time. This can generate slightly better code with some CPUs. */ -#define PREDICT_LIKELY(exp) __builtin_expect((exp), 1) +#define PREDICT_LIKELY(exp) __builtin_expect(!!(exp), 1) /** Macro: Evaluates to exp and hints the compiler that the value * of exp will probably be false. * @@ -151,7 +151,7 @@ extern INLINE double U64_TO_DBL(uint64_t x) { * except that it tells the compiler that the branch will usually not be * taken. This can generate slightly better code with some CPUs. */ -#define PREDICT_UNLIKELY(exp) __builtin_expect((exp), 0) +#define PREDICT_UNLIKELY(exp) __builtin_expect(!!(exp), 0) #else #define ATTR_NORETURN #define ATTR_PURE diff --git a/src/common/util.h b/src/common/util.h index 4f8182949c..e8d78c9847 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -41,18 +41,10 @@ #error "Sorry; we don't support building with NDEBUG." #endif -#if defined(__GNUC__) -/* Give an int-valued version of !x that won't confuse PREDICT_UNLIKELY, - * which does poorly with pointer types on some versions of glibc. */ -#define IS_FALSE_AS_INT(x) ((x) == ((typeof(x)) 0)) -#else -#define IS_FALSE_AS_INT(x) !(x) -#endif - /** Like assert(3), but send assertion failures to the log as well as to * stderr. */ #define tor_assert(expr) STMT_BEGIN \ - if (PREDICT_UNLIKELY(IS_FALSE_AS_INT(expr))) { \ + if (PREDICT_UNLIKELY(!(expr))) { \ log(LOG_ERR, LD_BUG, "%s:%d: %s: Assertion %s failed; aborting.", \ _SHORT_FILE_, __LINE__, __func__, #expr); \ fprintf(stderr,"%s:%d %s: Assertion %s failed; aborting.\n", \