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
This commit is contained in:
Neil Booth 2000-03-16 14:15:17 +00:00 committed by Neil Booth
parent d26eedb657
commit e1e97c4f15
3 changed files with 38 additions and 19 deletions

View file

@ -1,3 +1,10 @@
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.
Thu Mar 16 02:14:16 2000 Hans-Peter Nilsson <hp@bitrange.com>
* md.texi (Standard Names): Document `jump'.

View file

@ -2887,10 +2887,12 @@ Define the macros @var{__GNUC__}, @var{__GNUC_MINOR__} and
Make an assertion with the predicate @var{predicate} and answer
@var{answer}. @xref{Assertions}.
@noindent
You can use @samp{-A-} to disable all predefined assertions; it also
undefines all predefined macros and all macros that preceded it on the
command line.
@item -A -@var{predicate}(@var{answer})
Disable an assertion with the predicate @var{predicate} and answer
@var{answer}. Specifiying no predicate, by @samp{-A-} or @samp{-A -},
disables all predefined assertions and all assertions preceding it on
the command line; and also undefines all predefined macros and all
macros preceding it on the command line.
@item -dM
@findex -dM

View file

@ -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;
/* -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. */
o1 = opts->pending->directive_head;
while (o1)
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\