aboutsummaryrefslogtreecommitdiff
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
parent860f8be450a169917f899c603581c6839327766e (diff)
downloadgcc-b8cd77f40ce01c28d0186e55c92e9fa4b887cf65.zip
gcc-b8cd77f40ce01c28d0186e55c92e9fa4b887cf65.tar.gz
gcc-b8cd77f40ce01c28d0186e55c92e9fa4b887cf65.tar.bz2
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
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr61977-1.c8
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr61977-2.c8
-rw-r--r--libcpp/ChangeLog5
-rw-r--r--libcpp/lex.c7
5 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d024bc9..a22eb60 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2015-04-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/61977
+ * gcc.target/powerpc/pr61977-1.c: New test.
+ * gcc.target/powerpc/pr61977-2.c: New test.
+
2015-04-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/56100
diff --git a/gcc/testsuite/gcc.target/powerpc/pr61977-1.c b/gcc/testsuite/gcc.target/powerpc/pr61977-1.c
new file mode 100644
index 0000000..50e6d28
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr61977-1.c
@@ -0,0 +1,8 @@
+/* PR preprocessor/61977 */
+/* { dg-do preprocess } */
+/* { dg-options "-mno-altivec -mno-vsx" } */
+
+int y; vector
+int x;
+
+/* { dg-final { scan-file "pr61977-1.i" "(^|\\n)int y; vector\\n" } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/pr61977-2.c b/gcc/testsuite/gcc.target/powerpc/pr61977-2.c
new file mode 100644
index 0000000..305e45f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr61977-2.c
@@ -0,0 +1,8 @@
+/* PR preprocessor/61977 */
+/* { dg-do preprocess } */
+/* { dg-options "-maltivec" } */
+
+int y; vector
+int x;
+
+/* { dg-final { scan-file "pr61977-2.i" "(^|\\n)int y; __attribute__\\(\\(altivec\\(vector__\\)\\)\\)\\n" } } */
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index daaa11e..829abba 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 bca5629..d1e2211 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;
}