directives.c (check_eol_1): New.
authorManuel López-Ibáñez <manu@gcc.gnu.org>
Fri, 29 Aug 2014 16:06:19 +0000 (16:06 +0000)
committerManuel López-Ibáñez <manu@gcc.gnu.org>
Fri, 29 Aug 2014 16:06:19 +0000 (16:06 +0000)
libcpp/ChangeLog:

2014-08-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>

* directives.c (check_eol_1): New.
(check_eol_endif_labels): New.
(check_eol): Call check_eol_1.
(do_else,do_endif): Call check_eol_endif_labels.

gcc/c-family/ChangeLog:

2014-08-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>

* c.opt (Wbuiltin-macro-redefined,Wdeprecated,Wendif-labels,
Winvalid-pch,Wliteral-suffix,Wmissing-include-dirs,Wtrigraphs,
Wundef): Use CPP, Var and Init.
* c-opts.c (c_common_handle_option): Do not handle the above flags here.

From-SVN: r214735

gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/c-family/c.opt
libcpp/ChangeLog
libcpp/directives.c

index 400ea34becc87e179dd68c714c4c761cb1911bf9..762f7e9a71fc6d774a34e0064ca3be45b80c8b63 100644 (file)
@@ -1,3 +1,10 @@
+2014-08-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       * c.opt (Wbuiltin-macro-redefined,Wdeprecated,Wendif-labels,
+       Winvalid-pch,Wliteral-suffix,Wmissing-include-dirs,Wtrigraphs,
+       Wundef): Use CPP, Var and Init.
+       * c-opts.c (c_common_handle_option): Do not handle the above flags here.
+
 2014-08-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        * c.opt (Wbuiltin-macro-redefined): Use CPP, Var and Init.
index 81b7c96bd18098b98ef8b763e1d0fe6000d5dbc0..6093eb310e3538930c10aa9afbbde2d08ed47eab 100644 (file)
@@ -381,7 +381,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
     case OPT_Wall:
       /* ??? Don't add new options here. Use LangEnabledBy in c.opt.  */
 
-      cpp_opts->warn_trigraphs = value;
       cpp_opts->warn_num_sign_change = value;
       break;
 
@@ -389,29 +388,10 @@ c_common_handle_option (size_t scode, const char *arg, int value,
       cpp_opts->warn_cxx_operator_names = value;
       break;
 
-    case OPT_Wdeprecated:
-      cpp_opts->cpp_warn_deprecated = value;
-      break;
-
-    case OPT_Wendif_labels:
-      cpp_opts->warn_endif_labels = value;
-      break;
-
-    case OPT_Winvalid_pch:
-      cpp_opts->warn_invalid_pch = value;
-      break;
-
-    case OPT_Wliteral_suffix:
-      cpp_opts->warn_literal_suffix = value;
-      break;
-
     case OPT_Wlong_long:
       cpp_opts->cpp_warn_long_long = value;
       break;
 
-    case OPT_Wmissing_include_dirs:
-      cpp_opts->warn_missing_include_dirs = value;
-      break;
     case OPT_Wnormalized_:
       /* FIXME: Move all this to c.opt.  */
       if (kind == DK_ERROR)
@@ -439,14 +419,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
       cpp_opts->cpp_warn_traditional = value;
       break;
 
-    case OPT_Wtrigraphs:
-      cpp_opts->warn_trigraphs = value;
-      break;
-
-    case OPT_Wundef:
-      cpp_opts->warn_undef = value;
-      break;
-
     case OPT_Wunknown_pragmas:
       /* Set to greater than 1, so that even unknown pragmas in
         system headers will be warned about.  */
index 3a187087e7c4eac7c409f5a8dc8210a8dbbd979d..210a099a550c23858503dccdc4e2c5c2abe489c8 100644 (file)
@@ -368,7 +368,7 @@ LangEnabledBy(C++ ObjC++,Weffc++)
 ;
 
 Wdeprecated
-C C++ ObjC ObjC++ Var(warn_deprecated) Init(1) Warning
+C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) Var(warn_deprecated) Init(1) Warning
 Warn if a deprecated compiler feature, class, method, or field is used
 
 Wdesignated-init
@@ -392,7 +392,7 @@ C ObjC C++ ObjC++ Var(warn_empty_body) Warning EnabledBy(Wextra)
 Warn about an empty body in an if or else statement
 
 Wendif-labels
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_endif_labels) Var(cpp_warn_endif_labels) Init(1) Warning
 Warn about stray tokens after #elif and #endif
 
 Wenum-compare
