re PR other/28322 (GCC new warnings and compatibility)
authorPeter Maydell <pmaydell@chiark.greenend.org.uk>
Thu, 10 Jul 2008 03:51:04 +0000 (03:51 +0000)
committerMatthias Klose <doko@gcc.gnu.org>
Thu, 10 Jul 2008 03:51:04 +0000 (03:51 +0000)
2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>

        PR other/28322
        * opts.c (print_ignored_options): report postponed diagnostics for
        unknown -Wno-* options as warnings, not errors.
        (postpone_unknown_option_error): renamed to
        postpone_unknown_option_warning.
        * gcc.dg/pr28322-2.c: check that emitted diagnostic for -Wno-foobar
        is a warning and not an error.

From-SVN: r137687

gcc/ChangeLog
gcc/opts.c
gcc/testsuite/gcc.dg/pr28322-2.c

index e5fe0ede127ebae1aca8bdebd0824387c99ced1b..3e9ce90d36c3a5f1a9d7f69b7da65f018668fa70 100644 (file)
@@ -1,3 +1,13 @@
+2008-07-10  Peter Maydell  <pmaydell@chiark.greenend.org.uk>
+
+       PR other/28322
+       * opts.c (print_ignored_options): report postponed diagnostics for
+       unknown -Wno-* options as warnings, not errors.
+       (postpone_unknown_option_error): renamed to
+       postpone_unknown_option_warning.
+       * gcc.dg/pr28322-2.c: check that emitted diagnostic for -Wno-foobar
+       is a warning and not an error.
+
 2008-07-09  Doug Kwan  <dougkwan@google.com>
 
        Revert:
index 8431a406bd7ac2c19749114dca11c19ef2e09e50..7e8e96c4dadae8a95b5b542b6b1e3671dca6eba3 100644 (file)
@@ -457,14 +457,17 @@ complain_wrong_lang (const char *text, const struct cl_option *option,
 
 /* Buffer the unknown option described by the string OPT.  Currently,
    we only complain about unknown -Wno-* options if they may have
-   prevented a diagnostic. Otherwise, we just ignore them.  */
+   prevented a diagnostic. Otherwise, we just ignore them.
+   Note that if we do complain, it is only as a warning, not an error;
+   passing the compiler an unrecognised -Wno-* option should never
+   change whether the compilation succeeds or fails.  */
 
-static void postpone_unknown_option_error(const char *opt)
+static void postpone_unknown_option_warning(const char *opt)
 {
   VEC_safe_push (const_char_p, heap, ignored_options, opt);
 }
 
-/* Produce an error for each option previously buffered.  */
+/* Produce a warning for each option previously buffered.  */
 
 void print_ignored_options (void)
 {
@@ -476,7 +479,7 @@ void print_ignored_options (void)
     {
       const char *opt;
       opt = VEC_pop (const_char_p, ignored_options);
-      error ("unrecognized command line option \"%s\"", opt);
+      warning (0, "unrecognized command line option \"%s\"", opt);
     }
 
   input_location = saved_loc;
@@ -513,9 +516,9 @@ handle_option (const char **argv, unsigned int lang_mask)
       opt_index = find_opt (opt + 1, lang_mask | CL_COMMON | CL_TARGET);
       if (opt_index == cl_options_count && opt[1] == 'W')
        {
-         /* We don't generate errors for unknown -Wno-* options
+         /* We don't generate warnings for unknown -Wno-* options
              unless we issue diagnostics.  */
-         postpone_unknown_option_error (argv[0]);
+         postpone_unknown_option_warning (argv[0]);
          result = 1;
          goto done;
        }
index 8fde7b21aa30571f237c145b2d41f8bc57b89ae0..89dd15390f872db213556f1c507e51e516b50df6 100644 (file)
@@ -8,5 +8,5 @@ int foo (void)
   return i;
 }
 
-/* { dg-message "unrecognized command line option .-Wno-foobar." "" { target *-*-* } 0 } */
+/* { dg-warning "unrecognized command line option .-Wno-foobar." "" { target *-*-* } 0 } */