Commit 4a870dba by Jason Merrill Committed by Jeff Law

c-decl.c: Add warn_multichar.

        * c-decl.c: Add warn_multichar.
        (c_decode_option): Handle -Wno-multichar.
        * c-lex.c (yylex): Check it.
        * c-tree.h: Declare it.
        * toplev.c (lang_options): Add it.
        * invoke.texi: Document it.

From-SVN: r20968
parent ed79bb3d
Mon Jul 6 22:50:48 1998 Jason Merrill <jason@yorick.cygnus.com>
* c-decl.c: Add warn_multichar.
(c_decode_option): Handle -Wno-multichar.
* c-lex.c (yylex): Check it.
* c-tree.h: Declare it.
* toplev.c (lang_options): Add it.
* invoke.texi: Document it.
Mon Jul 6 22:47:55 1998 J"orn Rennecke <amylaar@cygnus.co.uk> Mon Jul 6 22:47:55 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* gcse.c (hash_scan_insn): New argument IN_LIBCALL_BLOCK. Changed * gcse.c (hash_scan_insn): New argument IN_LIBCALL_BLOCK. Changed
......
...@@ -577,6 +577,10 @@ int warn_unknown_pragmas = 0; /* Tri state variable. */ ...@@ -577,6 +577,10 @@ int warn_unknown_pragmas = 0; /* Tri state variable. */
int warn_sign_compare = -1; int warn_sign_compare = -1;
/* Nonzero means warn about use of multicharacter literals. */
int warn_multichar = 1;
/* Nonzero means `$' can be in an identifier. */ /* Nonzero means `$' can be in an identifier. */
#ifndef DOLLARS_IN_IDENTIFIERS #ifndef DOLLARS_IN_IDENTIFIERS
...@@ -792,6 +796,10 @@ c_decode_option (argc, argv) ...@@ -792,6 +796,10 @@ c_decode_option (argc, argv)
warn_sign_compare = 1; warn_sign_compare = 1;
else if (!strcmp (p, "-Wno-sign-compare")) else if (!strcmp (p, "-Wno-sign-compare"))
warn_sign_compare = 0; warn_sign_compare = 0;
else if (!strcmp (p, "-Wmultichar"))
warn_multichar = 1;
else if (!strcmp (p, "-Wno-multichar"))
warn_multichar = 0;
else if (!strcmp (p, "-Wunknown-pragmas")) else if (!strcmp (p, "-Wunknown-pragmas"))
/* Set to greater than 1, so that even unknown pragmas in system /* Set to greater than 1, so that even unknown pragmas in system
headers will be warned about. */ headers will be warned about. */
......
...@@ -1872,7 +1872,7 @@ yylex () ...@@ -1872,7 +1872,7 @@ yylex ()
num_chars = max_chars; num_chars = max_chars;
error ("character constant too long"); error ("character constant too long");
} }
else if (num_chars != 1 && ! flag_traditional) else if (num_chars != 1 && ! flag_traditional && warn_multichar)
warning ("multi-character character constant"); warning ("multi-character character constant");
/* If char type is signed, sign-extend the constant. */ /* If char type is signed, sign-extend the constant. */
......
...@@ -505,6 +505,10 @@ extern int warn_missing_braces; ...@@ -505,6 +505,10 @@ extern int warn_missing_braces;
extern int warn_sign_compare; extern int warn_sign_compare;
/* Warn about multicharacter constants. */
extern int warn_multichar;
/* Nonzero means we are reading code that came from a system header file. */ /* Nonzero means we are reading code that came from a system header file. */
extern int system_header_p; extern int system_header_p;
......
...@@ -122,7 +122,7 @@ in the following sections. ...@@ -122,7 +122,7 @@ in the following sections.
-Wimplicit-function-declaration -Wimport -Wimplicit-function-declaration -Wimport
-Werror-implicit-function-declaration -Winline -Werror-implicit-function-declaration -Winline
-Wlarger-than-@var{len} -Wmain -Wmissing-declarations -Wlarger-than-@var{len} -Wmain -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wno-import -Wmissing-prototypes -Wmultichar -Wnested-externs -Wno-import
-Wold-style-cast -Woverloaded-virtual -Wparentheses -Wold-style-cast -Woverloaded-virtual -Wparentheses
-Wpointer-arith -Wredundant-decls -Wreorder -Wreturn-type -Wpointer-arith -Wredundant-decls -Wreorder -Wreturn-type
-Wshadow -Wsign-compare -Wstrict-prototypes -Wswitch -Wshadow -Wsign-compare -Wstrict-prototypes -Wswitch
...@@ -1287,6 +1287,11 @@ Same as @samp{-Wimplicit-int} and @samp{-Wimplicit-function-}@* ...@@ -1287,6 +1287,11 @@ Same as @samp{-Wimplicit-int} and @samp{-Wimplicit-function-}@*
Warn if the type of @samp{main} is suspicious. @samp{main} should be a Warn if the type of @samp{main} is suspicious. @samp{main} should be a
function with external linkage, returning int, taking either zero function with external linkage, returning int, taking either zero
arguments, two, or three arguments of appropriate types. arguments, two, or three arguments of appropriate types.
@item -Wmultichar
Warn if a multicharacter constant (@samp{'FOOF'}) is used. Usually they
indicate a typo in the user's code, as they have implementation-defined
values, and should not be used in portable code.
@item -Wparentheses @item -Wparentheses
Warn if parentheses are omitted in certain contexts, such Warn if parentheses are omitted in certain contexts, such
......
...@@ -872,6 +872,8 @@ char *lang_options[] = ...@@ -872,6 +872,8 @@ char *lang_options[] =
"-Wno-missing-declarations", "-Wno-missing-declarations",
"-Wmissing-prototypes", "-Wmissing-prototypes",
"-Wno-missing-prototypes", "-Wno-missing-prototypes",
"-Wmultichar",
"-Wno-multichar",
"-Wnested-externs", "-Wnested-externs",
"-Wno-nested-externs", "-Wno-nested-externs",
"-Wparentheses", "-Wparentheses",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment