changeset 111815:2278399d2eb9

Remove EXPLICIT_SIGN_EXTEND. * lisp.h (union Lisp_Object): Explicitly declare signedness of bit-field. (XINT): Remove variant for EXPLICIT_SIGN_EXTEND. * m/alpha.h (EXPLICIT_SIGN_EXTEND): Don't define. * m/amdx86-64.h (EXPLICIT_SIGN_EXTEND): Likewise. * m/ia64.h (EXPLICIT_SIGN_EXTEND): Likewise. * m/ibms390.h (EXPLICIT_SIGN_EXTEND): Likewise. * m/ibms390x.h (EXPLICIT_SIGN_EXTEND): Likewise. * m/iris4d.h (EXPLICIT_SIGN_EXTEND): Likewise. * m/m68k.h (EXPLICIT_SIGN_EXTEND): Likewise. * m/sparc.h (EXPLICIT_SIGN_EXTEND): Likewise. * m/template.h (EXPLICIT_SIGN_EXTEND): Likewise. * m/hp800.h: Remove file. * m/mips.h: Remove file. * CPP-DEFINES (EXPLICIT_SIGN_EXTEND): Remove.
author Andreas Schwab <schwab@linux-m68k.org>
date Fri, 03 Dec 2010 21:55:23 +0100
parents a8e337ba89d3
children e567154bfaa7 5d38259ed51d
files admin/CPP-DEFINES admin/ChangeLog src/ChangeLog src/lisp.h src/m/alpha.h src/m/amdx86-64.h src/m/hp800.h src/m/ia64.h src/m/ibms390.h src/m/ibms390x.h src/m/iris4d.h src/m/m68k.h src/m/mips.h src/m/sparc.h src/m/template.h
diffstat 15 files changed, 27 insertions(+), 133 deletions(-) [+]
line wrap: on
line diff
--- a/admin/CPP-DEFINES	Fri Dec 03 09:40:46 2010 -0800
+++ b/admin/CPP-DEFINES	Fri Dec 03 21:55:23 2010 +0100
@@ -62,7 +62,6 @@
 SYSTEM_TYPE
 
 ** Machine specific macros, decribed in detail in src/m/template.h
-EXPLICIT_SIGN_EXTEND
 LOAD_AVE_CVT
 LOAD_AVE_TYPE
 VIRT_ADDR_VARIES
--- a/admin/ChangeLog	Fri Dec 03 09:40:46 2010 -0800
+++ b/admin/ChangeLog	Fri Dec 03 21:55:23 2010 +0100
@@ -1,3 +1,7 @@
+2010-12-03  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* CPP-DEFINES (EXPLICIT_SIGN_EXTEND): Remove.
+
 2010-10-12  Glenn Morris  <rgm@gnu.org>
 
 	* notes/nextstep: Move here from ../nextstep/DEV-NOTES.
--- a/src/ChangeLog	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/ChangeLog	Fri Dec 03 21:55:23 2010 +0100
@@ -1,3 +1,20 @@
+2010-12-03  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* lisp.h (union Lisp_Object): Explicitly declare signedness of
+	bit-field.
+	(XINT): Remove variant for EXPLICIT_SIGN_EXTEND.
+	* m/alpha.h (EXPLICIT_SIGN_EXTEND): Don't define.
+	* m/amdx86-64.h (EXPLICIT_SIGN_EXTEND): Likewise.
+	* m/ia64.h (EXPLICIT_SIGN_EXTEND): Likewise.
+	* m/ibms390.h (EXPLICIT_SIGN_EXTEND): Likewise.
+	* m/ibms390x.h (EXPLICIT_SIGN_EXTEND): Likewise.
+	* m/iris4d.h (EXPLICIT_SIGN_EXTEND): Likewise.
+	* m/m68k.h (EXPLICIT_SIGN_EXTEND): Likewise.
+	* m/sparc.h (EXPLICIT_SIGN_EXTEND): Likewise.
+	* m/template.h (EXPLICIT_SIGN_EXTEND): Likewise.
+	* m/hp800.h: Remove file.
+	* m/mips.h: Remove file.
+
 2010-12-03  Jan Djärv  <jan.h.d@swipnet.se>
 
 	* nsterm.m (ns_dumpglyphs_image): If drawing cursor, fill background
--- a/src/lisp.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/lisp.h	Fri Dec 03 21:55:23 2010 +0100
@@ -267,7 +267,9 @@
 
     struct
       {
-	EMACS_INT val  : VALBITS;
+	/* Use explict signed, the signedness of a bit-field of type
+	   int is implementation defined.  */
+	signed EMACS_INT val  : VALBITS;
 	enum Lisp_Type type : GCTYPEBITS;
       } s;
     struct
