mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
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
This commit is contained in:
parent
d9aa57253d
commit
4277b0e926
@ -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 <b>exp</b> and hints the compiler that the value
|
||||
* of <b>exp</b> 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
|
||||
|
@ -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", \
|
||||
|
Loading…
Reference in New Issue
Block a user