diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1999-09-23 21:03:53 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1999-09-23 17:03:53 -0400 |
commit | 12a39b12648fdd1675757518450720d16ef24793 (patch) | |
tree | f1348bbe949f8cba90abd610eefdbe630bdaa2c1 | |
parent | e689ae67255aca55fddb4b01b0b9ded6d3f151ea (diff) | |
download | gcc-12a39b12648fdd1675757518450720d16ef24793.zip gcc-12a39b12648fdd1675757518450720d16ef24793.tar.gz gcc-12a39b12648fdd1675757518450720d16ef24793.tar.bz2 |
toplev.c (documented_lang_options): Add -fshort-wchar.
* toplev.c (documented_lang_options): Add -fshort-wchar.
* c-decl.c (c_decode_option): Likewise.
(init_decl_processing): If -fshort-wchar, use 'short unsigned int'
for wchar_t.
* c-common.c, c-lex.c: Get WCHAR_TYPE_SIZE from wchar_type_node.
* gcc.c (default_compilers): If -fshort-wchar,
override __WCHAR_TYPE__.
* tm.texi (C Dialect Options): Add -fshort-wchar.
From-SVN: r29638
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/c-common.c | 9 | ||||
-rw-r--r-- | gcc/c-decl.c | 14 | ||||
-rw-r--r-- | gcc/c-lex.c | 9 | ||||
-rw-r--r-- | gcc/gcc.c | 8 | ||||
-rw-r--r-- | gcc/toplev.c | 2 |
6 files changed, 35 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f2f868d..aea059c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ Thu Sep 23 13:40:02 1999 Jason Merrill <jason@yorick.cygnus.com> + * toplev.c (documented_lang_options): Add -fshort-wchar. + * c-decl.c (c_decode_option): Likewise. + (init_decl_processing): If -fshort-wchar, use 'short unsigned int' + for wchar_t. + * c-common.c, c-lex.c: Get WCHAR_TYPE_SIZE from wchar_type_node. + * gcc.c (default_compilers): If -fshort-wchar, + override __WCHAR_TYPE__. + * tm.texi (C Dialect Options): Add -fshort-wchar. + * dwarf2out.c (output_aranges): Use DW_AT_location to find the symbol for a variable. diff --git a/gcc/c-common.c b/gcc/c-common.c index cd2baab..2fa89e6 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -38,13 +38,8 @@ cpp_options parse_options; enum cpp_token cpp_token; #endif -#ifndef WCHAR_TYPE_SIZE -#ifdef INT_TYPE_SIZE -#define WCHAR_TYPE_SIZE INT_TYPE_SIZE -#else -#define WCHAR_TYPE_SIZE BITS_PER_WORD -#endif -#endif +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE TYPE_PRECISION (wchar_type_node) /* The following symbols are subsumed in the c_global_trees array, and listed here individually for documentation purposes. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 75b8ee0..b2f32c6 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -304,6 +304,10 @@ int flag_cond_mismatch; int flag_short_double; +/* Nonzero means give `wchar_t' the same size as `short'. */ + +int flag_short_wchar; + /* Nonzero means don't recognize the keyword `asm'. */ int flag_no_asm; @@ -580,6 +584,10 @@ c_decode_option (argc, argv) flag_short_enums = 1; else if (!strcmp (p, "-fno-short-enums")) flag_short_enums = 0; + else if (!strcmp (p, "-fshort-wchar")) + flag_short_wchar = 1; + else if (!strcmp (p, "-fno-short-wchar")) + flag_short_wchar = 0; else if (!strcmp (p, "-fcond-mismatch")) flag_cond_mismatch = 1; else if (!strcmp (p, "-fno-cond-mismatch")) @@ -2984,8 +2992,10 @@ init_decl_processing () pushdecl (build_decl (TYPE_DECL, ridpointers[(int) RID_VOID], void_type_node)); - wchar_type_node - = TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (get_identifier (WCHAR_TYPE))); + wchar_type_node = get_identifier (flag_short_wchar + ? "short unsigned int" + : WCHAR_TYPE); + wchar_type_node = TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (wchar_type_node)); wchar_type_size = TYPE_PRECISION (wchar_type_node); signed_wchar_type_node = signed_type (wchar_type_node); unsigned_wchar_type_node = unsigned_type (wchar_type_node); diff --git a/gcc/c-lex.c b/gcc/c-lex.c index bd171ab..55f9acb 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -135,13 +135,8 @@ extern int yydebug; /* File used for outputting assembler code. */ extern FILE *asm_out_file; -#ifndef WCHAR_TYPE_SIZE -#ifdef INT_TYPE_SIZE -#define WCHAR_TYPE_SIZE INT_TYPE_SIZE -#else -#define WCHAR_TYPE_SIZE BITS_PER_WORD -#endif -#endif +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE TYPE_PRECISION (wchar_type_node) /* Number of bytes in a wide character. */ #define WCHAR_BYTES (WCHAR_TYPE_SIZE / BITS_PER_UNIT) @@ -610,6 +610,7 @@ static struct compiler default_compilers[] = %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\ %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\ %{ffast-math:-D__FAST_MATH__}\ + %{fshort-wchar:-D__WCHAR_TYPE__=short\\ unsigned\\ int}\ %{traditional} %{ftraditional:-traditional}\ %{traditional-cpp:-traditional}\ %{fleading-underscore} %{fno-leading-underscore}\ @@ -624,6 +625,8 @@ static struct compiler default_compilers[] = %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\ %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\ %{ffast-math:-D__FAST_MATH__}\ + %{fshort-wchar:-D__WCHAR_TYPE__=short\\ unsigned\\ int}\ + %{fshort-wchar:-D__WCHAR_TYPE__=short\\ unsigned\\ int}\ %{H} %C %{D*} %{U*} %{i*} %Z\ %{ftraditional:-traditional}\ %{traditional-cpp:-traditional}\ @@ -646,6 +649,7 @@ static struct compiler default_compilers[] = %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\ %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\ %{ffast-math:-D__FAST_MATH__}\ + %{fshort-wchar:-D__WCHAR_TYPE__=short\\ unsigned\\ int}\ %{traditional} %{ftraditional:-traditional}\ %{traditional-cpp:-traditional}\ %{fleading-underscore} %{fno-leading-underscore}\ @@ -674,6 +678,7 @@ static struct compiler default_compilers[] = %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs}\ %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\ %{ffast-math:-D__FAST_MATH__}\ + %{fshort-wchar:-D__WCHAR_TYPE__=short\\ unsigned\\ int}\ %{traditional} %{ftraditional:-traditional}\ %{traditional-cpp:-traditional}\ %{fleading-underscore} %{fno-leading-underscore}\ @@ -691,6 +696,8 @@ static struct compiler default_compilers[] = %{!undef:%{!std=*:%p}%{std=gnu*:%p} %P} %{trigraphs}\ %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\ %{ffast-math:-D__FAST_MATH__}\ + %{fshort-wchar:-D__WCHAR_TYPE__=short\\ unsigned\\ int}\ + %{fshort-wchar:-D__WCHAR_TYPE__=short\\ unsigned\\ int}\ %{traditional} %{ftraditional:-traditional}\ %{traditional-cpp:-traditional}\ %{fleading-underscore} %{fno-leading-underscore}\ @@ -720,6 +727,7 @@ static struct compiler default_compilers[] = -$ %{!undef:%p %P} -D__ASSEMBLER__ \ %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\ %{ffast-math:-D__FAST_MATH__}\ + %{fshort-wchar:-D__WCHAR_TYPE__=short\\ unsigned\\ int}\ %{traditional} %{ftraditional:-traditional}\ %{traditional-cpp:-traditional}\ %{fleading-underscore} %{fno-leading-underscore}\ diff --git a/gcc/toplev.c b/gcc/toplev.c index 9f08f7d..a126de0 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1043,6 +1043,8 @@ documented_lang_options[] = { "-fno-short-double", "" }, { "-fshort-enums", "Use the smallest fitting integer to hold enums"}, { "-fno-short-enums", "" }, + { "-fshort-wchar", "Override the underlying type for wchar_t to `unsigned short'" }, + { "-fno-short-wchar", "" }, { "-Wall", "Enable most warning messages" }, { "-Wbad-function-cast", |