]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/53063 (encode group options in the .opt files)
authorManuel López-Ibáñez <manu@gcc.gnu.org>
Wed, 7 Nov 2012 17:54:11 +0000 (17:54 +0000)
committerManuel López-Ibáñez <manu@gcc.gnu.org>
Wed, 7 Nov 2012 17:54:11 +0000 (17:54 +0000)
c-family/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR c/53063
* c.opt(Warray-bounds,Wdelete-non-virtual-dtor,Wenum-compare,
Wmain,Woverlength-strings, Wunknown-pragmas,Wunused-macros):
Use LangEnabledBy.
(Wswitch,Wswitch-default,Wswitch-enum): Likewise. Move here from
common.opt.
(Wvariadic-macros): Init(1).
* c-opts.c (c_common_handle_option): Do not handle them
explicitly.
(c_common_post_options): Likewise.
(sanitize_cpp_opts): warn_unused_macros is now
cpp_warn_unused_macros.
(push_command_line_include): Likewise.
* c-common.c (warn_unknown_pragmas): Do not define.
* c-common.h (warn_unknown_pragmas): Do not declare.
gcc/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR c/53063
* common.opt (Wswitch,Wswitch-default,Wswitch-enum): Move to c.opt.
fortran/
2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR c/53063
* options.c (set_Wall): Do not set warn_switch here.

From-SVN: r193302

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c-family/c-opts.c
gcc/c-family/c.opt
gcc/common.opt
gcc/fortran/ChangeLog
gcc/fortran/options.c

index eb0d492afee697730d0e57bd1f88b67c4acab0f1..045faac55546c5846b5fd10f81349d73bdb63c43 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c/53063
+       * common.opt (Wswitch,Wswitch-default,Wswitch-enum): Move to c.opt.
+
 2012-11-07  Yufeng Zhang  <yufeng.zhang@arm.com>
 
        * config/aarch64/aarch64.c (aarch64_expand_prologue): add the missing
index 6f343ef2419a2b7236bbe1fd29d246ace699f986..9a5943b33181872f1c99f5a0a199c22117c95364 100644 (file)
@@ -1,3 +1,21 @@
+2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c/53063
+       * c.opt(Warray-bounds,Wdelete-non-virtual-dtor,Wenum-compare,
+       Wmain,Woverlength-strings, Wunknown-pragmas,Wunused-macros):
+       Use LangEnabledBy.
+       (Wswitch,Wswitch-default,Wswitch-enum): Likewise. Move here from
+       common.opt.
+       (Wvariadic-macros): Init(1).
+       * c-opts.c (c_common_handle_option): Do not handle them
+       explicitly.
+       (c_common_post_options): Likewise.
+       (sanitize_cpp_opts): warn_unused_macros is now
+       cpp_warn_unused_macros.
+       (push_command_line_include): Likewise.
+       * c-common.c (warn_unknown_pragmas): Do not define.
+       * c-common.h (warn_unknown_pragmas): Do not declare.
+
 2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
 
        PR c/51294
index 90c1992129f5dec4b7df81d73963cdad2deb0aaf..f15b1d827064d84369ccd18906e85e81f924b494 100644 (file)
@@ -193,10 +193,6 @@ const char *pch_file;
    user's namespace.  */
 int flag_iso;
 
-/* Warn about #pragma directives that are not recognized.  */
-
-int warn_unknown_pragmas; /* Tri state variable.  */
-
 /* Warn about format/argument anomalies in calls to formatted I/O functions
    (*printf, *scanf, strftime, strfmon, etc.).  */
 
index c78804d36e2930113c813e0cfbd168afea54fa1d..85ec10fbdc2334f3343a6f699291167581ce89a7 100644 (file)
@@ -585,10 +585,6 @@ extern const char *pch_file;
 
 extern int flag_iso;
 
-/* Warn about #pragma directives that are not recognized.  */
-
-extern int warn_unknown_pragmas; /* Tri state variable.  */
-
 /* Warn about format/argument anomalies in calls to formatted I/O functions
    (*printf, *scanf, strftime, strfmon, etc.).  */
 
index b420d2a2cc14a5d920a196ecb8896124f52f6d21..6fedd1e75029956484df28fdef89b4420c128633 100644 (file)
@@ -96,12 +96,6 @@ static bool std_cxx_inc = true;
 /* If the quote chain has been split by -I-.  */
 static bool quote_chain_split;
 
-/* If -Wunused-macros.  */
-static bool warn_unused_macros;
-
-/* If -Wvariadic-macros.  */
-static bool warn_variadic_macros = true;
-
 /* Number of deferred options.  */
 static size_t deferred_count;
 
@@ -365,26 +359,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.  */
       set_Wformat (value);
-      warn_switch = value;
-      warn_array_bounds = value;
-
-      /* Only warn about unknown pragmas that are not in system
-        headers.  */
-      warn_unknown_pragmas = value;
-
-      if (!c_dialect_cxx ())
-       {
-         /* We set this to 2 here, but 1 in -Wmain, so -ffreestanding
-            can turn it off only if it's not explicit.  */
-         if (warn_main == -1)
-           warn_main = (value ? 2 : 0);
-
-         /* In C, -Wall and -Wc++-compat turns on -Wenum-compare,
-            which we do here.  In C++ it is on by default, which is
-            done in c_common_post_options.  */
-          if (warn_enum_compare == -1)
-            warn_enum_compare = value;
-       }
 
       cpp_opts->warn_trigraphs = value;
       cpp_opts->warn_comments = value;
@@ -400,10 +374,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
       break;
 
     case OPT_Wc___compat:
-      /* Because -Wenum-compare is the default in C++, -Wc++-compat
-        implies -Wenum-compare.  */
-      if (warn_enum_compare == -1 && value)
-       warn_enum_compare = value;
       cpp_opts->warn_cxx_operator_names = value;
       break;
 
@@ -480,22 +450,10 @@ c_common_handle_option (size_t scode, const char *arg, int value,
     case OPT_Wunknown_pragmas:
       /* Set to greater than 1, so that even unknown pragmas in
         system headers will be warned about.  */
+      /* ??? There is no way to handle this automatically for now.  */
       warn_unknown_pragmas = value * 2;
       break;
 
-    case OPT_Wunused_macros:
-      warn_unused_macros = value;
-      break;
-
-    case OPT_Wvariadic_macros:
-      warn_variadic_macros = value;
-      break;
-
-    case OPT_Weffc__:
-      if (value)
-        warn_nonvdtor = true;
-      break;
-
     case OPT_ansi:
       if (!c_dialect_cxx ())
        set_std_c89 (false, true);
@@ -692,10 +650,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
     case OPT_Wpedantic:
       cpp_opts->cpp_pedantic = 1;
       cpp_opts->warn_endif_labels = 1;
-      if (warn_overlength_strings == -1)
-       warn_overlength_strings = 1;
-      if (warn_main == -1)
-       warn_main = 2;
       break;
 
     case OPT_print_objc_runtime_info:
@@ -883,21 +837,21 @@ c_common_post_options (const char **pfilename)
   /* -Woverlength-strings is off by default, but is enabled by -Wpedantic.
      It is never enabled in C++, as the minimum limit is not normative
      in that standard.  */
-  if (warn_overlength_strings == -1 || c_dialect_cxx ())
+  if (c_dialect_cxx ())
     warn_overlength_strings = 0;
 
   /* Wmain is enabled by default in C++ but not in C.  */
   /* Wmain is disabled by default for -ffreestanding (!flag_hosted),
-     even if -Wall was given (warn_main will be 2 if set by -Wall, 1
-     if set by -Wmain).  */
+     even if -Wall or -Wpedantic was given (warn_main will be 2 if set
+     by -Wall, 1 if set by -Wmain).  */
   if (warn_main == -1)
     warn_main = (c_dialect_cxx () && flag_hosted) ? 1 : 0;
   else if (warn_main == 2)
     warn_main = flag_hosted ? 1 : 0;
 
-  /* In C, -Wall and -Wc++-compat enable -Wenum-compare, which we do
-     in c_common_handle_option; if it has not yet been set, it is
-     disabled by default.  In C++, it is enabled by default.  */
+  /* In C, -Wall and -Wc++-compat enable -Wenum-compare; if it has not
+     yet been set, it is disabled by default.  In C++, it is enabled
+     by default.  */
   if (warn_enum_compare == -1)
     warn_enum_compare = c_dialect_cxx () ? 1 : 0;
 
@@ -1228,7 +1182,7 @@ sanitize_cpp_opts (void)
   /* Similarly with -Wno-variadic-macros.  No check for c99 here, since
      this also turns off warnings about GCCs extension.  */
   cpp_opts->warn_variadic_macros
-    = warn_variadic_macros && (pedantic || warn_traditional);
+    = cpp_warn_variadic_macros && (pedantic || warn_traditional);
 
   /* If we're generating preprocessor output, emit current directory
      if explicitly requested or if debugging information is enabled.
@@ -1239,7 +1193,7 @@ sanitize_cpp_opts (void)
 
   if (cpp_opts->directives_only)
     {
-      if (warn_unused_macros)
+      if (cpp_warn_unused_macros)
        error ("-fdirectives-only is incompatible with -Wunused_macros");
       if (cpp_opts->traditional)
        error ("-fdirectives-only is incompatible with -traditional");
@@ -1382,7 +1336,7 @@ push_command_line_include (void)
     {
       include_cursor++;
       /* -Wunused-macros should only warn about macros defined hereafter.  */
-      cpp_opts->warn_unused_macros = warn_unused_macros;
+      cpp_opts->warn_unused_macros = cpp_warn_unused_macros;
       /* Restore the line map from <command line>.  */
       if (!cpp_opts->preprocessed)
        cpp_change_file (parse_in, LC_RENAME, this_input_filename);
index 06d6e363c98e4751539901b60348e95c51b2ed22..90082143ae197584505d2050151b631b6960d2a7 100644 (file)
@@ -268,6 +268,10 @@ Wall
 C ObjC C++ ObjC++ Warning
 Enable most warning messages
 
+Warray-bounds
+LangEnabledBy(C ObjC C++ ObjC++,Wall)
+; in common.opt
+
 Wassign-intercept
 ObjC ObjC++ Var(warn_assign_intercept) Warning
 Warn whenever an Objective-C assignment is being intercepted by the garbage collector
@@ -332,6 +336,10 @@ Wdelete-non-virtual-dtor
 C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall)
 Warn about deleting polymorphic objects with non-virtual destructors
 
