aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2023-01-24 16:26:50 -0500
committerJason Merrill <jason@redhat.com>2023-01-24 17:11:52 -0500
commit327d45c57ebd2655a7599df0f01b8b5e2f82eda7 (patch)
treece23762b7478d06501080542a32993cedba14177 /gcc/cp
parent39ade88fa1632c659c5c4ed065fa2b62d16a8670 (diff)
downloadgcc-327d45c57ebd2655a7599df0f01b8b5e2f82eda7.zip
gcc-327d45c57ebd2655a7599df0f01b8b5e2f82eda7.tar.gz
gcc-327d45c57ebd2655a7599df0f01b8b5e2f82eda7.tar.bz2
c++: "" #pragma at BOF [PR108504]
Since r11-2095 we pass flags to cp_lexer_get_preprocessor_token, and cp_lexer_new_main passes C_LEX_STRING_NO_JOIN when lexing most of the translation unit, but doesn't do that for the very first token; as a result, if the first token is a string literal, we try to join strings and get confused if that encounters a pragma. PR c++/108504 gcc/cp/ChangeLog: * parser.cc (cp_lexer_new_main): Pass C_LEX_STRING_NO_JOIN for first token, too. gcc/testsuite/ChangeLog: * g++.dg/ext/pragma1.C: New test.
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/parser.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
index b38c22e..07ec0e1 100644
--- a/gcc/cp/parser.cc
+++ b/gcc/cp/parser.cc
@@ -705,7 +705,7 @@ cp_lexer_new_main (void)
/* It's possible that parsing the first pragma will load a PCH file,
which is a GC collection point. So we have to do that before
allocating any memory. */
- cp_lexer_get_preprocessor_token (0, &token);
+ cp_lexer_get_preprocessor_token (C_LEX_STRING_NO_JOIN, &token);
cp_parser_initial_pragma (&token);
c_common_no_more_pch ();