aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2005-01-31 22:05:07 +0000
committerMike Stump <mrs@gcc.gnu.org>2005-01-31 22:05:07 +0000
commit3d8a8aade36871c292e4f374262e9946cb6aa83c (patch)
tree23e04a3713ff8c299809b404d62cb8c9b197e1c4
parent9ea888348fda5bbe3f33ec2b241d7adb1c94383b (diff)
downloadgcc-3d8a8aade36871c292e4f374262e9946cb6aa83c.zip
gcc-3d8a8aade36871c292e4f374262e9946cb6aa83c.tar.gz
gcc-3d8a8aade36871c292e4f374262e9946cb6aa83c.tar.bz2
parser.c (cp_lexer_new_main): Get the first token, first, before doing anything.
* parser.c (cp_lexer_new_main): Get the first token, first, before doing anything. Radar 3929334 From-SVN: r94494
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/parser.c11
-rw-r--r--gcc/testsuite/g++.dg/pch/pch.C7
-rw-r--r--gcc/testsuite/g++.dg/pch/pch.Hs1
4 files changed, 20 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index d0ccb13..1baaf0b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-31 Mike Stump <mrs@apple.com>
+
+ * parser.c (cp_lexer_new_main): Get the first token, first, before
+ doing anything.
+
2005-01-31 Mark Mitchell <mark@codesourcery.com>
* decl.c (start_decl): Add missing parentheses.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 1599d9c..ab2a103 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -238,16 +238,19 @@ cp_lexer_new_main (void)
size_t space;
cp_token *buffer;
+ /* It's possible that lexing the first token will load a PCH file,
+ which is a GC collection point. So we have to grab the first
+ token before allocating any memory. Pragmas must not be deferred
+ as -fpch-preprocess can generate a pragma to load the PCH file in
+ the preprocessed output used by -save-temps. */
+ cp_lexer_get_preprocessor_token (NULL, &first_token);
+
/* Tell cpplib we want CPP_PRAGMA tokens. */
cpp_get_options (parse_in)->defer_pragmas = true;
/* Tell c_lex not to merge string constants. */
c_lex_return_raw_strings = true;
- /* It's possible that lexing the first token will load a PCH file,
- which is a GC collection point. So we have to grab the first
- token before allocating any memory. */
- cp_lexer_get_preprocessor_token (NULL, &first_token);
c_common_no_more_pch ();
/* Allocate the memory. */
diff --git a/gcc/testsuite/g++.dg/pch/pch.C b/gcc/testsuite/g++.dg/pch/pch.C
new file mode 100644
index 0000000..4539396
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/pch.C
@@ -0,0 +1,7 @@
+// { dg-options "-save-temps -fpch-preprocess -I." }
+
+#include "pch.H"
+int main()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/pch/pch.Hs b/gcc/testsuite/g++.dg/pch/pch.Hs
new file mode 100644
index 0000000..4bd8276
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pch/pch.Hs
@@ -0,0 +1 @@
+// empty file