-
- Downloads
preprocessor: Enable __VA_OPT__ for C2x
C2x supports __VA_OPT__, so adjust libcpp not to pedwarn for uses of it (or of not passing any variable arguments to a variable-arguments macro) in standard C2x mode. I didn't try to duplicate existing tests for the details of the feature, just verified -pedantic-errors handling is as expected. And there's a reasonable argument (bug 98859) that __VA_OPT__ shouldn't be diagnosed in older standard modes at all (as opposed to not passing any variable arguments to a variable-arguments macro, for which older versions of the C standard require a diagnostic as a constraint violation); that argument applies to C as much as to C++, but I haven't made any changes in that regard. Bootstrapped with no regressions for x86_64-pc-linux-gnu. libcpp/ * init.cc (lang_defaults): Enable va_opt for STDC2X. * lex.cc (maybe_va_opt_error): Adjust diagnostic message for C. * macro.cc (_cpp_arguments_ok): Update comment. gcc/testsuite/ * gcc.dg/cpp/c11-vararg-1.c, gcc.dg/cpp/c2x-va-opt-1.c: New tests.
Showing
- gcc/testsuite/gcc.dg/cpp/c11-vararg-1.c 9 additions, 0 deletionsgcc/testsuite/gcc.dg/cpp/c11-vararg-1.c
- gcc/testsuite/gcc.dg/cpp/c2x-va-opt-1.c 11 additions, 0 deletionsgcc/testsuite/gcc.dg/cpp/c2x-va-opt-1.c
- libcpp/init.cc 1 addition, 1 deletionlibcpp/init.cc
- libcpp/lex.cc 8 additions, 2 deletionslibcpp/lex.cc
- libcpp/macro.cc 1 addition, 1 deletionlibcpp/macro.cc
Loading
Please register or sign in to comment