From f3d5aeebf434fd8b5f500e138c12ba55aefde27b Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Thu, 1 Jun 2006 04:55:32 +0000 Subject: re PR c++/26660 (PCH vs -save-temps, ICE while GCing) PR c++/26660 * parser.c (cp_parser_initial_pragma): Read one more token for caller after reading PCH file in. From-SVN: r114298 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/parser.c | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'gcc/cp') 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 + + 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 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 -- cgit v1.1