diff options
author | Neil Booth <neil@daikokuya.co.uk> | 2003-06-02 05:48:30 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2003-06-02 05:48:30 +0000 |
commit | c83857ff2821090c0b72ce622fb11efa3f686e80 (patch) | |
tree | 225bc278bbb5b0d0114f226c9a902485d2440d1a /gcc | |
parent | d48b7f2a3f4c35153d9f4d96ec5b6951e6a6a9cd (diff) | |
download | gcc-c83857ff2821090c0b72ce622fb11efa3f686e80.zip gcc-c83857ff2821090c0b72ce622fb11efa3f686e80.tar.gz gcc-c83857ff2821090c0b72ce622fb11efa3f686e80.tar.bz2 |
c-opts.c (CL_REJECT_NEGATIVE): New.
* c-opts.c (CL_REJECT_NEGATIVE): New.
(c_common_decode_option): Update to use it.
* c.opt: Update documentation; use RejectNegative.
* opts.sh: Handle RejectNegative.
From-SVN: r67325
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/c-opts.c | 32 | ||||
-rw-r--r-- | gcc/c.opt | 10 | ||||
-rw-r--r-- | gcc/opts.sh | 5 |
4 files changed, 32 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 38bbc66..16164f8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-06-02 Neil Booth <neil@daikokuya.co.uk> + + * c-opts.c (CL_REJECT_NEGATIVE): New. + (c_common_decode_option): Update to use it. + * c.opt: Update documentation; use RejectNegative. + * opts.sh: Handle RejectNegative. + 2003-06-01 Zack Weinberg <zack@codesourcery.com> * ggc-page.c (init_ggc): Give better diagnostics on failure to diff --git a/gcc/c-opts.c b/gcc/c-opts.c index 8cb0b83..bd02e19 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -119,12 +119,13 @@ static void finish_options PARAMS ((void)); #define STDC_0_IN_SYSTEM_HEADERS 0 #endif -#define CL_C (1 << 0) /* Only C. */ -#define CL_OBJC (1 << 1) /* Only ObjC. */ -#define CL_CXX (1 << 2) /* Only C++. */ -#define CL_OBJCXX (1 << 3) /* Only ObjC++. */ -#define CL_JOINED (1 << 4) /* If takes joined argument. */ -#define CL_SEPARATE (1 << 5) /* If takes a separate argument. */ +#define CL_C (1 << 0) /* Only C. */ +#define CL_OBJC (1 << 1) /* Only ObjC. */ +#define CL_CXX (1 << 2) /* Only C++. */ +#define CL_OBJCXX (1 << 3) /* Only ObjC++. */ +#define CL_JOINED (1 << 4) /* If takes joined argument. */ +#define CL_SEPARATE (1 << 5) /* If takes a separate argument. */ +#define CL_REJECT_NEGATIVE (1 << 6) /* Reject no- form. */ #include "c-options.c" @@ -398,9 +399,15 @@ c_common_decode_option (argc, argv) if (opt_index == N_OPTS) goto done; - result = 1; option = &cl_options[opt_index]; + /* Reject negative form of switches that don't take negatives. */ + if (!on && (option->flags & CL_REJECT_NEGATIVE)) + goto done; + + /* We've recognised this switch. */ + result = 1; + /* Sort out any argument the switch takes. */ if (option->flags & (CL_JOINED | CL_SEPARATE)) { @@ -629,10 +636,7 @@ c_common_decode_option (argc, argv) break; case OPT_Werror_implicit_function_declaration: - if (!on) - result = 0; - else - mesg_implicit_function_declaration = 2; + mesg_implicit_function_declaration = 2; break; case OPT_Wfloat_equal: @@ -908,7 +912,7 @@ c_common_decode_option (argc, argv) break; case OPT_fdump_: - if (!on || !dump_switch_p (argv[0] + strlen ("-f"))) + if (!dump_switch_p (argv[0] + strlen ("-f"))) result = 0; break; @@ -1072,10 +1076,6 @@ c_common_decode_option (argc, argv) break; case OPT_ftabstop_: - /* Don't recognize -fno-tabstop=. */ - if (!on) - return 0; - /* It is documented that we silently ignore silly values. */ { char *endptr; @@ -24,7 +24,9 @@ ; and each field appearing on its own line. The first field is the ; command-line switch with the leading "-" removed. All options ; beginning with "f" or "W" are implicitly assumed to take a "no-" -; form; this form should not be listed. +; form; this form should not be listed. If you do not want this +; negative form and you want it to be automatically rejected, add +; RejectNegative to the second field. ; The second field is a space-separated list of which parts of the ; compiler recognize the switch. Current valid entries are "C", @@ -144,7 +146,7 @@ Werror C ObjC C++ ObjC++ Werror-implicit-function-declaration -C ObjC +C ObjC RejectNegative Wfloat-equal C ObjC C++ ObjC++ @@ -339,7 +341,7 @@ fdollars-in-identifiers C ObjC C++ ObjC++ fdump- -C ObjC C++ ObjC++ Joined +C ObjC C++ ObjC++ Joined RejectNegative felide-constructors C++ ObjC++ @@ -465,7 +467,7 @@ fstrict-prototype C++ ObjC++ ftabstop= -C ObjC C++ ObjC++ Joined +C ObjC C++ ObjC++ Joined RejectNegative ftemplate-depth- C++ ObjC++ Joined diff --git a/gcc/opts.sh b/gcc/opts.sh index 9a4df53..4056946 100644 --- a/gcc/opts.sh +++ b/gcc/opts.sh @@ -48,8 +48,9 @@ cat "$@" | ${AWK} ' if (langs ~ ":ObjC:") flags = flags " | CL_OBJC" if (langs ~ ":C\\+\\+:") flags = flags " | CL_CXX" if (langs ~ ":ObjC\\+\\+:") flags = flags " | CL_OBJCXX" - if (langs ~ ":Joined") flags = flags " | CL_JOINED" - if (langs ~ ":Separate") flags = flags " | CL_SEPARATE" + if (langs ~ ":Joined:") flags = flags " | CL_JOINED" + if (langs ~ ":Separate:") flags = flags " | CL_SEPARATE" + if (langs ~ ":RejectNegative:") flags = flags " | CL_REJECT_NEGATIVE" sub( "^0 \\| ", "", flags ) return flags } |