* search.c (compile_pattern): Use NILP when checking for nil.
+ * lisp.h (make_number) [!NO_UNION_TYPE && __GNUC__ >= 2 &&
+ __OPTIMIZE__]: Provide a GNU C macro version that handles
+ lisp-object unions.
+ (XSET) [!NO_UNION_TYPE]: Set the value field first, then the type
+ field, to better cope with ENABLE_CHECKING and calls that modify a
+ Lisp_Object using its old value.
+
2000-04-04 Gerd Moellmann <gerd@gnu.org>
* window.c (compare_window_configurations): Signal an error
#define XPNTR(a) ((a).u.val)
#define XSET(var, vartype, ptr) \
- (((var).s.type = ((char) (vartype))), ((var).s.val = ((int) (ptr))))
+ (((var).s.val = ((int) (ptr))), ((var).s.type = ((char) (vartype))))
+#if __GNUC__ >= 2 && defined (__OPTIMIZE__)
+#define make_number(N) \
+ (__extension__ ({ Lisp_Object _l; _l.s.val = (N); _l.s.type = Lisp_Int; _l; }))
+#else
extern Lisp_Object make_number ();
+#endif
/* During garbage collection, XGCTYPE must be used for extracting types
so that the mark bit is ignored. XMARKBIT access the markbit.