c++: Parser entry cleanup
authorNathan Sidwell <nathan@acm.org>
Tue, 14 Jul 2020 17:49:03 +0000 (10:49 -0700)
committerNathan Sidwell <nathan@acm.org>
Tue, 14 Jul 2020 17:58:36 +0000 (10:58 -0700)
commit0257997968fc4b62547cdc2a5cf5e01777bd7ed7
tree5ff55f5854295e25b213772207d774d23db2e3d9
parentb52643ab9004ba8ecea06a399885fe1e04183eda
c++: Parser entry cleanup

The handling of PCH is a little trick, because we have to deal with it before
allocating memory.  I found the layering somewhat confusing.  This patch
reorganizes that, so that the stopping of PCH is done in exactly one place,
and the ordering of lexer creation relative to that is much clearer.

I also changed the error message about multiple source files as with C++20,
'modules' means something rather specific.

Other than the error message changes, no functional changes.

gcc/cp/
* parser.c (cp_lexer_alloc): Do not deal with PCH here.
(cp_lexer_new_main): Deal with PCH here.  Store the tokens directly
into the buffer.
(cp_lexer_new_from_tokens): Assert last token isn't purged either.
(cp_lexer_get_preprocessor_token): Change first arg to flags, adjust.
(cp_parser_new): Pass the lexer in, don't create it here.
(cp_parser_translation_unit): Initialize access checks here.
(cp_parser_initial_pragma): First token is provided by caller,
don't deal with PCH stopping here.  Adjust error message.
(c_parse_file): Adjust, change error message to avoid C++20 module
confusion.
gcc/cp/parser.c