r310694 - Implement latest feature test macro recommendations, P0096R4.

Hans Wennborg via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 11 09:17:03 PDT 2017


Thanks! I've merged r309054 in r310721 to make it apply cleanly, and
this one in r310722.

On Thu, Aug 10, 2017 at 8:42 PM, Richard Smith <richard at metafoo.co.uk> wrote:
> Hi Hans, this should go onto the Clang 5 branch. Thanks!
>
> On 10 August 2017 at 20:39, Richard Smith via cfe-commits
> <cfe-commits at lists.llvm.org> wrote:
>>
>> Author: rsmith
>> Date: Thu Aug 10 20:39:40 2017
>> New Revision: 310694
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=310694&view=rev
>> Log:
>> Implement latest feature test macro recommendations, P0096R4.
>>
>> 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=310694&r1=310693&r2=310694&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
>> +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Thu Aug 10 20:39:40 2017
>> @@ -498,6 +498,8 @@ static void InitializeCPlusPlusFeatureTe
>>      Builder.defineMacro("__cpp_ref_qualifiers", "200710");
>>      Builder.defineMacro("__cpp_alias_templates", "200704");
>>    }
>> +  if (LangOpts.ThreadsafeStatics)
>> +    Builder.defineMacro("__cpp_threadsafe_static_init", "200806");
>>
>>    // C++14 features.
>>    if (LangOpts.CPlusPlus14) {
>> @@ -520,6 +522,7 @@ static void InitializeCPlusPlusFeatureTe
>>      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", "201611");
>>      Builder.defineMacro("__cpp_template_auto", "201606");
>>      Builder.defineMacro("__cpp_namespace_attributes", "201411");
>>      Builder.defineMacro("__cpp_enumerator_attributes", "201411");
>> @@ -529,8 +532,6 @@ static void InitializeCPlusPlusFeatureTe
>>      Builder.defineMacro("__cpp_structured_bindings", "201606");
>>      Builder.defineMacro("__cpp_nontype_template_args", "201411");
>>      Builder.defineMacro("__cpp_fold_expressions", "201603");
>> -    // FIXME: This is not yet listed in SD-6.
>> -    Builder.defineMacro("__cpp_deduction_guides", "201611");
>>    }
>>    if (LangOpts.AlignedAllocation)
>>      Builder.defineMacro("__cpp_aligned_new", "201606");
>>
>> Modified: cfe/trunk/test/Lexer/cxx-features.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Lexer/cxx-features.cpp?rev=310694&r1=310693&r2=310694&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/Lexer/cxx-features.cpp (original)
>> +++ cfe/trunk/test/Lexer/cxx-features.cpp Thu Aug 10 20:39:40 2017
>> @@ -4,7 +4,7 @@
>>  // 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 -fno-rtti -verify %s -DNO_EXCEPTIONS -DNO_RTTI
>> +// RUN: %clang_cc1 -fno-rtti -fno-threadsafe-statics -verify %s
>> -DNO_EXCEPTIONS -DNO_RTTI -DNO_THREADSAFE_STATICS
>>  // RUN: %clang_cc1 -fcoroutines-ts -DNO_EXCEPTIONS -DCOROUTINES -verify
>> %s
>>
>>  // expected-no-diagnostics
>> @@ -26,11 +26,11 @@
>>  #error "wrong value for __cpp_hex_float"
>>  #endif
>>
>> -#if check(inline_variables, 0, 0, 0, 201606) // FIXME: provisional name
>> +#if check(inline_variables, 0, 0, 0, 201606)
>>  #error "wrong value for __cpp_inline_variables"
>>  #endif
>>
>> -#if check(aligned_new, 0, 0, 0, 201606) // FIXME: provisional name
>> +#if check(aligned_new, 0, 0, 0, 201606)
>>  #error "wrong value for __cpp_aligned_new"
>>  #endif
>>
>> @@ -48,7 +48,7 @@
>>
>>  // constexpr checked below
>>
>> -#if check(if_constexpr, 0, 0, 0, 201606) // FIXME: provisional name
>> +#if check(if_constexpr, 0, 0, 0, 201606)
>>  #error "wrong value for __cpp_if_constexpr"
>>  #endif
>>
>> @@ -56,11 +56,11 @@
>>
>>  // static_assert checked below
>>
>> -#if check(deduction_guides, 0, 0, 0, 201611) // FIXME: provisional name
>> +#if check(deduction_guides, 0, 0, 0, 201611)
>>  #error "wrong value for __cpp_deduction_guides"
>>  #endif
>>
>> -#if check(template_auto, 0, 0, 0, 201606) // FIXME: provisional name
>> +#if check(template_auto, 0, 0, 0, 201606)
>>  #error "wrong value for __cpp_template_auto"
>>  #endif
>>
>> @@ -80,7 +80,7 @@
>>
>>  // inheriting_constructors checked below
>>
>> -#if check(variadic_using, 0, 0, 0, 201611) // FIXME: provisional name
>> +#if check(variadic_using, 0, 0, 0, 201611)
>>  #error "wrong value for __cpp_variadic_using"
>>  #endif
>>
>> @@ -163,6 +163,10 @@
>>  #error "wrong value for __cpp_user_defined_literals"
>>  #endif
>>
>> +#if defined(NO_THREADSAFE_STATICS) ? check(threadsafe_static_init, 0, 0,
>> 0, 0) : check(threadsafe_static_init, 200806, 200806, 200806, 200806)
>> +#error "wrong value for __cpp_threadsafe_static_init"
>> +#endif
>> +
>>  #if check(lambdas, 0, 200907, 200907, 200907)
>>  #error "wrong value for __cpp_lambdas"
>>  #endif
>>
>> Modified: cfe/trunk/www/cxx_status.html
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_status.html?rev=310694&r1=310693&r2=310694&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/www/cxx_status.html (original)
>> +++ cfe/trunk/www/cxx_status.html Thu Aug 10 20:39:40 2017
>> @@ -854,9 +854,9 @@ and library features that are not part o
>>      <th>Available in Clang?</th>
>>   </tr>
>>      <tr>
>> -      <td rowspan="3">SD-6: SG10 feature test recommendations</td>
>> -      <td rowspan="3"><a
>> href="http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-6</a></td>
>> -      <td rowspan="3">N/A</td>
>> +      <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 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>
>> @@ -871,6 +871,11 @@ and library features that are not part o
>>          Clang 4 (<a href="http://wg21.link/p0096r3">P0096R3</a>)</a>
>>        </td>
>>      </tr>
>> +    <tr>
>> +      <td class="svn" align="center">
>> +        Clang 5 (<a href="http://wg21.link/p0096r4">P0096R4</a>)</a>
>> +      </td>
>> +    </tr>
>>      <!-- FIXME: Implement latest recommendations.
>>      <tr>
>>        <td class="svn" align="center">
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>


More information about the cfe-commits mailing list