diff options
-rw-r--r-- | gcc/ChangeLog | 20 | ||||
-rw-r--r-- | gcc/c-common.c | 9 | ||||
-rw-r--r-- | gcc/config/alpha/freebsd.h | 3 | ||||
-rw-r--r-- | gcc/config/arm/freebsd.h | 3 | ||||
-rw-r--r-- | gcc/config/freebsd.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/386bsd.h | 2 | ||||
-rw-r--r-- | gcc/config/i386/beos-elf.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/bsd386.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/cygwin.h | 1 | ||||
-rw-r--r-- | gcc/config/i386/djgpp.h | 3 | ||||
-rw-r--r-- | gcc/config/i386/freebsd-aout.h | 2 | ||||
-rw-r--r-- | gcc/config/i386/i386-interix.h | 1 | ||||
-rw-r--r-- | gcc/config/i386/win32.h | 1 | ||||
-rw-r--r-- | gcc/config/ia64/freebsd.h | 3 | ||||
-rw-r--r-- | gcc/config/interix.h | 1 | ||||
-rw-r--r-- | gcc/config/mips/netbsd.h | 3 | ||||
-rw-r--r-- | gcc/config/rs6000/freebsd.h | 3 | ||||
-rw-r--r-- | gcc/config/sh/elf.h | 3 | ||||
-rw-r--r-- | gcc/config/sh/sh.h | 1 | ||||
-rw-r--r-- | gcc/config/sparc/freebsd.h | 3 | ||||
-rw-r--r-- | gcc/cppinit.c | 13 | ||||
-rw-r--r-- | gcc/cpplex.c | 4 | ||||
-rw-r--r-- | gcc/cpplib.h | 16 | ||||
-rw-r--r-- | gcc/defaults.h | 4 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 8 | ||||
-rw-r--r-- | gcc/system.h | 3 |
26 files changed, 47 insertions, 72 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0066f331c39..764836dcee2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2002-05-07 Neil Booth <neil@daikokuya.demon.co.uk> + + * c-common.c (c_common_init): Set options->unsigned_wchar. + * cppinit.c (cpp_create_reader): Default unsigned_wchar, + group target dependencies. + (init_builtins, cpp_handle_option): Update. + * cpplex.c (cpp_interpret_charconst): Update. + * cpplib.h (struct cpp_options): Add unsigned_wchar, rename + signed_char to unsigned_char, group target dependencies. + * defaults.h (WCHAR_UNSIGNED): Remove. + * system.h (WCHAR_UNSIGNED, MAX_CHAR_TYPE_SIZE): Poison. +config: + * freebsd.h, interix.h, alpha/freebsd.h, arm/freebsd.h, + i386/386bsd.h, i386/beos-elf.h, i386/bsd386.h, i386/cygwin.h, + i386/djgpp.h, i386/freebsd-aout.h, i386/i386-interix.h, + i386/win32.h, ia64/freebsd.h, mips/netbsd.h, rs6000/freebsd.h, + sh/elf.h, sh/sh.h, sparc/freebsd.h: Remove WCHAR_UNSIGNED. +doc: + * tm.texi: Remove MAX_CHAR_TYPE_SIZE. + 2002-05-07 Mark Mitchell <mark@codesourcery.com> * fixinc/inclhack.def (windiss_math1): New fix. diff --git a/gcc/c-common.c b/gcc/c-common.c index bc4b0b96d02..b23bcfe14dd 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -4310,6 +4310,15 @@ c_common_init (filename) options->char_precision = TYPE_PRECISION (char_type_node); options->int_precision = TYPE_PRECISION (integer_type_node); options->wchar_precision = TYPE_PRECISION (wchar_type_node); + options->unsigned_wchar = TREE_UNSIGNED (wchar_type_node); + /* This can be uncommented when 1) This all happens before + cpp_post_options() (needed for __CHAR_UNSIGNED__ builtin), which + in turn requires wchat_type_node to be set up properly by then, + and 2) tradcpp is integrated, so that the preprocessors don't + need to handle the command-line options and the specs in gcc.c + can be updated. + + options->unsigned_char = !flag_signed_char; */ options->warn_multichar = warn_multichar; diff --git a/gcc/config/alpha/freebsd.h b/gcc/config/alpha/freebsd.h index a8ace30c180..c5b8fc834bb 100644 --- a/gcc/config/alpha/freebsd.h +++ b/gcc/config/alpha/freebsd.h @@ -53,9 +53,6 @@ Boston, MA 02111-1307, USA. */ /* alpha.h gets this wrong for FreeBSD. We use the GCC defaults instead. */ #undef WCHAR_TYPE -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 diff --git a/gcc/config/arm/freebsd.h b/gcc/config/arm/freebsd.h index a9b268c0a48..0d417a22ded 100644 --- a/gcc/config/arm/freebsd.h +++ b/gcc/config/arm/freebsd.h @@ -41,9 +41,6 @@ Boston, MA 02111-1307, USA. */ /* We use the GCC defaults here. */ #undef WCHAR_TYPE -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 diff --git a/gcc/config/freebsd.h b/gcc/config/freebsd.h index 97b20c5232b..99ee6ae3aa6 100644 --- a/gcc/config/freebsd.h +++ b/gcc/config/freebsd.h @@ -76,9 +76,6 @@ Boston, MA 02111-1307, USA. */ #undef WCHAR_TYPE #define WCHAR_TYPE "int" -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #define MATH_LIBRARY_PROFILE "-lm_p" /* Code generation parameters. */ diff --git a/gcc/config/i386/386bsd.h b/gcc/config/i386/386bsd.h index e3bd08173c0..9745530abec 100644 --- a/gcc/config/i386/386bsd.h +++ b/gcc/config/i386/386bsd.h @@ -17,8 +17,6 @@ #undef WCHAR_TYPE #define WCHAR_TYPE "short unsigned int" -#define WCHAR_UNSIGNED 1 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 16 diff --git a/gcc/config/i386/beos-elf.h b/gcc/config/i386/beos-elf.h index 208e2744d9f..5b1d1d3ff22 100644 --- a/gcc/config/i386/beos-elf.h +++ b/gcc/config/i386/beos-elf.h @@ -65,9 +65,6 @@ Boston, MA 02111-1307, USA. */ #undef WCHAR_TYPE #define WCHAR_TYPE "short unsigned int" -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 1 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 16 diff --git a/gcc/config/i386/bsd386.h b/gcc/config/i386/bsd386.h index fb24327523c..eda80d213ed 100644 --- a/gcc/config/i386/bsd386.h +++ b/gcc/config/i386/bsd386.h @@ -10,9 +10,6 @@ #undef WCHAR_TYPE #define WCHAR_TYPE "int" -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h index efdb70e48a1..09d4e691d88 100644 --- a/gcc/config/i386/cygwin.h +++ b/gcc/config/i386/cygwin.h @@ -171,7 +171,6 @@ Boston, MA 02111-1307, USA. */ #define SIZE_TYPE "unsigned int" #define PTRDIFF_TYPE "int" -#define WCHAR_UNSIGNED 1 #define WCHAR_TYPE_SIZE 16 #define WCHAR_TYPE "short unsigned int" diff --git a/gcc/config/i386/djgpp.h b/gcc/config/i386/djgpp.h index 240877ca0e2..6e53e510b4f 100644 --- a/gcc/config/i386/djgpp.h +++ b/gcc/config/i386/djgpp.h @@ -159,9 +159,6 @@ Boston, MA 02111-1307, USA. */ /* Definitions for types and sizes. Wide characters are 16-bits long so Win32 compiler add-ons will be wide character compatible. */ -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 1 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 16 diff --git a/gcc/config/i386/freebsd-aout.h b/gcc/config/i386/freebsd-aout.h index 7b1d96a55ba..7f8a4fe811c 100644 --- a/gcc/config/i386/freebsd-aout.h +++ b/gcc/config/i386/freebsd-aout.h @@ -53,8 +53,6 @@ Boston, MA 02111-1307, USA. */ #undef WCHAR_TYPE #define WCHAR_TYPE "int" -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE BITS_PER_WORD diff --git a/gcc/config/i386/i386-interix.h b/gcc/config/i386/i386-interix.h index 40fc36e66e1..1043c5f2a49 100644 --- a/gcc/config/i386/i386-interix.h +++ b/gcc/config/i386/i386-interix.h @@ -44,7 +44,6 @@ Boston, MA 02111-1307, USA. */ #undef TARGET_CPU_DEFAULT #define TARGET_CPU_DEFAULT 2 /* 486 */ -#define WCHAR_UNSIGNED 1 #define WCHAR_TYPE_SIZE 16 #define WCHAR_TYPE "short unsigned int" diff --git a/gcc/config/i386/win32.h b/gcc/config/i386/win32.h index f6f32149d33..561118b558d 100644 --- a/gcc/config/i386/win32.h +++ b/gcc/config/i386/win32.h @@ -95,7 +95,6 @@ Boston, MA 02111-1307, USA. */ #define SIZE_TYPE "unsigned int" #define PTRDIFF_TYPE "int" -#define WCHAR_UNSIGNED 1 #define WCHAR_TYPE_SIZE 16 #define WCHAR_TYPE "short unsigned int" /* Currently we do not have the atexit() function, diff --git a/gcc/config/ia64/freebsd.h b/gcc/config/ia64/freebsd.h index 57bb391e270..34dc885905b 100644 --- a/gcc/config/ia64/freebsd.h +++ b/gcc/config/ia64/freebsd.h @@ -42,9 +42,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ We use the GCC defaults instead. */ #undef WCHAR_TYPE -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 diff --git a/gcc/config/interix.h b/gcc/config/interix.h index 778c9ae7473..9100e01adb7 100644 --- a/gcc/config/interix.h +++ b/gcc/config/interix.h @@ -100,7 +100,6 @@ for windows/multi thread */ #undef WCHAR_TYPE #undef WCHAR_TYPE_SIZE -#define WCHAR_UNSIGNED 1 #define WCHAR_TYPE "short unsigned int" #define WCHAR_TYPE_SIZE 16 diff --git a/gcc/config/mips/netbsd.h b/gcc/config/mips/netbsd.h index 95d3901df94..c625b9d2cdb 100644 --- a/gcc/config/mips/netbsd.h +++ b/gcc/config/mips/netbsd.h @@ -185,9 +185,6 @@ Boston, MA 02111-1307, USA. */ #undef WCHAR_TYPE #define WCHAR_TYPE "int" -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 diff --git a/gcc/config/rs6000/freebsd.h b/gcc/config/rs6000/freebsd.h index e4b9fc52fc0..e4b6482798e 100644 --- a/gcc/config/rs6000/freebsd.h +++ b/gcc/config/rs6000/freebsd.h @@ -48,9 +48,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* rs6000.h gets this wrong for FreeBSD. We use the GCC defaults instead. */ #undef WCHAR_TYPE -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 diff --git a/gcc/config/sh/elf.h b/gcc/config/sh/elf.h index 246a2ff48e3..716f494229a 100644 --- a/gcc/config/sh/elf.h +++ b/gcc/config/sh/elf.h @@ -30,9 +30,6 @@ Boston, MA 02111-1307, USA. */ #undef SIZE_TYPE #undef PTRDIFF_TYPE -/* And one that is defined in sh.h and should be undefined in svr4.h... */ -#undef WCHAR_UNSIGNED - /* Be ELF-like. */ /* TODO: convert includes to ${tm_file} list in config.gcc. */ #include "dbxelf.h" diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 669427064ef..5a5094e1c9d 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -2522,7 +2522,6 @@ while (0) #define WCHAR_TYPE "short unsigned int" #define WCHAR_TYPE_SIZE 16 -#define WCHAR_UNSIGNED 1 #define SH_ELF_WCHAR_TYPE "long int" diff --git a/gcc/config/sparc/freebsd.h b/gcc/config/sparc/freebsd.h index d50de845733..e966090eafb 100644 --- a/gcc/config/sparc/freebsd.h +++ b/gcc/config/sparc/freebsd.h @@ -50,9 +50,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ We use the GCC defaults instead. */ #undef WCHAR_TYPE -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 diff --git a/gcc/cppinit.c b/gcc/cppinit.c index 1d570b0e98a..dae4ffe602c 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -494,11 +494,6 @@ cpp_create_reader (lang) CPP_OPTION (pfile, tabstop) = 8; CPP_OPTION (pfile, operator_names) = 1; CPP_OPTION (pfile, warn_endif_labels) = 1; -#if DEFAULT_SIGNED_CHAR - CPP_OPTION (pfile, signed_char) = 1; -#else - CPP_OPTION (pfile, signed_char) = 0; -#endif CPP_OPTION (pfile, pending) = (struct cpp_pending *) xcalloc (1, sizeof (struct cpp_pending)); @@ -510,6 +505,8 @@ cpp_create_reader (lang) CPP_OPTION (pfile, char_precision) = CHAR_BIT; CPP_OPTION (pfile, wchar_precision) = CHAR_BIT * sizeof (int); CPP_OPTION (pfile, int_precision) = CHAR_BIT * sizeof (int); + CPP_OPTION (pfile, unsigned_char) = !DEFAULT_SIGNED_CHAR; + CPP_OPTION (pfile, unsigned_wchar) = 1; /* It's simplest to just create this struct whether or not it will be needed. */ @@ -779,7 +776,7 @@ init_builtins (pfile) else if (CPP_OPTION (pfile, c99)) _cpp_define_builtin (pfile, "__STDC_VERSION__ 199901L"); - if (CPP_OPTION (pfile, signed_char) == 0) + if (CPP_OPTION (pfile, unsigned_char)) _cpp_define_builtin (pfile, "__CHAR_UNSIGNED__ 1"); if (CPP_OPTION (pfile, lang) == CLK_STDC89 @@ -1450,10 +1447,10 @@ cpp_handle_option (pfile, argc, argv, ignore) CPP_OPTION (pfile, show_column) = 0; break; case OPT_fsigned_char: - CPP_OPTION (pfile, signed_char) = 1; + CPP_OPTION (pfile, unsigned_char) = 0; break; case OPT_funsigned_char: - CPP_OPTION (pfile, signed_char) = 0; + CPP_OPTION (pfile, unsigned_char) = 1; break; case OPT_ftabstop: /* Silently ignore empty string, non-longs and silly values. */ diff --git a/gcc/cpplex.c b/gcc/cpplex.c index a9f14948133..39afc5905a9 100644 --- a/gcc/cpplex.c +++ b/gcc/cpplex.c @@ -1883,13 +1883,13 @@ cpp_interpret_charconst (pfile, token, pchars_seen, unsignedp) { width = CPP_OPTION (pfile, char_precision); max_chars = CPP_OPTION (pfile, int_precision) / width; - unsigned_p = CPP_OPTION (pfile, signed_char) == 0; + unsigned_p = CPP_OPTION (pfile, unsigned_char); } else { width = CPP_OPTION (pfile, wchar_precision); max_chars = 1; - unsigned_p = WCHAR_UNSIGNED; + unsigned_p = CPP_OPTION (pfile, unsigned_wchar); } if (width < BITS_PER_CPPCHAR_T) diff --git a/gcc/cpplib.h b/gcc/cpplib.h index ca0eee2bd63..1b7da3794f3 100644 --- a/gcc/cpplib.h +++ b/gcc/cpplib.h @@ -251,19 +251,12 @@ struct cpp_options /* -fleading_underscore sets this to "_". */ const char *user_label_prefix; - /* Precision for target CPP arithmetic, target characters, target - ints and target wide characters, respectively. */ - size_t precision, char_precision, int_precision, wchar_precision; - /* The language we're preprocessing. */ enum c_lang lang; /* Non-0 means -v, so print the full set of include dirs. */ unsigned char verbose; - /* Nonzero means chars are signed. */ - unsigned char signed_char; - /* Nonzero means use extra default include directories for C++. */ unsigned char cplusplus; @@ -395,6 +388,15 @@ struct cpp_options options. Stand-alone CPP should then bail out after option parsing; drivers might want to continue printing help. */ unsigned char help_only; + + /* Target-specific features set by the front end or client. */ + + /* Precision for target CPP arithmetic, target characters, target + ints and target wide characters, respectively. */ + size_t precision, char_precision, int_precision, wchar_precision; + + /* Nonzero means chars (wide chars) are unsigned. */ + unsigned char unsigned_char, unsigned_wchar; }; /* Call backs. */ diff --git a/gcc/defaults.h b/gcc/defaults.h index 702800ad7ab..69c95e7d9e9 100644 --- a/gcc/defaults.h +++ b/gcc/defaults.h @@ -318,10 +318,6 @@ do { \ #define WCHAR_TYPE_SIZE INT_TYPE_SIZE #endif -#ifndef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 -#endif - #ifndef FLOAT_TYPE_SIZE #define FLOAT_TYPE_SIZE BITS_PER_WORD #endif diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index c41c0984b2c..b70ae4862a4 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -1516,14 +1516,6 @@ A C expression for the size in bits of the type @code{char} on the target machine. If you don't define this, the default is @code{BITS_PER_UNIT}. -@findex MAX_CHAR_TYPE_SIZE -@item MAX_CHAR_TYPE_SIZE -Maximum number for the size in bits of the type @code{char} on the -target machine. If this is undefined, the default is -@code{CHAR_TYPE_SIZE}. Otherwise, it is the constant value that is the -largest value that @code{CHAR_TYPE_SIZE} can have at run-time. This is -used in @code{cpp}. - @findex BOOL_TYPE_SIZE @item BOOL_TYPE_SIZE A C expression for the size in bits of the C++ type @code{bool} and diff --git a/gcc/system.h b/gcc/system.h index 55914f05f45..e12585b3fb0 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -594,7 +594,8 @@ typedef char _Bool; SET_DEFAULT_TYPE_ATTRIBUTES SET_DEFAULT_DECL_ATTRIBUTES \ MERGE_MACHINE_TYPE_ATTRIBUTES MERGE_MACHINE_DECL_ATTRIBUTES \ MD_INIT_BUILTINS MD_EXPAND_BUILTIN ASM_OUTPUT_CONSTRUCTOR \ - ASM_OUTPUT_DESTRUCTOR SIGNED_CHAR_SPEC + ASM_OUTPUT_DESTRUCTOR SIGNED_CHAR_SPEC MAX_CHAR_TYPE_SIZE \ + WCHAR_UNSIGNED /* And other obsolete target macros, or macros that used to be in target headers and were not used, and may be obsolete or may never have |