]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR driver/11417 (fortran options warned about in cc1 when *.F or -x f77-cpp-input)
authorNeil Booth <neil@daikokuya.co.uk>
Sat, 5 Jul 2003 07:20:32 +0000 (07:20 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Sat, 5 Jul 2003 07:20:32 +0000 (07:20 +0000)
PR driver/11417
* c-opts.c (permit_fortran_options): New.
(c_common_init_options): Accept fortran front end options if
it looks like we might be preprocessing Fortran.
(c_common_handle_option): Don't reject switch if permit_fotran_options.

From-SVN: r68961

gcc/ChangeLog
gcc/c-opts.c

index c7ddc8c974826bacf09b4484318c5267cb7c230c..6dd0c8779dbd43ba8fbdbed345b4080bcbf5085e 100644 (file)
@@ -1,3 +1,11 @@
+2003-07-05  Neil Booth  <neil@daikokuya.co.uk>
+
+       PR driver/11417
+       * c-opts.c (permit_fortran_options): New.
+       (c_common_init_options): Accept fortran front end options if
+       it looks like we might be preprocessing Fortran.
+       (c_common_handle_option): Don't reject switch if permit_fotran_options.
+
 2003-07-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * genattr.c (internal_dfa_insn_code): Output prototype.
index 52a7536140e398dacd822a51854a1821c0ad3041..3bccc7e0c93fff7e0d7f16056e46a4f52ee78109 100644 (file)
@@ -94,6 +94,9 @@ static size_t deferred_count;
 /* Number of deferred options scanned for -include.  */
 static size_t include_cursor;
 
+/* Permit Fotran front-end options.  */
+static bool permit_fortran_options;
+
 void missing_arg (enum opt_code);
 static void set_Wimplicit (int);
 static void print_help (void);
@@ -199,6 +202,7 @@ unsigned int
 c_common_init_options (unsigned int argc, const char **argv ATTRIBUTE_UNUSED)
 {
   static const unsigned int lang_flags[] = {CL_C, CL_ObjC, CL_CXX, CL_ObjCXX};
+  unsigned int result;
 
   /* This is conditionalized only because that is the way the front
      ends used to do it.  Maybe this should be unconditional?  */
@@ -230,7 +234,20 @@ c_common_init_options (unsigned int argc, const char **argv ATTRIBUTE_UNUSED)
   deferred_opts = (struct deferred_opt *)
     xmalloc (argc * sizeof (struct deferred_opt));
 
-  return lang_flags[c_language];
+  result = lang_flags[c_language];
+
+  /* If potentially preprocessing Fortran we have to accept its front
+     end options since the driver passes most of them through.  */
+#ifdef CL_F77
+  if (c_language == clk_c && argc > 2
+      && !strcmp (argv[2], "-traditional-cpp" ))
+    {
+      permit_fortran_options = true;
+      result |= CL_F77;
+    }
+#endif
+
+  return result;
 }
 
 /* Handle switch SCODE with argument ARG.  ON is true, unless no-
@@ -259,7 +276,8 @@ c_common_handle_option (size_t scode, const char *arg, int value)
   switch (code)
     {
     default:
-      return 0;
+      result = permit_fortran_options;
+      break;
 
     case OPT__help:
       print_help ();