-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Toolset update: VS 2022 17.0 Preview 2 #2064
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Toolset update: VS 2022 17.0 Preview 2 #2064
Conversation
"EDG x64 is confused by overloads for __cdecl and __vectorcall PMFs"
"EDG x64 ICE with negative pointer indexing"
…XPR20, no manual changes.
a8efeb3 to
bf08971
Compare
| _No_throw_sentinel_for<_Out> _OSe> | ||
| requires constructible_from<iter_value_t<_Out>, iter_rvalue_reference_t<_It>> | ||
| uninitialized_move_result<_It, _Out> _Uninitialized_move_unchecked( | ||
| _It _IFirst, _Se _ILast, _Out _OFirst, _OSe _OLast) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider removing the extra level of indent from here through 1646, removing the // on 1625, and simply wrapping this entire function definition in // clang-format off.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aha! This is another case where clang-format is confused by a requires-clause without parentheses. If I add them, it formats the rest of the function nicely (except that it omits a space and says requires(constructible_from, and still needs help wrapping the if constexpr variable template usage).
I'll do this in a followup PR, thanks.
|
|
||
| #if !defined(__clang__) && !defined(__EDG__) // TRANSITION, DevCom-1347136 | ||
| private: | ||
| private : |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That one is also really bad
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was worse without adding the following newline: 😹
private : template <class _Left, class _Right>
static constexpr bool _Nothrow_plus_equal =
noexcept(_STD declval<_Left&>() += _STD declval<const _Right&>());As I mentioned in the changelog, I thought that this single space was tolerable (especially because it's in a compiler workaround that should be removed someday). Let me know if you'd rather disable clang-format here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll go ahead and disable clang-format here in a followup PR.
.clang-formatfor Clang 12.IndentRequirestotrue, which is our preferred convention.<algorithm>,indirectly_copyable_storablewould be formatted weirdly, so I'm disabling clang-format and manually adjusting the indentation to be more preferred.requires TRAIT<_Ty> = default;would be formatted weirdly. Instead of adding parentheses aroundTRAIT<_Ty>, I'm disabling clang-format./* strengthened */ requires TRAIT<_Ty> {would be formatted weirdly. This can be avoided by using a C++ comment, forcing clang-format to putrequires TRAIT<_Ty> {on the next line.// clang-format off- it gets confused about the level of indentation and damages the rest of the file. We need to add parentheses in order to avoid this.<ranges>, we need to add a blank line before_Nothrow_plus_equalto avoid weird damage. (Immediately above, clang-format will still changeprivate:toprivate :. This seemed like a tolerable amount of weirdness for a block of code that's a TRANSITION workaround, and not worth disabling clang-format entirely.)<utility>, clang-format has trouble with our strange-looking definitions ofmaxandmin. Forcing wrapping with empty comments is sufficient.tests/std/tests/P0088R3_variant/test.cpp, clang-format wants to coalesce and sort the Standard and libcxx headers (because the latter don't have an extension of.hpp). Adding a comment both prevents this, and explains where these headers are from.(_STD min) (_Num1, _Num2)because it's seeing a C-style cast. (Attempting to change that setting would affect way more lines, due to our(void)casts.)__cdecland__vectorcallPMFs"./BEand doesn't affect the IDE. This workaround is equally specific, so we don't have to worry about IntelliSense misbehaving if someone is using a non-default calling convention.constexprcontainers (stringandvector) for Clang._Alloc_temporary, where an old workaround (_Wrap) for C++/CX was incompatible with Clang 12's strict enforcement ofconstexprrules. Because C++/CX excludes C++20, we can make_Wrapspecific to C++/CX, so C++20constexprwon't attempt to activate a union member by initializing a sub-object. Then, adding_Get_value()insulates the rest of the library from caring about this._Alloc_temporary2for ABI safety.__cpp_constexpr_dynamic_alloc, so we can always define the Library macros__cpp_lib_constexpr_dynamic_alloc/__cpp_lib_constexpr_string/__cpp_lib_constexpr_vectorin C++20 mode.tests/std/tests/P0896R4_views_join/test.cppwas using#ifndefand has been modified accordingly._CONSTEXPR20_DYNALLOC/_CONSTEXPR20_CONTAINERtoconstexpr._CONSTEXPR20_DYNALLOC/_CONSTEXPR20_CONTAINERwith_CONSTEXPR20, no manual changes.return X op= Y;toX op= Y; return X;for NRVO.<bitset>and<filesystem>for NRVO.<atomic>for Clang 11 targeting ARM64.is_constructible_v<int const&, ExplicitTo<int&&>>"is_constructible_v<int const&, ExplicitTo<int&&>>"/BEis unsupported for x86.error: unused variable 'citer' [-Werror,-Wunused-variable].#ifdef __cpp_lib_constexpr_dynamic_alloc=>#if _HAS_CXX20#ifdef __cpp_lib_constexpr_string=>#if _HAS_CXX20#ifdef __cpp_lib_destroying_delete=>#if _HAS_CXX20#ifdef __cpp_lib_is_constant_evaluated=>#if _HAS_CXX20#ifdef __cpp_lib_variant=>#if _HAS_CXX17VsDevCmd.batpaths./BEnow).--allow-unsupported-compilerto CUDA, because CUDA 10.1 Update 2 rejected VS 2022 as unsupported Future Technology.-Wignored-pragmas(for ARM64).warning: '#pragma float_control' is not supported on this target - ignored [-Wignored-pragmas]