From 33de95735b87d1b172ef50d6bbe89bc382aa478c Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Sat, 5 Jul 2003 07:20:32 +0000 Subject: [PATCH] re PR driver/11417 (fortran options warned about in cc1 when *.F or -x f77-cpp-input) 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 | 8 ++++++++ gcc/c-opts.c | 22 ++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7ddc8c9748..6dd0c8779db 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2003-07-05 Neil Booth + + 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 * genattr.c (internal_dfa_insn_code): Output prototype. diff --git a/gcc/c-opts.c b/gcc/c-opts.c index 52a7536140e..3bccc7e0c93 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -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 ();