+2013-10-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lisp.h (eassert): Don't use 'assume'.
+ Sometimes 'assume' wins in performance, and sometimes it loses,
+ so it shouldn't be used all the time. Perhaps we need two
+ flavors of 'eassert', one for where 'assume' is far more likely
+ to help or to hurt; but that can be done later.
+ Problem reported by Dmitry Andipov in
+ <http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00276.html>.
+ Also, don't include <verify.h>; no longer needed.
+
2013-10-09 Glenn Morris <rgm@gnu.org>
* eval.c (Fcond): Doc tweak.
#include <limits.h>
#include <intprops.h>
-#include <verify.h>
INLINE_HEADER_BEGIN
/* Extra internal type checking? */
/* Define an Emacs version of 'assert (COND)'. COND should be free of
- side effects; it may be evaluated zero or more times. If COND is false,
- Emacs reliably crashes if ENABLE_CHECKING is defined and behavior
- is undefined if not. The compiler may assume COND while optimizing. */
+ side effects; it may be evaluated zero or more times. */
#ifndef ENABLE_CHECKING
-# define eassert(cond) assume (cond)
+# define eassert(cond) ((void) (0 && (cond))) /* Check that COND compiles. */
#else /* ENABLE_CHECKING */
extern _Noreturn void die (const char *, const char *, int);
# define eassert(cond) \
(suppress_checking || (cond) \
- ? assume (cond) \
+ ? (void) 0 \
: die (# cond, __FILE__, __LINE__))
#endif /* ENABLE_CHECKING */