diff options
author | Zack Weinberg <zack@wolery.cumb.org> | 2000-07-19 20:37:26 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2000-07-19 20:37:26 +0000 |
commit | 53fdf0be639dbf77f048327f84f3eb1e17972d50 (patch) | |
tree | 04680f86f8f4f50dd092058debe0d45d07bd72f9 | |
parent | 0fab9d0a5db8322d0a2711fb2228a99f6e317df3 (diff) | |
download | gcc-53fdf0be639dbf77f048327f84f3eb1e17972d50.zip gcc-53fdf0be639dbf77f048327f84f3eb1e17972d50.tar.gz gcc-53fdf0be639dbf77f048327f84f3eb1e17972d50.tar.bz2 |
tradcpp.c (rescan): Do not recognize directives when the # is indented.
* tradcpp.c (rescan): Do not recognize directives when the #
is indented.
* gcc.dg/cpp/tr-direct.c: New test.
From-SVN: r35139
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/cpp/tr-direct.c | 11 | ||||
-rw-r--r-- | gcc/tradcpp.c | 27 |
4 files changed, 21 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54c2514..fb8c21b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2000-07-19 Zack Weinberg <zack@wolery.cumb.org> + * tradcpp.c (rescan): Do not recognize directives when the # + is indented. + +2000-07-19 Zack Weinberg <zack@wolery.cumb.org> + Implement C++ named operators. * cpplib.h (TTYPE_TABLE): Move CPP_MIN and CPP_MAX into block diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d6b01a6..c9d7cf3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2000-07-19 Zack Weinberg <zack@wolery.cumb.org> + * gcc.dg/cpp/tr-direct.c: New test. + * gcc.dg/cpp/directiv.c, gcc.dg/cpp/macsyntx.c, gcc.dg/cpp/undef1.c: Tweak error regexps. diff --git a/gcc/testsuite/gcc.dg/cpp/tr-direct.c b/gcc/testsuite/gcc.dg/cpp/tr-direct.c new file mode 100644 index 0000000..309ec49 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/tr-direct.c @@ -0,0 +1,11 @@ +/* Test for some basic aspects of -traditional directive processing. */ + +/* { dg-do preprocess } */ +/* { dg-options -traditional } */ + +/* There is no #error directive. */ + +#error bad /* { dg-bogus "bad" } */ + +/* Directives with their #s indented are not recognized. */ + #if 0 /* { dg-bogus "unterminated" } */ diff --git a/gcc/tradcpp.c b/gcc/tradcpp.c index 971dfef..d48510c 100644 --- a/gcc/tradcpp.c +++ b/gcc/tradcpp.c @@ -1187,32 +1187,11 @@ do { ip = &instack[indepth]; \ if (ident_length) goto specialchar; - /* # keyword: a # must be first nonblank char on the line */ + /* # keyword: a # must be the first char on the line */ if (beg_of_line == 0) goto randomchar; - { - U_CHAR *bp; - - /* Scan from start of line, skipping whitespace, comments - and backslash-newlines, and see if we reach this #. - If not, this # is not special. */ - bp = beg_of_line; - while (1) { - if (is_hor_space[*bp]) - bp++; - else if (*bp == '\\' && bp[1] == '\n') - bp += 2; - else if (*bp == '/' && (newline_fix (bp + 1), bp[1]) == '*') { - bp += 2; - while (!(*bp == '*' && (newline_fix (bp + 1), bp[1]) == '/')) - bp++; - bp += 1; - } - else break; - } - if (bp + 1 != ibp) - goto randomchar; - } + if (beg_of_line + 1 != ibp) + goto randomchar; /* This # can start a directive. */ |