diff options
author | Tom Tromey <tom@tromey.com> | 2017-11-13 20:17:42 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2017-11-13 20:17:42 +0000 |
commit | fb771b9dad6ef78a985353128cea48e620eb4324 (patch) | |
tree | d94251e8c98cb3a0a9bfd711707dea469e857c6b /libcpp/pch.c | |
parent | 4d85d480272fb7331924f04534e0f5f14b60421e (diff) | |
download | gcc-fb771b9dad6ef78a985353128cea48e620eb4324.zip gcc-fb771b9dad6ef78a985353128cea48e620eb4324.tar.gz gcc-fb771b9dad6ef78a985353128cea48e620eb4324.tar.bz2 |
Implement __VA_OPT__
This implements __VA_OPT__, a new preprocessor feature added in C++2A.
The paper can be found here:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0306r4.html
gcc/ChangeLog
* doc/cpp.texi (Variadic Macros): Document __VA_OPT__.
gcc/testsuite/ChangeLog
* c-c++-common/cpp/va-opt-pedantic.c: New file.
* c-c++-common/cpp/va-opt.c: New file.
* c-c++-common/cpp/va-opt-error.c: New file.
libcpp/ChangeLog
* pch.c (cpp_read_state): Set n__VA_OPT__.
* macro.c (vaopt_state): New class.
(_cpp_arguments_ok): Check va_opt flag.
(replace_args, create_iso_definition): Use vaopt_state.
* lex.c (lex_identifier_intern): Possibly issue errors for
__VA_OPT__.
(lex_identifier): Likewise.
(maybe_va_opt_error): New function.
* internal.h (struct lexer_state) <va_args_ok>: Update comment.
(struct spec_nodes) <n__VA_OPT__>: New field.
* init.c (struct lang_flags) <va_opt>: New field.
(lang_defaults): Add entries for C++2A. Update all entries for
va_opt.
(cpp_set_lang): Initialize va_opt.
* include/cpplib.h (struct cpp_options) <va_opt>: New field.
* identifiers.c (_cpp_init_hashtable): Initialize n__VA_OPT__.
From-SVN: r254707
Diffstat (limited to 'libcpp/pch.c')
-rw-r--r-- | libcpp/pch.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libcpp/pch.c b/libcpp/pch.c index cad4b87..b685a38 100644 --- a/libcpp/pch.c +++ b/libcpp/pch.c @@ -835,6 +835,7 @@ cpp_read_state (cpp_reader *r, const char *name, FILE *f, s->n_true = cpp_lookup (r, DSC("true")); s->n_false = cpp_lookup (r, DSC("false")); s->n__VA_ARGS__ = cpp_lookup (r, DSC("__VA_ARGS__")); + s->n__VA_OPT__ = cpp_lookup (r, DSC("__VA_OPT__")); s->n__has_include__ = cpp_lookup (r, DSC("__has_include__")); s->n__has_include_next__ = cpp_lookup (r, DSC("__has_include_next__")); } |