c-decl.c: Add warn_multichar.
authorJason Merrill <jason@yorick.cygnus.com>
Mon, 6 Jul 1998 21:53:23 +0000 (21:53 +0000)
committerJeff Law <law@gcc.gnu.org>
Mon, 6 Jul 1998 21:53:23 +0000 (15:53 -0600)
        * 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

gcc/ChangeLog
gcc/c-decl.c
gcc/c-lex.c
gcc/c-tree.h
gcc/invoke.texi
gcc/toplev.c

index 9f0c949f71718ad7d4c1b5443a3cea0c61884371..76750938efc11a8a274e9366bcc28042885ab199 100644 (file)
@@ -1,3 +1,12 @@
+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>
 
        * gcse.c (hash_scan_insn): New argument IN_LIBCALL_BLOCK.  Changed
index 5465e4027df5e60a90b0708339656738c9a61f21..9901db80e68dfee2a2b2b4b6ef9f00eebd4c29d1 100644 (file)
@@ -577,6 +577,10 @@ int warn_unknown_pragmas = 0; /* Tri state variable.  */
 
 int warn_sign_compare = -1;
 
+/* Nonzero means warn about use of multicharacter literals.  */
+
+int warn_multichar = 1;
+
 /* Nonzero means `$' can be in an identifier.  */
 
 #ifndef DOLLARS_IN_IDENTIFIERS
@@ -792,6 +796,10 @@ c_decode_option (argc, argv)
     warn_sign_compare = 1;
   else if (!strcmp (p, "-Wno-sign-compare"))
     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"))
     /* Set to greater than 1, so that even unknown pragmas in system
        headers will be warned about.  */
index c33ade528225c362fe293e8b225299bc0930004d..f82ad761d318188857b54f0e638894e628e1b24b 100644 (file)
@@ -1872,7 +1872,7 @@ yylex ()
            num_chars = max_chars;
            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");
 
        /* If char type is signed, sign-extend the constant.  */
index 3a9f4f83b7866db97e492a7871d443fdea224cde..7605cfe2e519d453193ca0f2dce6cae92caa150a 100644 (file)
@@ -505,6 +505,10 @@ extern int warn_missing_braces;
 
 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.  */
 
 extern int system_header_p;
index a07fcf60a542a64ebc75db5ce2df2fb5a1560bf8..5bfac524c5c15e04d155388920c02f7e5593c5f3 100644 (file)
@@ -122,7 +122,7 @@ in the following sections.
 -Wimplicit-function-declaration  -Wimport
 -Werror-implicit-function-declaration  -Winline
 -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
 -Wpointer-arith  -Wredundant-decls  -Wreorder  -Wreturn-type
 -Wshadow  -Wsign-compare  -Wstrict-prototypes  -Wswitch
@@ -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
 function with external linkage, returning int, taking either zero
 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
 Warn if parentheses are omitted in certain contexts, such
index 6bc76632a2a55ac17ee2754788cb3a46ecfe8949..1126a4af2fcb7374546b34af7c5a3a1692ca7349 100644 (file)
@@ -872,6 +872,8 @@ char *lang_options[] =
   "-Wno-missing-declarations",
   "-Wmissing-prototypes",
   "-Wno-missing-prototypes",
+  "-Wmultichar",
+  "-Wno-multichar",
   "-Wnested-externs",
   "-Wno-nested-externs",
   "-Wparentheses",