aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2015-04-02 13:57:02 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2015-04-02 13:57:02 +0200
commitb8cd77f40ce01c28d0186e55c92e9fa4b887cf65 (patch)
treeff47d0221b193bff70b861ceb99c8e948da56e49 /libcpp
parent860f8be450a169917f899c603581c6839327766e (diff)
re PR preprocessor/61977 (powerpc preprocessor breaks on lines that end with "vector")
PR preprocessor/61977 * lex.c (cpp_peek_token): Temporarily clear pfile->cb.line_change. * gcc.target/powerpc/pr61977-1.c: New test. * gcc.target/powerpc/pr61977-2.c: New test. From-SVN: r221839
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog5
-rw-r--r--libcpp/lex.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index daaa11ea127..829abba8cf9 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/61977
+ * lex.c (cpp_peek_token): Temporarily clear pfile->cb.line_change.
+
2015-03-23 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/65238
diff --git a/libcpp/lex.c b/libcpp/lex.c
index bca56299132..d1e221110fc 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -2080,6 +2080,12 @@ cpp_peek_token (cpp_reader *pfile, int index)
count = index;
pfile->keep_tokens++;
+ /* For peeked tokens temporarily disable line_change reporting,
+ until the tokens are parsed for real. */
+ void (*line_change) (cpp_reader *, const cpp_token *, int)
+ = pfile->cb.line_change;
+ pfile->cb.line_change = NULL;
+
do
{
peektok = _cpp_lex_token (pfile);
@@ -2090,6 +2096,7 @@ cpp_peek_token (cpp_reader *pfile, int index)
_cpp_backup_tokens_direct (pfile, count + 1);
pfile->keep_tokens--;
+ pfile->cb.line_change = line_change;
return peektok;
}