@@ -290,7 +292,9 @@
     struct
       {
 	enum Lisp_Type type : GCTYPEBITS;
-	EMACS_INT val  : VALBITS;
+	/* Use explict signed, the signedness of a bit-field of type
+	   int is implementation defined.  */
+	signed EMACS_INT val  : VALBITS;
       } s;
     struct
       {
@@ -447,20 +451,8 @@
 #endif
 
 #define XHASH(a) ((a).i)
-
 #define XTYPE(a) ((enum Lisp_Type) (a).u.type)
-
-#ifdef EXPLICIT_SIGN_EXTEND
-/* Make sure we sign-extend; compilers have been known to fail to do so.
-   We additionally cast to EMACS_INT since it seems that some compilers
-   have been known to fail to do so, even though the bitfield is declared
-   as EMACS_INT already.  */
-#define XINT(a) ((((EMACS_INT) (a).s.val) << (BITS_PER_EMACS_INT - VALBITS)) \
-		 >> (BITS_PER_EMACS_INT - VALBITS))
-#else
 #define XINT(a) ((a).s.val)
-#endif /* EXPLICIT_SIGN_EXTEND */
-
 #define XUINT(a) ((a).u.val)
 
 #ifdef USE_LSB_TAG
--- a/src/m/alpha.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/alpha.h	Fri Dec 03 21:55:23 2010 +0100
@@ -30,13 +30,6 @@
 /* __alpha defined automatically */
 
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 #define LOAD_AVE_TYPE long
 
--- a/src/m/amdx86-64.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/amdx86-64.h	Fri Dec 03 21:55:23 2010 +0100
@@ -31,13 +31,6 @@
 #define EMACS_INT               long
 #define EMACS_UINT              unsigned long
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 #define LOAD_AVE_TYPE long
 
--- a/src/m/hp800.h	Fri Dec 03 09:40:46 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/* machine description file for hp9000 series 800 machines.
-
-Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-  2009, 2010  Free Software Foundation, Inc.
-
-This file is part of GNU Emacs.
-
-GNU Emacs is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-GNU Emacs is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
-/* arch-tag: 809436e6-1645-4b92-b40d-2de5d6e7227c
-   (do not change this comment) */
--- a/src/m/ia64.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/ia64.h	Fri Dec 03 21:55:23 2010 +0100
@@ -31,13 +31,6 @@
 #define EMACS_INT		long
 #define EMACS_UINT		unsigned long
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 #define LOAD_AVE_TYPE		long
 
--- a/src/m/ibms390.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/ibms390.h	Fri Dec 03 21:55:23 2010 +0100
@@ -19,13 +19,6 @@
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 #define LOAD_AVE_TYPE long
 
--- a/src/m/ibms390x.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/ibms390x.h	Fri Dec 03 21:55:23 2010 +0100
@@ -27,13 +27,6 @@
 #define EMACS_INT long
 #define EMACS_UINT unsigned long
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#undef EXPLICIT_SIGN_EXTEND
-
 /* On the 64 bit architecture, we can use 60 bits for addresses */
 #define VALBITS         60
 
--- a/src/m/iris4d.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/iris4d.h	Fri Dec 03 21:55:23 2010 +0100
@@ -19,13 +19,6 @@
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
 /* DATA_SEG_BITS forces extra bits to be or'd in with any pointers which
    were stored in a Lisp_Object (as Emacs uses fewer than 32 bits for
    the value field of a LISP_OBJECT).  */
--- a/src/m/m68k.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/m68k.h	Fri Dec 03 21:55:23 2010 +0100
@@ -24,13 +24,6 @@
 #define m68k
 #endif
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
 #ifdef GNU_LINUX
 #ifdef __ELF__
 #define DATA_SEG_BITS 0x80000000
--- a/src/m/mips.h	Fri Dec 03 09:40:46 2010 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/* m- file for Mips machines.
-
-Copyright (C) 1987, 1992, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
-  2007, 2008, 2009, 2010  Free Software Foundation, Inc.
-
-This file is part of GNU Emacs.
-
-GNU Emacs is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-GNU Emacs is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
-
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
-/* arch-tag: 8fd020ee-78a7-4d87-96ce-6129f52f7bee
-   (do not change this comment) */
--- a/src/m/sparc.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/sparc.h	Fri Dec 03 21:55:23 2010 +0100
@@ -20,10 +20,6 @@
 
 /* __sparc__ is defined by the compiler by default.  */
 
-/* XINT must explicitly sign-extend
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 #define LOAD_AVE_TYPE long
 
--- a/src/m/template.h	Fri Dec 03 09:40:46 2010 -0800
+++ b/src/m/template.h	Fri Dec 03 21:55:23 2010 +0100
@@ -22,13 +22,6 @@
    does not define it automatically.
    Ones defined so far include m68k and many others */
 
-/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
-   the 24-bit bit field into an int.  In other words, if bit fields
-   are always unsigned.
-
-   This flag only matters if you use USE_LISP_UNION_TYPE.  */
-#define EXPLICIT_SIGN_EXTEND
-
 /* Data type of load average, as read out of kmem.  */
 #define LOAD_AVE_TYPE long