+Wdelete-non-virtual-dtor
+LangEnabledBy(C++ ObjC++,Weffc++)
+;
+
 Wdeprecated
 C C++ ObjC ObjC++ Var(warn_deprecated) Init(1) Warning
 Warn if a deprecated compiler feature, class, method, or field is used
@@ -353,9 +361,13 @@ C ObjC C++ ObjC++ Warning
 Warn about stray tokens after #elif and #endif
 
 Wenum-compare
-C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning
+C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall)
 Warn about comparison of different enum types
 
+Wenum-compare
+LangEnabledBy(C ObjC,Wc++-compat)
+;
+
 Werror
 C ObjC C++ ObjC++
 ; Documented in common.opt
@@ -459,9 +471,13 @@ C ObjC C++ ObjC++ Var(warn_long_long) Init(-1) Warning
 Do not warn about using \"long long\" when -pedantic
 
 Wmain
-C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning
+C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0)
 Warn about suspicious declarations of \"main\"
 
+Wmain
+LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0)
+;
+
 Wmissing-braces
 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
 Warn about possibly missing braces around initializers
@@ -481,6 +497,18 @@ Wsuggest-attribute=format
 C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
 Warn about functions which might be candidates for format attributes
 
+Wswitch
+C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Warn about enumerated switches, with no default, missing a case
+
+Wswitch-default
+C ObjC C++ ObjC++ Var(warn_switch_default) Warning
+Warn about enumerated switches missing a \"default:\" statement
+
+Wswitch-enum
+C ObjC C++ ObjC++ Var(warn_switch_enum) Warning
+Warn about all enumerated switches missing a specific case
+
 Wmissing-format-attribute
 C ObjC C++ ObjC++ Alias(Wsuggest-attribute=format)
 ;
@@ -550,7 +578,7 @@ C ObjC Var(warn_old_style_definition) Warning
 Warn if an old-style parameter definition is used
 
 Woverlength-strings
-C ObjC C++ ObjC++ Var(warn_overlength_strings) Init(-1) Warning
+C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic)
 Warn if a string is longer than the maximum portable length specified by the standard
 
 Woverloaded-virtual
@@ -706,7 +734,7 @@ C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
 ;
 
 Wunknown-pragmas
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0)
 Warn about unrecognized pragmas
 
 Wunsuffixed-float-constants
@@ -722,7 +750,7 @@ C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused)
 Warn when typedefs locally defined in a function are not used
 
 Wunused-macros
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ Var(cpp_warn_unused_macros) Warning
 Warn about macros defined in the main file that are not used
 
 Wunused-result
@@ -730,8 +758,8 @@ C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning
 Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value
 
 Wvariadic-macros
-C ObjC C++ ObjC++ Warning
-Do not warn about using variadic macros when -pedantic
+C ObjC C++ ObjC++ Var(cpp_warn_variadic_macros) Init(1) Warning
+Warn about using variadic macros
 
 Wvarargs
 C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1)
index 6b95c0558b7c58dd7054c9a7e91d04a57731f258..f947a72cc2e5be9b15b5e4768131ec1a452b936c 100644 (file)
@@ -632,18 +632,6 @@ Wsuggest-attribute=noreturn
 Common Var(warn_suggest_attribute_noreturn) Warning
 Warn about functions which might be candidates for __attribute__((noreturn))
 
-Wswitch
-Common Var(warn_switch) Warning
-Warn about enumerated switches, with no default, missing a case
-
-Wswitch-default
-Common Var(warn_switch_default) Warning
-Warn about enumerated switches missing a \"default:\" statement
-
-Wswitch-enum
-Common Var(warn_switch_enum) Warning
-Warn about all enumerated switches missing a specific case
-
 Wsystem-headers
 Common Var(warn_system_headers) Warning
 Do not suppress warnings from system headers
index f33dffb0f647cc710bc94c7a5aa456914683b5ba..c030bf5b86dec2d5a09b28270633c3c64b82339d 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c/53063
+       * options.c (set_Wall): Do not set warn_switch here.
+
 2012-11-06  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/54917
index 08c551451e98a350f40b985dd027d228f8aba582..e05b93581bca67a7eb8055aa3c931c477f53b96f 100644 (file)
@@ -478,7 +478,6 @@ set_Wall (int setting)
   gfc_option.warn_target_lifetime = setting;
 
   warn_return_type = setting;
-  warn_switch = setting;
   warn_uninitialized = setting;
   warn_maybe_uninitialized = setting;
 }