gcc/libcpp
Tom Tromey fb771b9dad 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
2017-11-13 20:17:42 +00:00
..
include Implement __VA_OPT__ 2017-11-13 20:17:42 +00:00
po Regenerate .pot files. 2017-08-04 23:21:23 +01:00
ChangeLog Implement __VA_OPT__ 2017-11-13 20:17:42 +00:00
ChangeLog.jit
Makefile.in * Makefile.in (po/$(PACKAGE).pot): Adjust bug reporting URL. 2017-02-09 08:55:46 +00:00
aclocal.m4
charset.c
config.in
configure
configure.ac
directives-only.c
directives.c diagnostics: get rid of *_at_rich_loc in favor of overloading 2017-10-31 20:21:58 +00:00
errors.c diagnostics: get rid of *_at_rich_loc in favor of overloading 2017-10-31 20:21:58 +00:00
expr.c invoke.texi: Document -std=c++17 and -std=gnu++17 and document c++1z and gnu++1z as deprecated. 2017-09-15 18:15:46 +02:00
files.c
identifiers.c Implement __VA_OPT__ 2017-11-13 20:17:42 +00:00
init.c Implement __VA_OPT__ 2017-11-13 20:17:42 +00:00
internal.h Implement __VA_OPT__ 2017-11-13 20:17:42 +00:00
lex.c Implement __VA_OPT__ 2017-11-13 20:17:42 +00:00
line-map.c libcpp: preserve ranges within macro expansions (PR c++/79300) 2017-07-07 18:49:09 +00:00
location-example.txt
macro.c Implement __VA_OPT__ 2017-11-13 20:17:42 +00:00
makeucnid.c
mkdeps.c
pch.c Implement __VA_OPT__ 2017-11-13 20:17:42 +00:00
symtab.c
system.h
traditional.c
ucnid.h
ucnid.tab