@@ -503,7 +503,7 @@ C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
 Warn about invalid uses of the \"offsetof\" macro
 
 Winvalid-pch
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_invalid_pch) Var(cpp_warn_invalid_pch) Warning
 Warn about PCH files that are found but not used
 
 Wjump-misses-init
@@ -511,7 +511,7 @@ C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
 Warn when a jump misses a variable initialization
 
 Wliteral-suffix
-C++ ObjC++ Warning
+C++ ObjC++ CPP(warn_literal_suffix) Var(cpp_warn_literal_suffix) Init(1) Warning
 Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
 
 Wlogical-op
@@ -583,7 +583,7 @@ C ObjC C++ ObjC++ Alias(Wsuggest-attribute=format)
 ;
 
 Wmissing-include-dirs
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) Var(cpp_warn_missing_include_dirs) Warning
 Warn about user-specified include directories that do not exist
 
 Wmissing-parameter-type
@@ -794,7 +794,7 @@ C ObjC Var(warn_traditional_conversion) Warning
 Warn of prototypes causing type conversions different from what would happen in the absence of prototype
 
 Wtrigraphs
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_trigraphs) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
 Warn if trigraphs are encountered that might affect the meaning of the program
 
 Wundeclared-selector
@@ -802,7 +802,7 @@ ObjC ObjC++ Var(warn_undeclared_selector) Warning
 Warn about @selector()s without previously declared methods
 
 Wundef
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_undef) Var(cpp_warn_undef) Warning
 Warn if an undefined macro is used in an #if directive
 
 Wuninitialized
index 1516ec02c4057f68a5d6eb2f4d2dd0c241ff8b74..c1ac8c9967d4088baac7cfbd274ab92b5db71360 100644 (file)
@@ -1,3 +1,10 @@
+2014-08-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       * directives.c (check_eol_1): New.
+       (check_eol_endif_labels): New.
+       (check_eol): Call check_eol_1.
+       (do_else,do_endif): Call check_eol_endif_labels.
+
 2014-08-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        * macro.c (warn_of_redefinition): Suppress warnings for builtins
index 631557df8bb5eec62ef2b28b19c06f286676de1d..173e609d1e07ccac92cf32466f06d6a71d7f64d5 100644 (file)
@@ -213,16 +213,33 @@ skip_rest_of_line (cpp_reader *pfile)
       ;
 }
 
-/* Ensure there are no stray tokens at the end of a directive.  If
-   EXPAND is true, tokens macro-expanding to nothing are allowed.  */
+/* Helper function for check_oel.  */
+
 static void
-check_eol (cpp_reader *pfile, bool expand)
+check_eol_1 (cpp_reader *pfile, bool expand, int reason)
 {
   if (! SEEN_EOL () && (expand
                        ? cpp_get_token (pfile)
                        : _cpp_lex_token (pfile))->type != CPP_EOF)
-    cpp_error (pfile, CPP_DL_PEDWARN, "extra tokens at end of #%s directive",
-              pfile->directive->name);
+    cpp_pedwarning (pfile, reason, "extra tokens at end of #%s directive",
+                   pfile->directive->name);
+}
+
+/* Variant of check_eol used for Wendif-labels warnings.  */
+
+static void
+check_eol_endif_labels (cpp_reader *pfile)
+{
+  check_eol_1 (pfile, false, CPP_W_ENDIF_LABELS);
+}
+
+/* Ensure there are no stray tokens at the end of a directive.  If
+   EXPAND is true, tokens macro-expanding to nothing are allowed.  */
+
+static void
+check_eol (cpp_reader *pfile, bool expand)
+{
+  check_eol_1 (pfile, expand, CPP_W_NONE);
 }
 
 /* Ensure there are no stray tokens other than comments at the end of
@@ -1990,7 +2007,7 @@ do_else (cpp_reader *pfile)
 
       /* Only check EOL if was not originally skipping.  */
       if (!ifs->was_skipping && CPP_OPTION (pfile, warn_endif_labels))
-       check_eol (pfile, false);
+       check_eol_endif_labels (pfile);
     }
 }
 
@@ -2051,7 +2068,7 @@ do_endif (cpp_reader *pfile)
     {
       /* Only check EOL if was not originally skipping.  */
       if (!ifs->was_skipping && CPP_OPTION (pfile, warn_endif_labels))
-       check_eol (pfile, false);
+       check_eol_endif_labels (pfile);
 
       /* If potential control macro, we go back outside again.  */
       if (ifs->next == 0 && ifs->mi_cmacro)