diff options
author | Nick Clifton <nickc@cygnus.com> | 1998-09-02 10:04:26 +0000 |
---|---|---|
committer | Nick Clifton <nickc@gcc.gnu.org> | 1998-09-02 10:04:26 +0000 |
commit | c5168e64d4f7441a39bc2c173d74cc5e536e2dec (patch) | |
tree | 40b5f24316a20968ad978759c604d8aeb719097c /gcc | |
parent | ae4d12ca9f1208a84a5e6d66aa1587cf5fb48b31 (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/ch/lex.c | 42 |
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; } } |