diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 4 | ||||
-rw-r--r-- | clang/test/Lexer/cxx-features.cpp | 21 | ||||
-rw-r--r-- | clang/www/cxx_status.html | 4 |
3 files changed, 27 insertions, 2 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 0351106a0ae..0ffc0c6ee60 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -500,8 +500,12 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts, // C++17 features. if (LangOpts.CPlusPlus1z) { Builder.defineMacro("__cpp_hex_float", "201603"); + Builder.defineMacro("__cpp_inline_variables", "201606"); + //Builder.defineMacro("__cpp_aligned_new", "201606"); //Builder.defineMacro("__cpp_noexcept_function_type", "201510"); Builder.defineMacro("__cpp_capture_star_this", "201603"); + Builder.defineMacro("__cpp_if_constexpr", "201606"); + //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"); diff --git a/clang/test/Lexer/cxx-features.cpp b/clang/test/Lexer/cxx-features.cpp index 18fdaa5dda3..f7a4ce12985 100644 --- a/clang/test/Lexer/cxx-features.cpp +++ b/clang/test/Lexer/cxx-features.cpp @@ -26,6 +26,15 @@ #error "wrong value for __cpp_hex_float" #endif +#if check(inline_variables, 0, 0, 0, 201606) // FIXME: provisional name +#error "wrong value for __cpp_inline_variables" +#endif + +#if check(aligned_new, 0, 0, 0, 0) // FIXME: provisional name +// FIXME: value shuld be 201606 for cxx1z once implemented +#error "wrong value for __cpp_aligned_new" +#endif + #if check(noexcept_function_type, 0, 0, 0, 0) // FIXME: value shuld be 201510 for cxx1z once implemented #error "wrong value for __cpp_noexcept_function_type" @@ -41,10 +50,19 @@ // FIXME: bump __cpp_constexpr to 201603 for constexpr lambda support +#if check(if_constexpr, 0, 0, 0, 201606) // FIXME: provisional name +#error "wrong value for __cpp_if_constexpr" +#endif + // range_based_for checked below // static_assert checked below +#if check(template_auto, 0, 0, 0, 0) // FIXME: provisional name +// FIXME: value shuld be 201606 for cxx1z once implemented +#error "wrong value for __cpp_template_auto" +#endif + #if check(namespace_attributes, 0, 0, 0, 201411) // FIXME: allowed without warning in C++14 and C++11 #error "wrong value for __cpp_namespace_attributes" @@ -63,6 +81,9 @@ #error "wrong value for __cpp_aggregate_bases" #endif +// FIXME: structured_bindings / decomposition_decl name not yet settled, and +// Clang implementation is incomplete. + #if check(nontype_template_args, 0, 0, 0, 201411) #error "wrong value for __cpp_nontype_template_args" #endif diff --git a/clang/www/cxx_status.html b/clang/www/cxx_status.html index 76ab17317f2..1708211335f 100644 --- a/clang/www/cxx_status.html +++ b/clang/www/cxx_status.html @@ -761,8 +761,8 @@ Clang version they became available:</p> <th>Available in Clang?</th> </tr> <tr> - <td rowspan="2">SD-6: SG10 feature test recommendations</td> - <td rowspan="2"><a href="http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-6</a></td> + <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 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> |