[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 c911b27: Change GCALIGNMENT back to an integer li
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] emacs-26 c911b27: Change GCALIGNMENT back to an integer literal |
Date: |
Fri, 3 Nov 2017 05:21:01 -0400 (EDT) |
branch: emacs-26
commit c911b27aff8dd15cd47a063dc958e6dae74dde06
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>
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).
---
src/lisp.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/lisp.h b/src/lisp.h
index a71ba22..4dd4720 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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 c911b27: Change GCALIGNMENT back to an integer literal,
Paul Eggert <=