r334677 - P0096R5, P0941R2: Update to match latest feature test macro specification.

Vitaly Buka via cfe-commits cfe-commits at lists.llvm.org
Sun Jun 17 23:29:01 PDT 2018


Thanks!
also r334924

On Sun, Jun 17, 2018 at 1:03 PM Richard Smith <richard at metafoo.co.uk> wrote:

> Fixed in r334917.
>
> On 17 June 2018 at 02:51, Richard Smith <richard at 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 at 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 at 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 at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180617/7833d34c/attachment-0001.html>


More information about the cfe-commits mailing list