diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-04-02 13:57:02 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-04-02 13:57:02 +0200 |
commit | b8cd77f40ce01c28d0186e55c92e9fa4b887cf65 (patch) | |
tree | ff47d0221b193bff70b861ceb99c8e948da56e49 /libcpp | |
parent | 860f8be450a169917f899c603581c6839327766e (diff) | |
download | gcc-b8cd77f40ce01c28d0186e55c92e9fa4b887cf65.tar.gz |
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/ChangeLog | 5 | ||||
-rw-r--r-- | libcpp/lex.c | 7 |
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; } |