From: Paul Eggert Date: Fri, 3 Nov 2017 09:20:15 +0000 (-0700) Subject: Change GCALIGNMENT back to an integer literal X-Git-Tag: emacs-26.0.91~403 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c911b27aff8dd15cd47a063dc958e6dae74dde06;p=emacs.git Change GCALIGNMENT back to an integer literal * src/lisp.h (GCALIGNMENT): Change it back to a macro that expands to a literal integer constant, for older GCC. I had mistakenly thought that only MSVC had the problem. Problem repored by Eli Zaretskii (Bug#29040#69). --- diff --git a/src/lisp.h b/src/lisp.h index a71ba22618e..4dd472053bf 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -233,7 +233,9 @@ extern bool suppress_checking EXTERNALLY_VISIBLE; enum Lisp_Bits { - GCALIGNMENT = 1 << GCTYPEBITS, + /* 2**GCTYPEBITS. This must be a macro that expands to a literal + integer constant, for older versions of GCC (through at least 4.9). */ +#define GCALIGNMENT 8 /* Number of bits in a Lisp_Object value, not counting the tag. */ VALBITS = EMACS_INT_WIDTH - GCTYPEBITS, @@ -245,6 +247,10 @@ enum Lisp_Bits FIXNUM_BITS = VALBITS + 1 }; +#if GCALIGNMENT != 1 << GCTYPEBITS +# error "GCALIGNMENT and GCTYPEBITS are inconsistent" +#endif + /* The maximum value that can be stored in a EMACS_INT, assuming all bits other than the type bits contribute to a nonnegative signed value. This can be used in #if, e.g., '#if USE_LSB_TAG' below expands to an