diff options
author | Neil Booth <neilb@earthling.net> | 2000-03-16 14:15:17 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2000-03-16 14:15:17 +0000 |
commit | e1e97c4f15e638cbace4f54ec987525f20893fa5 (patch) | |
tree | 9a081f508fa06313ce5b328de9f83aa0d9ab98d9 /gcc/cppinit.c | |
parent | d26eedb65705486dc550d5c20322ad360c93840f (diff) | |
download | gcc-e1e97c4f15e638cbace4f54ec987525f20893fa5.zip gcc-e1e97c4f15e638cbace4f54ec987525f20893fa5.tar.gz gcc-e1e97c4f15e638cbace4f54ec987525f20893fa5.tar.bz2 |
cppinit.c (handle_option): Implement #unassert directive as -A- command line option.
2000-03-16 Neil Booth <NeilB@earthling.net>
* cppinit.c (handle_option): Implement #unassert directive
as -A- command line option.
(print_help): Update.
* cpptexi.c: Update.
From-SVN: r32584
Diffstat (limited to 'gcc/cppinit.c')
-rw-r--r-- | gcc/cppinit.c | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/gcc/cppinit.c b/gcc/cppinit.c index 674e140..4192573 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -1493,26 +1493,35 @@ handle_option (pfile, argc, argv) opts->no_output = 1; break; case OPT_A: - if (strcmp (arg, "-")) - new_pending_directive (opts, arg, cpp_assert); - else + if (arg[0] == '-') { - /* -A- eliminates all predefined macros and assertions. - Let's include also any that were specified earlier - on the command line. That way we can get rid of any - that were passed automatically in from GCC. */ - struct pending_option *o1, *o2; - - o1 = opts->pending->directive_head; - while (o1) + /* -A with an argument beginning with '-' acts as + #unassert on whatever immediately follows the '-'. + If "-" is the whole argument, we eliminate all + predefined macros and assertions, including those + that were specified earlier on the command line. + That way we can get rid of any that were passed + automatically in from GCC. */ + + if (arg[1] == '\0') { - o2 = o1->next; - free (o1); - o1 = o2; + struct pending_option *o1, *o2; + + o1 = opts->pending->directive_head; + while (o1) + { + o2 = o1->next; + free (o1); + o1 = o2; + } + opts->pending->directive_head = NULL; + opts->pending->directive_tail = NULL; } - opts->pending->directive_head = NULL; - opts->pending->directive_tail = NULL; + else + new_pending_directive (opts, arg + 1, cpp_unassert); } + else + new_pending_directive (opts, arg, cpp_assert); break; case OPT_U: new_pending_directive (opts, arg, cpp_undef); @@ -1750,6 +1759,7 @@ Switches:\n\ -D<macro> Define a <macro> with string '1' as its value\n\ -D<macro>=<val> Define a <macro> with <val> as its value\n\ -A<question> (<answer>) Assert the <answer> to <question>\n\ + -A-<question> (<answer>) Disable the <answer> to <question>\n\ -U<macro> Undefine <macro> \n\ -v Display the version number\n\ -H Print the name of header files as they are used\n\ |