lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
authorDoug Evans <devans@canuck.cygnus.com>
Tue, 4 Nov 1997 21:57:40 +0000 (21:57 +0000)
committerDoug Evans <devans@gcc.gnu.org>
Tue, 4 Nov 1997 21:57:40 +0000 (21:57 +0000)
* lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
(real_yylex): Record wide strings using target endianness, not host.

From-SVN: r16316

gcc/cp/ChangeLog
gcc/cp/lex.c

index 06808f5ec75bba49b9389c135828b6b500a4d049..ddedf65832a8bf1bfb0f7c5cf123b48a7f6e6a35 100644 (file)
@@ -1,3 +1,8 @@
+Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
+
+       * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
+       (real_yylex): Record wide strings using target endianness, not host.
+
 1997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
 
        * repo.c (rindex): Add decl unconditionally.
index 1f0e5e91a4e83c4ea8bdd10f08dcee217a6a995a..d45fe673bc9a4c35bd99bb8b31be2dccb7138a4e 100644 (file)
@@ -39,6 +39,13 @@ Boston, MA 02111-1307, USA.  */
 #include "obstack.h"
 #include "c-pragma.h"
 
+/* MULTIBYTE_CHARS support only works for native compilers.
+   ??? Ideally what we want is to model widechar support after
+   the current floating point support.  */
+#ifdef CROSS_COMPILE
+#undef MULTIBYTE_CHARS
+#endif
+
 #ifdef MULTIBYTE_CHARS
 #include <stdlib.h>
 #include <locale.h>
@@ -4064,15 +4071,9 @@ real_yylex ()
            bzero (widep + (len * WCHAR_BYTES), WCHAR_BYTES);
 #else
            {
-             union { long l; char c[sizeof (long)]; } u;
-             int big_endian;
              char *wp, *cp;
 
-             /* Determine whether host is little or big endian.  */
-             u.l = 1;
-             big_endian = u.c[sizeof (long) - 1];
-             wp = widep + (big_endian ? WCHAR_BYTES - 1 : 0);
-
+             wp = widep + (BYTES_BIG_ENDIAN ? WCHAR_BYTES - 1 : 0);
              bzero (widep, (p - token_buffer) * WCHAR_BYTES);
              for (cp = token_buffer + 1; cp < p; cp++)
                *wp = *cp, wp += WCHAR_BYTES;