Thanks! also r334924 On Sun, Jun 17, 2018 at 1:03 PM Richard Smith <rich...@metafoo.co.uk> wrote:
> Fixed in r334917. > > On 17 June 2018 at 02:51, Richard Smith <rich...@metafoo.co.uk> wrote: > >> Looks like a bug / faulty assumption in the libc++ test suite. Should be >> easy to fix, but I'm not sure how pervasive the issue is. I'll take a look >> in the morning. If this is blocking anything in the mean time, feel free to >> revert this (or fix libc++ yourself). >> >> >> On Sun, 17 Jun 2018, 01:40 Vitaly Buka via cfe-commits, < >> cfe-commits@lists.llvm.org> wrote: >> >>> Hi Richard, >>> After this patch check-all fails for me with: >>> llvm-project/libcxx/utils/libcxx/test/config.py", line 467, in >>> configure_features >>> int(macros['__cpp_deduction_guides']) < 201611: >>> ValueError: invalid literal for int() with base 10: '201703L' >>> >>> On Wed, Jun 13, 2018 at 5:44 PM Richard Smith via cfe-commits < >>> cfe-commits@lists.llvm.org> wrote: >>> >>>> Author: rsmith >>>> Date: Wed Jun 13 17:40:20 2018 >>>> New Revision: 334677 >>>> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=334677&view=rev >>>> Log: >>>> P0096R5, P0941R2: Update to match latest feature test macro >>>> specification. >>>> >>>> Modified: >>>> cfe/trunk/lib/Frontend/InitPreprocessor.cpp >>>> cfe/trunk/test/Lexer/cxx-features.cpp >>>> cfe/trunk/www/cxx_status.html >>>> >>>> Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=334677&r1=334676&r2=334677&view=diff >>>> >>>> ============================================================================== >>>> --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original) >>>> +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Wed Jun 13 17:40:20 2018 >>>> @@ -487,82 +487,86 @@ static void InitializeCPlusPlusFeatureTe >>>> MacroBuilder >>>> &Builder) { >>>> // C++98 features. >>>> if (LangOpts.RTTI) >>>> - Builder.defineMacro("__cpp_rtti", "199711"); >>>> + Builder.defineMacro("__cpp_rtti", "199711L"); >>>> if (LangOpts.CXXExceptions) >>>> - Builder.defineMacro("__cpp_exceptions", "199711"); >>>> + Builder.defineMacro("__cpp_exceptions", "199711L"); >>>> >>>> // C++11 features. >>>> if (LangOpts.CPlusPlus11) { >>>> - Builder.defineMacro("__cpp_unicode_characters", "200704"); >>>> - Builder.defineMacro("__cpp_raw_strings", "200710"); >>>> - Builder.defineMacro("__cpp_unicode_literals", "200710"); >>>> - Builder.defineMacro("__cpp_user_defined_literals", "200809"); >>>> - Builder.defineMacro("__cpp_lambdas", "200907"); >>>> + Builder.defineMacro("__cpp_unicode_characters", "200704L"); >>>> + Builder.defineMacro("__cpp_raw_strings", "200710L"); >>>> + Builder.defineMacro("__cpp_unicode_literals", "200710L"); >>>> + Builder.defineMacro("__cpp_user_defined_literals", "200809L"); >>>> + Builder.defineMacro("__cpp_lambdas", "200907L"); >>>> Builder.defineMacro("__cpp_constexpr", >>>> - LangOpts.CPlusPlus17 ? "201603" : >>>> - LangOpts.CPlusPlus14 ? "201304" : "200704"); >>>> + LangOpts.CPlusPlus17 ? "201603L" : >>>> + LangOpts.CPlusPlus14 ? "201304L" : "200704"); >>>> Builder.defineMacro("__cpp_range_based_for", >>>> - LangOpts.CPlusPlus17 ? "201603" : "200907"); >>>> + LangOpts.CPlusPlus17 ? "201603L" : "200907"); >>>> Builder.defineMacro("__cpp_static_assert", >>>> - LangOpts.CPlusPlus17 ? "201411" : "200410"); >>>> - Builder.defineMacro("__cpp_decltype", "200707"); >>>> - Builder.defineMacro("__cpp_attributes", "200809"); >>>> - Builder.defineMacro("__cpp_rvalue_references", "200610"); >>>> - Builder.defineMacro("__cpp_variadic_templates", "200704"); >>>> - Builder.defineMacro("__cpp_initializer_lists", "200806"); >>>> - Builder.defineMacro("__cpp_delegating_constructors", "200604"); >>>> - Builder.defineMacro("__cpp_nsdmi", "200809"); >>>> - Builder.defineMacro("__cpp_inheriting_constructors", "201511"); >>>> - Builder.defineMacro("__cpp_ref_qualifiers", "200710"); >>>> - Builder.defineMacro("__cpp_alias_templates", "200704"); >>>> + LangOpts.CPlusPlus17 ? "201411L" : "200410"); >>>> + Builder.defineMacro("__cpp_decltype", "200707L"); >>>> + Builder.defineMacro("__cpp_attributes", "200809L"); >>>> + Builder.defineMacro("__cpp_rvalue_references", "200610L"); >>>> + Builder.defineMacro("__cpp_variadic_templates", "200704L"); >>>> + Builder.defineMacro("__cpp_initializer_lists", "200806L"); >>>> + Builder.defineMacro("__cpp_delegating_constructors", "200604L"); >>>> + Builder.defineMacro("__cpp_nsdmi", "200809L"); >>>> + Builder.defineMacro("__cpp_inheriting_constructors", "201511L"); >>>> + Builder.defineMacro("__cpp_ref_qualifiers", "200710L"); >>>> + Builder.defineMacro("__cpp_alias_templates", "200704L"); >>>> } >>>> if (LangOpts.ThreadsafeStatics) >>>> - Builder.defineMacro("__cpp_threadsafe_static_init", "200806"); >>>> + Builder.defineMacro("__cpp_threadsafe_static_init", "200806L"); >>>> >>>> // C++14 features. >>>> if (LangOpts.CPlusPlus14) { >>>> - Builder.defineMacro("__cpp_binary_literals", "201304"); >>>> - Builder.defineMacro("__cpp_digit_separators", "201309"); >>>> - Builder.defineMacro("__cpp_init_captures", "201304"); >>>> - Builder.defineMacro("__cpp_generic_lambdas", "201304"); >>>> - Builder.defineMacro("__cpp_decltype_auto", "201304"); >>>> - Builder.defineMacro("__cpp_return_type_deduction", "201304"); >>>> - Builder.defineMacro("__cpp_aggregate_nsdmi", "201304"); >>>> - Builder.defineMacro("__cpp_variable_templates", "201304"); >>>> + Builder.defineMacro("__cpp_binary_literals", "201304L"); >>>> + Builder.defineMacro("__cpp_digit_separators", "201309L"); >>>> + Builder.defineMacro("__cpp_init_captures", "201304L"); >>>> + Builder.defineMacro("__cpp_generic_lambdas", "201304L"); >>>> + Builder.defineMacro("__cpp_decltype_auto", "201304L"); >>>> + Builder.defineMacro("__cpp_return_type_deduction", "201304L"); >>>> + Builder.defineMacro("__cpp_aggregate_nsdmi", "201304L"); >>>> + Builder.defineMacro("__cpp_variable_templates", "201304L"); >>>> } >>>> if (LangOpts.SizedDeallocation) >>>> - Builder.defineMacro("__cpp_sized_deallocation", "201309"); >>>> + Builder.defineMacro("__cpp_sized_deallocation", "201309L"); >>>> >>>> // C++17 features. >>>> if (LangOpts.CPlusPlus17) { >>>> - Builder.defineMacro("__cpp_hex_float", "201603"); >>>> - Builder.defineMacro("__cpp_inline_variables", "201606"); >>>> - Builder.defineMacro("__cpp_noexcept_function_type", "201510"); >>>> - Builder.defineMacro("__cpp_capture_star_this", "201603"); >>>> - Builder.defineMacro("__cpp_if_constexpr", "201606"); >>>> - Builder.defineMacro("__cpp_deduction_guides", "201703"); >>>> - Builder.defineMacro("__cpp_template_auto", "201606"); >>>> - Builder.defineMacro("__cpp_namespace_attributes", "201411"); >>>> - Builder.defineMacro("__cpp_enumerator_attributes", "201411"); >>>> - Builder.defineMacro("__cpp_nested_namespace_definitions", >>>> "201411"); >>>> - Builder.defineMacro("__cpp_variadic_using", "201611"); >>>> - Builder.defineMacro("__cpp_aggregate_bases", "201603"); >>>> - Builder.defineMacro("__cpp_structured_bindings", "201606"); >>>> - Builder.defineMacro("__cpp_nontype_template_args", "201411"); >>>> - Builder.defineMacro("__cpp_fold_expressions", "201603"); >>>> + Builder.defineMacro("__cpp_hex_float", "201603L"); >>>> + Builder.defineMacro("__cpp_inline_variables", "201606L"); >>>> + Builder.defineMacro("__cpp_noexcept_function_type", "201510L"); >>>> + Builder.defineMacro("__cpp_capture_star_this", "201603L"); >>>> + Builder.defineMacro("__cpp_if_constexpr", "201606L"); >>>> + Builder.defineMacro("__cpp_deduction_guides", "201703L"); >>>> + Builder.defineMacro("__cpp_template_auto", "201606L"); // (old >>>> name) >>>> + Builder.defineMacro("__cpp_namespace_attributes", "201411L"); >>>> + Builder.defineMacro("__cpp_enumerator_attributes", "201411L"); >>>> + Builder.defineMacro("__cpp_nested_namespace_definitions", >>>> "201411L"); >>>> + Builder.defineMacro("__cpp_variadic_using", "201611L"); >>>> + Builder.defineMacro("__cpp_aggregate_bases", "201603L"); >>>> + Builder.defineMacro("__cpp_structured_bindings", "201606L"); >>>> + Builder.defineMacro("__cpp_nontype_template_args", "201411L"); >>>> + Builder.defineMacro("__cpp_fold_expressions", "201603L"); >>>> + Builder.defineMacro("__cpp_guaranteed_copy_elision", "201606L"); >>>> + Builder.defineMacro("__cpp_nontype_template_parameter_auto", >>>> "201606L"); >>>> } >>>> if (LangOpts.AlignedAllocation) >>>> - Builder.defineMacro("__cpp_aligned_new", "201606"); >>>> + Builder.defineMacro("__cpp_aligned_new", "201606L"); >>>> + if (LangOpts.RelaxedTemplateTemplateArgs) >>>> + Builder.defineMacro("__cpp_template_template_args", "201611L"); >>>> >>>> // TS features. >>>> if (LangOpts.ConceptsTS) >>>> - Builder.defineMacro("__cpp_experimental_concepts", "1"); >>>> + Builder.defineMacro("__cpp_experimental_concepts", "1L"); >>>> if (LangOpts.CoroutinesTS) >>>> Builder.defineMacro("__cpp_coroutines", "201703L"); >>>> >>>> // Potential future breaking changes. >>>> if (LangOpts.Char8) >>>> - Builder.defineMacro("__cpp_char8_t", "201803"); >>>> + Builder.defineMacro("__cpp_char8_t", "201803L"); >>>> } >>>> >>>> static void InitializePredefinedMacros(const TargetInfo &TI, >>>> >>>> Modified: cfe/trunk/test/Lexer/cxx-features.cpp >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Lexer/cxx-features.cpp?rev=334677&r1=334676&r2=334677&view=diff >>>> >>>> ============================================================================== >>>> --- cfe/trunk/test/Lexer/cxx-features.cpp (original) >>>> +++ cfe/trunk/test/Lexer/cxx-features.cpp Wed Jun 13 17:40:20 2018 >>>> @@ -1,9 +1,11 @@ >>>> // RUN: %clang_cc1 -std=c++98 -fcxx-exceptions -verify %s >>>> // RUN: %clang_cc1 -std=c++11 -fcxx-exceptions -verify %s >>>> -// RUN: %clang_cc1 -std=c++1y -fcxx-exceptions -fsized-deallocation >>>> -verify %s >>>> // RUN: %clang_cc1 -std=c++14 -fcxx-exceptions -fsized-deallocation >>>> -verify %s >>>> -// RUN: %clang_cc1 -std=c++1z -fcxx-exceptions -fsized-deallocation >>>> -verify %s >>>> -// RUN: %clang_cc1 -std=c++1z -fcxx-exceptions -fsized-deallocation >>>> -fconcepts-ts -DCONCEPTS_TS=1 -verify %s >>>> +// RUN: %clang_cc1 -std=c++17 -fcxx-exceptions -fsized-deallocation >>>> -verify %s >>>> +// RUN: %clang_cc1 -std=c++2a -fcxx-exceptions -fsized-deallocation >>>> -verify %s >>>> +// >>>> +// RUN: %clang_cc1 -std=c++17 -fcxx-exceptions -fsized-deallocation >>>> -frelaxed-template-template-args -DRELAXED_TEMPLATE_TEMPLATE_ARGS=1 -verify >>>> %s >>>> +// RUN: %clang_cc1 -std=c++17 -fcxx-exceptions -fsized-deallocation >>>> -fconcepts-ts -DCONCEPTS_TS=1 -verify %s >>>> // RUN: %clang_cc1 -fno-rtti -fno-threadsafe-statics -verify %s >>>> -DNO_EXCEPTIONS -DNO_RTTI -DNO_THREADSAFE_STATICS -fsized-deallocation >>>> // RUN: %clang_cc1 -fcoroutines-ts -DNO_EXCEPTIONS -DCOROUTINES >>>> -verify -fsized-deallocation %s >>>> // RUN: %clang_cc1 -fchar8_t -DNO_EXCEPTIONS -DCHAR8_T -verify >>>> -fsized-deallocation %s >>>> @@ -12,13 +14,13 @@ >>>> >>>> // FIXME using `defined` in a macro has undefined behavior. >>>> #if __cplusplus < 201103L >>>> -#define check(macro, cxx98, cxx11, cxx14, cxx1z) cxx98 == 0 ? >>>> defined(__cpp_##macro) : __cpp_##macro != cxx98 >>>> +#define check(macro, cxx98, cxx11, cxx14, cxx17) cxx98 == 0 ? >>>> defined(__cpp_##macro) : __cpp_##macro != cxx98 >>>> #elif __cplusplus < 201402L >>>> -#define check(macro, cxx98, cxx11, cxx14, cxx1z) cxx11 == 0 ? >>>> defined(__cpp_##macro) : __cpp_##macro != cxx11 >>>> +#define check(macro, cxx98, cxx11, cxx14, cxx17) cxx11 == 0 ? >>>> defined(__cpp_##macro) : __cpp_##macro != cxx11 >>>> #elif __cplusplus < 201406L >>>> -#define check(macro, cxx98, cxx11, cxx14, cxx1z) cxx14 == 0 ? >>>> defined(__cpp_##macro) : __cpp_##macro != cxx14 >>>> +#define check(macro, cxx98, cxx11, cxx14, cxx17) cxx14 == 0 ? >>>> defined(__cpp_##macro) : __cpp_##macro != cxx14 >>>> #else >>>> -#define check(macro, cxx98, cxx11, cxx14, cxx1z) cxx1z == 0 ? >>>> defined(__cpp_##macro) : __cpp_##macro != cxx1z >>>> +#define check(macro, cxx98, cxx11, cxx14, cxx17) cxx17 == 0 ? >>>> defined(__cpp_##macro) : __cpp_##macro != cxx17 >>>> #endif >>>> >>>> // --- C++17 features --- >>>> @@ -35,6 +37,10 @@ >>>> #error "wrong value for __cpp_aligned_new" >>>> #endif >>>> >>>> +#if check(guaranteed_copy_elision, 0, 0, 0, 201606) >>>> +#error "wrong value for __cpp_guaranteed_copy_elision" >>>> +#endif >>>> + >>>> #if check(noexcept_function_type, 0, 0, 0, 201510) >>>> #error "wrong value for __cpp_noexcept_function_type" >>>> #endif >>>> @@ -61,6 +67,12 @@ >>>> #error "wrong value for __cpp_deduction_guides" >>>> #endif >>>> >>>> +#if check(nontype_template_parameter_auto, 0, 0, 0, 201606) >>>> +#error "wrong value for __cpp_nontype_template_parameter_auto" >>>> +#endif >>>> + >>>> +// This is the old name (from P0096R4) for >>>> +// __cpp_nontype_template_parameter_auto >>>> #if check(template_auto, 0, 0, 0, 201606) >>>> #error "wrong value for __cpp_template_auto" >>>> #endif >>>> @@ -75,6 +87,7 @@ >>>> #error "wrong value for __cpp_enumerator_attributes" >>>> #endif >>>> >>>> +// This is an old name (from P0096R4), now removed from SD-6. >>>> #if check(nested_namespace_definitions, 0, 0, 0, 201411) >>>> #error "wrong value for __cpp_nested_namespace_definitions" >>>> #endif >>>> @@ -97,7 +110,9 @@ >>>> #error "wrong value for __cpp_nontype_template_args" >>>> #endif >>>> >>>> -#if check(template_template_args, 0, 0, 0, 0) // FIXME: should be >>>> 201611 when feature is enabled >>>> +#if defined(RELAXED_TEMPLATE_TEMPLATE_ARGS) \ >>>> + ? check(template_template_args, 0, 0, 0, 201611) \ >>>> + : check(template_template_args, 0, 0, 0, 0) >>>> #error "wrong value for __cpp_template_template_args" >>>> #endif >>>> >>>> >>>> Modified: cfe/trunk/www/cxx_status.html >>>> URL: >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_status.html?rev=334677&r1=334676&r2=334677&view=diff >>>> >>>> ============================================================================== >>>> --- cfe/trunk/www/cxx_status.html (original) >>>> +++ cfe/trunk/www/cxx_status.html Wed Jun 13 17:40:20 2018 >>>> @@ -962,7 +962,7 @@ as the draft C++2a standard evolves. >>>> <tr> >>>> <td>Feature test macros</td> >>>> <td><a href="http://wg21.link/p0941r2">P0941R2</a></td> >>>> - <td class="na" align="center"><a href="#sd6">(see below)</a></td> >>>> + <td class="full" align="center"><a href="#sd6">(see >>>> below)</a></td> >>>> </tr> >>>> <tr> >>>> <td><tt>explicit(bool)</tt></td> >>>> @@ -1002,9 +1002,9 @@ and library features that are not part o >>>> <th>Available in Clang?</th> >>>> </tr> >>>> <tr id="sd6"> >>>> - <td rowspan="4">SD-6: SG10 feature test recommendations</td> >>>> - <td rowspan="4"><a href=" >>>> http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations >>>> ">SD-6</a></td> >>>> - <td rowspan="4">N/A</td> >>>> + <td rowspan="5">SD-6: SG10 feature test recommendations</td> >>>> + <td rowspan="5"><a href=" >>>> http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations >>>> ">SD-6</a></td> >>>> + <td rowspan="5">N/A</td> >>>> <td class="full" align="center"> >>>> Clang 3.4 (<a href=" >>>> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3745 >>>> ">N3745</a>)</br> >>>> </td> >>>> @@ -1024,6 +1024,11 @@ and library features that are not part o >>>> Clang 5 (<a href="http://wg21.link/p0096r4">P0096R4</a>)</a> >>>> </td> >>>> </tr> >>>> + <tr> >>>> + <td class="svn" align="center"> >>>> + SVN (<a href="http://wg21.link/p0096r5">P0096R5</a>)</a> >>>> + </td> >>>> + </tr> >>>> <!-- FIXME: Implement latest recommendations. >>>> <tr> >>>> <td class="svn" align="center"> >>>> @@ -1033,7 +1038,7 @@ and library features that are not part o >>>> --> >>>> <!-- No compiler support is known to be needed for: >>>> * Concurrency TS >>>> - * Parallelism TS >>>> + * Parallelism TS (v1, v2) >>>> * Ranges TS >>>> * Networking TS >>>> * File System TS >>>> @@ -1058,20 +1063,20 @@ and library features that are not part o >>>> <td class="none" align="center">No</td> >>>> </tr> >>>> <tr> >>>> - <td>[DRAFT TS] Library Fundamentals, Version 2 >>>> (<tt>source_location</tt>)</td> >>>> - <td><a href="http://wg21.link/n4600">N4600</a></td> >>>> + <td>[TS] Library Fundamentals, Version 2 >>>> (<tt>source_location</tt>)</td> >>>> + <td><a href="http://wg21.link/n4617">N4617</a></td> >>>> <td>N/A</td> >>>> <td class="none" align="center">No</td> >>>> </tr> >>>> <tr> >>>> - <td>[DRAFT TS] Modules</td> >>>> - <td><a href="http://wg21.link/n4667">N4667</a></td> >>>> + <td>[TS] Modules</td> >>>> + <td><a href="http://wg21.link/n4720">N4720</a></td> >>>> <td><tt>-fmodules-ts</tt></td> >>>> <td class="none" align="center">WIP</td> >>>> </tr> >>>> <tr> >>>> <td>[DRAFT TS] Reflection</td> >>>> - <td><a href="http://wg21.link/p0194r6">P0194R6</a></td> >>>> + <td><a href="http://wg21.link/n4746">N4746</a></td> >>>> <td></td> >>>> <td class="none" align="center">No</td> >>>> </tr> >>>> >>>> >>>> _______________________________________________ >>>> cfe-commits mailing list >>>> cfe-commits@lists.llvm.org >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>>> >>> _______________________________________________ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits