C++ Module keywords
authorNathan Sidwell <nathan@acm.org>
Tue, 1 Dec 2020 19:44:34 +0000 (11:44 -0800)
committerNathan Sidwell <nathan@acm.org>
Tue, 1 Dec 2020 19:47:32 +0000 (11:47 -0800)
commit41676a36a04d5ef86012195d84830df191ee6790
treec76e3047ed1adb2472ccc0bf119b43d51b3e5c96
parent6e3603e62ac3a811e0a1032821b8d045b020a9c1
C++ Module keywords

This adds the module keywords.  These are special internal tokens
generated by the preprocessor's module-control-line token peeking
logic.  Spelling them with a space means that they turn back into
regular tokens in preprocessor output (but do skew the column
numbering :()

gcc/c-family/
* c-common.c (module, import, export): New internal tokens (with
trailing space).
* c-common.h (RID__MODULE, RID__IMPORT & RID__EXPORT): Enumerate
them.
(D_CXX_MODULES, D_CXX_MODULES_FLAGS): Enable them.
* c-cppbuiltin.c (c_cpp_builtins): Feature macro.
gcc/cp/
* lex.c (init_reswords): Maybe enable module keywords.
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c-family/c-cppbuiltin.c
gcc/cp/lex.c