aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-opts.c
diff options
context:
space:
mode:
authorNeil Booth <neil@daikokuya.co.uk>2003-07-05 07:20:32 +0000
committerNeil Booth <neil@gcc.gnu.org>2003-07-05 07:20:32 +0000
commit33de95735b87d1b172ef50d6bbe89bc382aa478c (patch)
tree3f24346dcd7bcabf8f506cbb2c10d6e305358fd0 /gcc/c-opts.c
parent2778669a8fdc421669d335ecd923c1d49fbee7ef (diff)
downloadgcc-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.c22
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 ();