Do not generate error message about unrecognised command line switches of
authorNick Clifton <nickc@cygnus.com>
Tue, 19 Oct 1999 13:02:39 +0000 (13:02 +0000)
committerNick Clifton <nickc@gcc.gnu.org>
Tue, 19 Oct 1999 13:02:39 +0000 (13:02 +0000)
other languages.

From-SVN: r30085

gcc/ChangeLog
gcc/toplev.c

index 7be360ddcb3f9162850488e7ce025a694e5c96a8..54dc7154700d442d9a4c28150d352e541966d4e0 100644 (file)
@@ -1,3 +1,10 @@
+Tue Oct 19 14:01:34 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * toplev.c (main): Do not generate an error message if an
+       unrecognised command line switch is recognisable by another
+       language.  If extra_warnings are enabled, then generate a
+       warning message instead.
+
 Tue Oct 19 11:41:12 1999  Mumit Khan  <khan@xraylith.wisc.edu>
 
        * c-pragma.h (PRAGMA_INSERT_ATTRIBUTES): Delete macro.
index 753d65d65cf51789699fd31206ea85ffd41554e5..95bda3d7c3bc837462c48ad4b6d0f4e4dde21bb8 100644 (file)
@@ -5414,7 +5414,40 @@ main (argc, argv)
              ? lang_processed : indep_processed);
       else
        {
-         warning ("ignoring option `%s'", argv[i]);
+         const char * option = NULL;
+         const char * lang = NULL;
+         unsigned int j;
+         
+         /* It is possible that the command line switch is not valid for the
+            current language, but it is valid for another language.  In order
+            to be compatible with previous versions of the compiler (which
+            did not issue an error message in this case) we check for this
+            possibilty here.  If we do find a match, then if extra_warnings
+            is set we generate a warning message, otherwise we will just
+            ignore the option.  */
+         for (j = 0; j < NUM_ELEM (documented_lang_options); j++)
+           {
+             option = documented_lang_options[j].option;
+             
+             if (option == NULL)
+               lang = documented_lang_options[j].description;
+             else if (! strncmp (argv[i], option, strlen (option)))
+               break;
+           }
+
+         if (option)
+           {
+             if (extra_warnings)
+               {
+                 warning ("Ignoring command line option '%s'", argv[i]);
+                 if (lang)
+                   warning ("\
+(It is valid for %s but not the selected langauge)", lang);
+               }
+           }
+         else
+           error ("Unrecognised option `%s'", argv[i]);
+         
          i++;
        }
     }