aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNick Clifton <nickc@cygnus.com>1998-09-02 10:04:26 +0000
committerNick Clifton <nickc@gcc.gnu.org>1998-09-02 10:04:26 +0000
commitc5168e64d4f7441a39bc2c173d74cc5e536e2dec (patch)
tree40b5f24316a20968ad978759c604d8aeb719097c /gcc
parentae4d12ca9f1208a84a5e6d66aa1587cf5fb48b31 (diff)
downloadgcc-c5168e64d4f7441a39bc2c173d74cc5e536e2dec.zip
gcc-c5168e64d4f7441a39bc2c173d74cc5e536e2dec.tar.gz
gcc-c5168e64d4f7441a39bc2c173d74cc5e536e2dec.tar.bz2
Change HANDLE_PRAGMA macro so that it supports USE_CPPLIB
From-SVN: r22167
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ch/ChangeLog9
-rw-r--r--gcc/ch/lex.c42
2 files changed, 47 insertions, 4 deletions
diff --git a/gcc/ch/ChangeLog b/gcc/ch/ChangeLog
index 60bd144..ff42469 100644
--- a/gcc/ch/ChangeLog
+++ b/gcc/ch/ChangeLog
@@ -1,3 +1,12 @@
+Wed Sep 02 09:25:29 1998 Nick Clifton <nickc@cygnus.com>
+
+ * lex.c (check_newline): Change how HANDLE_PRAGMA is called.
+ Generate warning messages if unknown pragmas are encountered.
+ (pragma_getc): New function: retrieves characters from the
+ input stream. Defined when HANDLE_PRAGMA is defined.
+ (pragma_ungetc): New function: replaces characters back into the
+ input stream. Defined when HANDLE_PRAGMA is defined.
+
Mon Aug 31 15:35:16 1998 Dave Brolley <brolley@cygnus.com>
* decl.c (layout_chill_variants): Calculate nlables properly.
diff --git a/gcc/ch/lex.c b/gcc/ch/lex.c
index a3dbbb2..17b9268 100644
--- a/gcc/ch/lex.c
+++ b/gcc/ch/lex.c
@@ -1,5 +1,5 @@
/* Lexical analyzer for GNU CHILL. -*- C -*-
- Copyright (C) 1992, 93, 1994 Free Software Foundation, Inc.
+ Copyright (C) 1992, 93, 1994, 1998 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -1495,6 +1495,22 @@ getlc (file)
return c;
}
+#if defined HANDLE_PRAGMA
+/* Local versions of these macros, that can be passed as function pointers. */
+static int
+pragma_getc ()
+{
+ return getc (finput);
+}
+
+static void
+pragma_ungetc (arg)
+ int arg;
+{
+ ungetc (arg, finput);
+}
+#endif /* HANDLE_PRAGMA */
+
/* At the beginning of a line, increment the line number and process
any #-directive on this line. If the line is a #-directive, read
the entire line and return a newline. Otherwise, return the line's
@@ -1553,10 +1569,28 @@ check_newline ()
&& (isspace (c = getlc (finput))))
{
#ifdef HANDLE_PRAGMA
- return HANDLE_PRAGMA (finput, c);
-#else
- goto skipline;
+ static char buffer [128];
+ char * buff = buffer;
+
+ /* Read the pragma name into a buffer. */
+ while (isspace (c = getlc (finput)))
+ continue;
+
+ do
+ {
+ * buff ++ = c;
+ c = getlc (finput);
+ }
+ while (c != EOF && ! isspace (c) && c != '\n'
+ && buff < buffer + 128);
+
+ pragma_ungetc (c);
+
+ * -- buff = 0;
+
+ (void) HANDLE_PRAGMA (pragma_getc, pragma_ungetc, buffer);
#endif /* HANDLE_PRAGMA */
+ goto skipline;
}
}