cpphash.c (collect_funlike_expansion): Make "# is not followed by a macro argument name" a pedwarn, not an error.

* cpphash.c (collect_funlike_expansion): Make "# is not
	followed by a macro argument name" a pedwarn, not an error.
	Preserve the # in the output.  Suppress the warning if lang_asm.

	* gcc.dg/dg.exp: Scan .S files as well as .c files.
	* gcc.dg/20000510-1.S: New.

From-SVN: r33841
This commit is contained in:
Zack Weinberg 2000-05-11 08:43:56 +00:00 committed by Zack Weinberg
parent 8fe3a87b4f
commit 3ae1c615d9
5 changed files with 49 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2000-05-11 Zack Weinberg <zack@wolery.cumb.org>
* cpphash.c (collect_funlike_expansion): Make "# is not
followed by a macro argument name" a pedwarn, not an error.
Preserve the # in the output. Suppress the warning if lang_asm.
Thu May 11 01:19:31 2000 Jeffrey A Law (law@cygnus.com)
* configure.in (hppa*64*-*-hpux11*): New target for PA64 support.

View File

@ -639,7 +639,22 @@ collect_funlike_expansion (pfile, list, arglist, replacement)
default:
norm:
if (last_token == STRIZE)
cpp_error (pfile, "# is not followed by a macro argument name");
{
/* This is a mandatory diagnostic (6.10.3.2 para 1), but
in assembly language # may have some other
significance we don't know about, so suppress the
warning. */
if (! CPP_OPTION (pfile, lang_asm))
cpp_pedwarn (pfile,
"# is not followed by a macro argument name");
if (TOK_PREV_WHITE (list, i))
CPP_ADJUST_WRITTEN (pfile, -1);
if (TOK_PREV_WHITE (list, i-1))
CPP_PUTC (pfile, ' ');
CPP_PUTC (pfile, '#');
if (TOK_PREV_WHITE (list, i))
CPP_PUTC (pfile, ' ');
}
CPP_PUTS (pfile, tok, len);
last_token = NORM;
}

View File

@ -1,3 +1,8 @@
2000-05-11 Zack Weinberg <zack@wolery.cumb.org>
* gcc.dg/dg.exp: Scan .S files as well as .c files.
* gcc.dg/20000510-1.S: New.
2000-05-08 Catherine Moore <clm@cygnus.com>
* gcc.dg/unused-3.c: New.

View File

@ -0,0 +1,20 @@
/* Regression test - in assembly language, # may have some significance
other than 'stringize macro argument' and therefore must be preserved
in the output, and should not be warned about. */
/* { dg-do preprocess } */
#define foo() mov r0, #5 /* { dg-bogus "not followed" "spurious warning" } */
entry:
foo()
/*
{ dg-final { if ![file exists 20000510-1.i] { return } } }
{ dg-final { set tmp [grep 20000510-1.i # line] } }
{ dg-final { if {[string length $tmp] > 0} \{ } }
{ dg-final { pass "20000510-1.S: # preservation" } }
{ dg-final { \} else \{ } }
{ dg-final { fail "20000510-1.S: # preservation" } }
{ dg-final { \} } }
*/

View File

@ -63,7 +63,8 @@ if ![info exists DEFAULT_CFLAGS] then {
dg-init
# Main loop.
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] "" $DEFAULT_CFLAGS
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
"" $DEFAULT_CFLAGS
# All done.
dg-finish