aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/parser.c8
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index eaa96a5..0d91aed 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-01 Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/26660
+ * parser.c (cp_parser_initial_pragma): Read one more token for
+ caller after reading PCH file in.
+
2006-05-31 Mark Mitchell <mark@codesourcery.com>
PR c++/27801
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 98d4c5e..0628b22 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -19006,12 +19006,14 @@ cp_parser_initial_pragma (cp_token *first_token)
while (first_token->type != CPP_PRAGMA_EOL && first_token->type != CPP_EOF)
cp_lexer_get_preprocessor_token (NULL, first_token);
- /* Read one more token to return to our caller. */
- cp_lexer_get_preprocessor_token (NULL, first_token);
-
/* Now actually load the PCH file. */
if (name)
c_common_pch_pragma (parse_in, TREE_STRING_POINTER (name));
+
+ /* Read one more token to return to our caller. We have to do this
+ after reading the PCH file in, since its pointers have to be
+ live. */
+ cp_lexer_get_preprocessor_token (NULL, first_token);
}
/* Normal parsing of a pragma token. Here we can (and must) use the