diff options
author | Neil Booth <neil@daikokuya.co.uk> | 2003-07-05 07:20:32 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2003-07-05 07:20:32 +0000 |
commit | 33de95735b87d1b172ef50d6bbe89bc382aa478c (patch) | |
tree | 3f24346dcd7bcabf8f506cbb2c10d6e305358fd0 /gcc/c-opts.c | |
parent | 2778669a8fdc421669d335ecd923c1d49fbee7ef (diff) | |
download | gcc-33de95735b87d1b172ef50d6bbe89bc382aa478c.zip gcc-33de95735b87d1b172ef50d6bbe89bc382aa478c.tar.gz gcc-33de95735b87d1b172ef50d6bbe89bc382aa478c.tar.bz2 |
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
Diffstat (limited to 'gcc/c-opts.c')
-rw-r--r-- | gcc/c-opts.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/gcc/c-opts.c b/gcc/c-opts.c index 52a7536..3bccc7e 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 (); |