From 77ee202d72d4a24b6ff5b159ebf0bbb3822c247e Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 16 Mar 2000 14:15:17 +0000 Subject: 2000-03-16 Neil Booth * cppinit.c (handle_option): Implement #unassert directive as -A- command line option. (print_help): Update. * cpptexi.c: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32584 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cppinit.c | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) (limited to 'gcc/cppinit.c') diff --git a/gcc/cppinit.c b/gcc/cppinit.c index 674e140db09..419257308a4 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 Define a with string '1' as its value\n\ -D= Define a with as its value\n\ -A () Assert the to \n\ + -A- () Disable the to \n\ -U Undefine \n\ -v Display the version number\n\ -H Print the name of header files as they are used\n\ -- cgit v1.2.1