OSDN Git Service

* cpphash.c (collect_funlike_expansion): Make "# is not
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 May 2000 08:43:56 +0000 (08:43 +0000)
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 May 2000 08:43:56 +0000 (08:43 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33841 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cpphash.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/20000510-1.S [new file with mode: 0644]
gcc/testsuite/gcc.dg/dg.exp

index 5889f0a..fdf67d0 100644 (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.
index 81e9368..1e61daf 100644 (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;
        }
index db28346..9c57a8d 100644 (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.
diff --git a/gcc/testsuite/gcc.dg/20000510-1.S b/gcc/testsuite/gcc.dg/20000510-1.S
new file mode 100644 (file)
index 0000000..7d6508b
--- /dev/null
@@ -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 { \}                                             } }
+*/
+
index 6edb5dc..e4b4a1f 100644 (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