diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2006-06-01 04:55:32 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2006-06-01 04:55:32 +0000 |
commit | f3d5aeebf434fd8b5f500e138c12ba55aefde27b (patch) | |
tree | 4365b2760e10f767d99a2ec155b57e49ba8c4f83 | |
parent | 699fa7aa1a796f815f01518b0ab622e8f478c7dc (diff) | |
download | gcc-f3d5aeebf434fd8b5f500e138c12ba55aefde27b.zip gcc-f3d5aeebf434fd8b5f500e138c12ba55aefde27b.tar.gz gcc-f3d5aeebf434fd8b5f500e138c12ba55aefde27b.tar.bz2 |
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
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 8 |
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 |