aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-04-06 19:01:50 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2015-04-06 19:01:50 +0200
commite4b33ee5e46bc68fa06d422c3900e8a1f6382e60 (patch)
treec79cf04375157868003884367ab0881cdd4beefb
parent6f0250431c61af7dcc7066437674d87300b386da (diff)
downloadgcc-e4b33ee5e46bc68fa06d422c3900e8a1f6382e60.zip
gcc-e4b33ee5e46bc68fa06d422c3900e8a1f6382e60.tar.gz
gcc-e4b33ee5e46bc68fa06d422c3900e8a1f6382e60.tar.bz2
re PR preprocessor/61977 (powerpc preprocessor breaks on lines that end with "vector")
PR preprocessor/61977 * lex.c (cpp_peek_token): If peektok is CPP_EOF, back it up with all tokens peeked by the current function. * gcc.dg/cpp/pr61977.c: New test. From-SVN: r221882
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/cpp/pr61977.c4
-rw-r--r--libcpp/ChangeLog6
-rw-r--r--libcpp/lex.c7
4 files changed, 20 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9849363..6a0d000 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/61977
+ * gcc.dg/cpp/pr61977.c: New test.
+
2015-04-06 Ilya Enkovich <ilya.enkovich@intel.com>
* gcc.dg/lto/chkp-ctor-merge_0.c: New.
diff --git a/gcc/testsuite/gcc.dg/cpp/pr61977.c b/gcc/testsuite/gcc.dg/cpp/pr61977.c
new file mode 100644
index 0000000..faad473
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/pr61977.c
@@ -0,0 +1,4 @@
+/* PR preprocessor/61977 */
+/* { dg-do preprocess } */
+
+vector
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 829abba..2ad145f 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,9 @@
+2015-04-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/61977
+ * lex.c (cpp_peek_token): If peektok is CPP_EOF, back it up
+ with all tokens peeked by the current function.
+
2015-04-02 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/61977
diff --git a/libcpp/lex.c b/libcpp/lex.c
index d1e2211..ac96ff8 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -2090,11 +2090,14 @@ cpp_peek_token (cpp_reader *pfile, int index)
{
peektok = _cpp_lex_token (pfile);
if (peektok->type == CPP_EOF)
- return peektok;
+ {
+ index--;
+ break;
+ }
}
while (index--);
- _cpp_backup_tokens_direct (pfile, count + 1);
+ _cpp_backup_tokens_direct (pfile, count - index);
pfile->keep_tokens--;
pfile->cb.line_change = line_change;