Skip to content
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.7 Preview 3, Clang 16.0.5 #3866

Merged
merged 24 commits into from
Jul 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
46f65fe
[verified internally] Remove workarounds for VSO-1664463.
StephanTLavavej Jul 6, 2023
50199a2
[verified internally] Remove workarounds for VSO-1152705.
StephanTLavavej Jul 6, 2023
946b0b9
[verified internally] Remove workaround for DevCom-10334808.
StephanTLavavej Jul 6, 2023
d715d88
[verified internally] Followup changes after GH 3497.
StephanTLavavej Jul 6, 2023
71d2623
Node.js 20.4.0.
StephanTLavavej Jul 10, 2023
c18821e
Go back to Standard_D32ds_v5.
StephanTLavavej Jul 11, 2023
a0cabff
PowerShell 7.3.5.
StephanTLavavej Jul 11, 2023
71b1231
New pool.
StephanTLavavej Jul 11, 2023
93f2ddc
VS 2022 17.7 Preview 3. Contains Clang 16.0.5.
StephanTLavavej Jul 11, 2023
af8fe75
VSO-761321 "Failure with local type alias in if constexpr condition" …
StephanTLavavej Jul 11, 2023
0d9b5a4
17.7p3 fixed GH 3713 affecting `_addcarry_u64`/`_subborrow_u64`.
StephanTLavavej Jul 11, 2023
81959db
17.7p3 fixed GH 3713 affecting `LDBL_DECIMAL_DIG`.
StephanTLavavej Jul 11, 2023
b57910b
17.7p3 fixed GH 3713 affecting `tgmath.h`.
StephanTLavavej Jul 11, 2023
3f360a2
Clang 16.0.3 fixed LLVM-62762 "32-bit-only misoptimization of printf …
StephanTLavavej Jul 11, 2023
9d24d56
Style: Attach `// TRANSITION, VSO-1690654` comment.
StephanTLavavej Jul 11, 2023
aa35219
Style: Attempt to improve formatting of `_Can_construct_from_tuple_li…
StephanTLavavej Jul 11, 2023
902b468
VSO-1285779 "EDG rejects source_location intrinsics within consteval …
StephanTLavavej Jul 12, 2023
2191c12
VSO-1268984 "New compiler intrinsics for Layout-compatibility and Poi…
StephanTLavavej Jul 12, 2023
b545c85
VSO-657455 "EDG: dependent name in nested generic lambda not seen as …
StephanTLavavej Jul 12, 2023
1700372
Rerun clang-format 16.0.5, no manual changes.
StephanTLavavej Jul 12, 2023
1a0d9d2
Add workarounds for VSO-1849453 "EDG mishandles is_pointer_interconve…
StephanTLavavej Jul 12, 2023
2059480
Add workaround for VSO-1849458 "EDG mishandles is_layout_compatible_v…
StephanTLavavej Jul 12, 2023
bf18bba
Perma-workaround EDG behavioral differences in source_location::colum…
StephanTLavavej Jul 12, 2023
14be66a
Add workaround for VSO-1849463 "EDG silently rejects source_location:…
StephanTLavavej Jul 12, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/update-status-chart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ">=17.8.0"
node-version: ">=20.4.0"
- name: Install Packages
run: |
npm ci
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem

# How To Build With The Visual Studio IDE

1. Install Visual Studio 2022 17.7 Preview 2 or later.
1. Install Visual Studio 2022 17.7 Preview 3 or later.
* Select "Windows 11 SDK (10.0.22000.0)" in the VS Installer.
* We recommend selecting "C++ CMake tools for Windows" in the VS Installer.
This will ensure that you're using supported versions of CMake and Ninja.
Expand All @@ -157,7 +157,7 @@ Just try to follow these rules, so we can spend more time fixing bugs and implem

# How To Build With A Native Tools Command Prompt

1. Install Visual Studio 2022 17.7 Preview 2 or later.
1. Install Visual Studio 2022 17.7 Preview 3 or later.
* Select "Windows 11 SDK (10.0.22000.0)" in the VS Installer.
* We recommend selecting "C++ CMake tools for Windows" in the VS Installer.
This will ensure that you're using supported versions of CMake and Ninja.
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/create-1es-hosted-pool.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ $ErrorActionPreference = 'Stop'
$CurrentDate = Get-Date

$Location = 'eastus'
$VMSize = 'Standard_D32ads_v5'
$VMSize = 'Standard_D32ds_v5'
$ProtoVMName = 'PROTOTYPE'
$ImagePublisher = 'MicrosoftWindowsServer'
$ImageOffer = 'WindowsServer'
Expand Down
2 changes: 1 addition & 1 deletion azure-devops/provision-image.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ if ([string]::IsNullOrEmpty($AdminUserPassword)) {
$PsExecPath = Join-Path $ExtractedPsToolsPath 'PsExec64.exe'

# https://github.com/PowerShell/PowerShell/releases/latest
$PowerShellZipUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.3.4/PowerShell-7.3.4-win-x64.zip'
$PowerShellZipUrl = 'https://github.com/PowerShell/PowerShell/releases/download/v7.3.5/PowerShell-7.3.5-win-x64.zip'
Write-Host "Downloading: $PowerShellZipUrl"
$ExtractedPowerShellPath = DownloadAndExtractZip -Url $PowerShellZipUrl
$PwshPath = Join-Path $ExtractedPowerShellPath 'pwsh.exe'
Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ variables:
benchmarkBuildOutputLocation: 'D:\benchmark'

pool:
name: 'StlBuild-2023-06-13T1913-Pool'
name: 'StlBuild-2023-07-11T1513-Pool'
demands: EnableSpotVM -equals true

pr:
Expand Down
25 changes: 11 additions & 14 deletions stl/inc/__msvc_int128.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,14 @@ _STD_BEGIN
#if defined(_M_X64) && !defined(_M_ARM64EC) && !defined(_M_CEE_PURE) && !defined(__CUDACC__) \
&& !defined(__INTEL_COMPILER)
#define _STL_128_INTRINSICS 1
#ifdef __clang__
#define _STL_128_ADD_SUB_INTRINSICS 0 // clang doesn't have _addcarry_u64 / _subborrow_u64
#define _STL_128_DIV_INTRINSICS 0 // clang doesn't have _udiv128 / _div128
#else // ^^^ Clang / other compilers vvv
#define _STL_128_ADD_SUB_INTRINSICS 1
#define _STL_128_DIV_INTRINSICS 1
#endif // ^^^ other compilers ^^^
#ifdef __clang__ // clang doesn't have _udiv128 / _div128
#define _STL_128_DIV_INTRINSICS 0
#else // ^^^ Clang / other vvv
#define _STL_128_DIV_INTRINSICS 1
#endif // ^^^ detect _udiv128 / _div128 ^^^
#else // ^^^ intrinsics available / intrinsics unavailable vvv
#define _STL_128_INTRINSICS 0
#define _STL_128_ADD_SUB_INTRINSICS 0
#define _STL_128_DIV_INTRINSICS 0
#define _STL_128_INTRINSICS 0
#define _STL_128_DIV_INTRINSICS 0
#endif // ^^^ intrinsics unavailable ^^^

template <class _Ty>
Expand Down Expand Up @@ -132,11 +129,11 @@ struct
static constexpr unsigned char _AddCarry64(
unsigned char _Carry, uint64_t _Left, uint64_t _Right, uint64_t& _Result) noexcept {
// _STL_INTERNAL_CHECK(_Carry < 2);
#if _STL_128_ADD_SUB_INTRINSICS
#if _STL_128_INTRINSICS
if (!_Is_constant_evaluated()) {
return _addcarry_u64(_Carry, _Left, _Right, &_Result);
}
#endif // _STL_128_ADD_SUB_INTRINSICS
#endif // _STL_128_INTRINSICS

const uint64_t _Sum = _Left + _Right + _Carry;
_Result = _Sum;
Expand All @@ -146,11 +143,11 @@ struct
static constexpr unsigned char _SubBorrow64(
unsigned char _Carry, uint64_t _Left, uint64_t _Right, uint64_t& _Result) noexcept {
// _STL_INTERNAL_CHECK(_Carry < 2);
#if _STL_128_ADD_SUB_INTRINSICS
#if _STL_128_INTRINSICS
if (!_Is_constant_evaluated()) {
return _subborrow_u64(_Carry, _Left, _Right, &_Result);
}
#endif // _STL_128_ADD_SUB_INTRINSICS
#endif // _STL_128_INTRINSICS

const auto _Difference = _Left - _Right - _Carry;
_Result = _Difference;
Expand Down
2 changes: 1 addition & 1 deletion stl/inc/complex
Original file line number Diff line number Diff line change
Expand Up @@ -2037,7 +2037,7 @@ _NODISCARD complex<_Ty> tanh(const complex<_Ty>& _Left) {
_Real = _Ty{1};
}

return complex<_Ty>(_Real, _Tv* _Ty{0});
return complex<_Ty>(_Real, _Tv * _Ty{0});
}

return complex<_Ty>((_Ctraits<_Ty>::sqrt(_Ty{1} + _Sv * _Sv)) * _Bv / _Dv, _Tv / _Dv);
Expand Down
5 changes: 0 additions & 5 deletions stl/inc/memory
Original file line number Diff line number Diff line change
Expand Up @@ -1879,12 +1879,7 @@ _NODISCARD bool operator==(const shared_ptr<_Ty1>& _Left, const shared_ptr<_Ty2>
#if _HAS_CXX20
_EXPORT_STD template <class _Ty1, class _Ty2>
_NODISCARD strong_ordering operator<=>(const shared_ptr<_Ty1>& _Left, const shared_ptr<_Ty2>& _Right) noexcept {
#if !defined(__EDG__) && !defined(__clang__) // TRANSITION, DevCom-10334808
using _Common_ptr_t = decltype(false ? _Left.get() : _Right.get());
return static_cast<_Common_ptr_t>(_Left.get()) <=> static_cast<_Common_ptr_t>(_Right.get());
#else // ^^^ workaround / no workaround vvv
return _Left.get() <=> _Right.get();
#endif // ^^^ no workaround ^^^
}
#else // ^^^ _HAS_CXX20 / !_HAS_CXX20 vvv
template <class _Ty1, class _Ty2>
Expand Down
4 changes: 2 additions & 2 deletions stl/inc/stop_token
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ void _Stop_callback_base::_Do_attach(

// fast path check if the state is already known
auto _Local_sources = _State->_Stop_sources.load();
if ((_Local_sources& uint32_t{1}) != 0) {
if ((_Local_sources & uint32_t{1}) != 0) {
// stop already requested
_Fn(this);
return;
Expand All @@ -269,7 +269,7 @@ void _Stop_callback_base::_Do_attach(
auto _Head = _State->_Callbacks._Lock_and_load();
// recheck the state in case it changed while we were waiting to acquire the lock
_Local_sources = _State->_Stop_sources.load();
if ((_Local_sources& uint32_t{1}) != 0) {
if ((_Local_sources & uint32_t{1}) != 0) {
// stop already requested
_State->_Callbacks._Store_and_unlock(_Head);
_Fn(this);
Expand Down
4 changes: 2 additions & 2 deletions stl/inc/tuple
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ inline constexpr bool _Can_construct_values_from_tuple_like_v<tuple<_Types...>,
template <class _TupleLike, class _Tuple>
concept _Can_construct_from_tuple_like =
_Different_from<_TupleLike, _Tuple> && _Tuple_like<_TupleLike> && !_Is_subrange_v<remove_cvref_t<_TupleLike>>
&& (tuple_size_v<_Tuple>
== tuple_size_v<remove_cvref_t<_TupleLike>>) &&_Can_construct_values_from_tuple_like_v<_Tuple, _TupleLike>
&& (tuple_size_v<_Tuple> == tuple_size_v<remove_cvref_t<_TupleLike>>) //
&&_Can_construct_values_from_tuple_like_v<_Tuple, _TupleLike>
&& (tuple_size_v<_Tuple> != 1
|| (!is_convertible_v<_TupleLike, tuple_element_t<0, _Tuple>>
&& !is_constructible_v<tuple_element_t<0, _Tuple>, _TupleLike>) );
Expand Down
5 changes: 1 addition & 4 deletions stl/inc/type_traits
Original file line number Diff line number Diff line change
Expand Up @@ -732,8 +732,7 @@ struct has_unique_object_representations : bool_constant<__has_unique_object_rep
_EXPORT_STD template <class _Ty>
_INLINE_VAR constexpr bool has_unique_object_representations_v = __has_unique_object_representations(_Ty);

// TRANSITION, VSO-1690654
#ifdef __EDG__
#ifdef __EDG__ // TRANSITION, VSO-1690654
template <class _Ty>
struct _Is_aggregate_impl : bool_constant<__is_aggregate(_Ty)> {};

Expand Down Expand Up @@ -1934,7 +1933,6 @@ inline constexpr bool is_nothrow_invocable_r_v =
#endif // _HAS_CXX17

#if _HAS_CXX20
#ifndef __EDG__ // TRANSITION, VSO-1268984
#ifndef __clang__ // TRANSITION, LLVM-48860
_EXPORT_STD template <class _Ty1, class _Ty2>
struct is_layout_compatible : bool_constant<__is_layout_compatible(_Ty1, _Ty2)> {};
Expand All @@ -1958,7 +1956,6 @@ _NODISCARD constexpr bool is_corresponding_member(_MemberTy1 _ClassTy1::*_Pm1, _
return __is_corresponding_member(_ClassTy1, _ClassTy2, _Pm1, _Pm2);
}
#endif // __clang__
#endif // __EDG__
#endif // _HAS_CXX20

template <class _Ty>
Expand Down
11 changes: 1 addition & 10 deletions stl/inc/variant
Original file line number Diff line number Diff line change
Expand Up @@ -1110,11 +1110,7 @@ public:
[this, &_That, _My_ref](auto _That_ref) noexcept(
conjunction_v<is_nothrow_move_constructible<_Types>..., is_nothrow_swappable<_Types>...>) {
constexpr size_t _That_idx = decltype(_That_ref)::_Idx;
#ifdef __EDG__ // TRANSITION, VSO-657455
constexpr size_t _My_idx = decltype(_My_ref)::_Idx + 0 * _That_idx;
#else // ^^^ workaround / no workaround vvv
constexpr size_t _My_idx = decltype(_My_ref)::_Idx;
#endif // TRANSITION, VSO-657455
constexpr size_t _My_idx = decltype(_My_ref)::_Idx;
if constexpr (_My_idx == _That_idx) { // Same alternatives...
if constexpr (_My_idx != variant_npos) { // ...and not valueless, swap directly
using _STD swap;
Expand All @@ -1127,12 +1123,7 @@ public:
_That._Emplace_valueless<_My_idx>(_STD move(_My_ref._Val));
this->template _Reset<_My_idx>();
} else { // different non-valueless alternatives
#ifdef __EDG__ // TRANSITION, VSO-657455
using _Workaround = enable_if_t<_That_idx != variant_npos, decltype(_My_ref._Val)>;
auto _Tmp = _STD move(static_cast<_Workaround>(_My_ref._Val));
#else // ^^^ workaround / no workaround vvv
auto _Tmp = _STD move(_My_ref._Val);
#endif // TRANSITION, VSO-657455
this->template _Reset<_My_idx>();
this->_Emplace_valueless<_That_idx>(_STD move(_That_ref._Val));
_That.template _Reset<_That_idx>();
Expand Down
21 changes: 7 additions & 14 deletions stl/inc/xtree
Original file line number Diff line number Diff line change
Expand Up @@ -907,25 +907,18 @@ public:
_Swap_val_excluding_comp(_Right);
}

private:
void _Different_allocator_move_construct(_Tree&& _Right) {
// TRANSITION, VSO-761321 (inline into only caller when that is fixed)
auto&& _Alproxy = _GET_PROXY_ALLOCATOR(_Alnode, _Getal());
const auto _Scary = _Get_scary();
_Container_proxy_ptr<_Alty> _Proxy(_Alproxy, *_Scary);
_Tree_head_scoped_ptr<_Alnode, _Scary_val> _Sentinel(_Getal(), *_Scary);
_Copy<_Strategy::_Move>(_Right);
_Sentinel._Release();
_Proxy._Release();
}

public:
_Tree(_Tree&& _Right, const allocator_type& _Al)
: _Mypair(_One_then_variadic_args_t{}, _Right.key_comp(), // intentionally copy comparator, see LWG-2227
_One_then_variadic_args_t{}, _Al) {
if constexpr (!_Alnode_traits::is_always_equal::value) {
if (_Getal() != _Right._Getal()) {
_Different_allocator_move_construct(_STD move(_Right));
auto&& _Alproxy = _GET_PROXY_ALLOCATOR(_Alnode, _Getal());
const auto _Scary = _Get_scary();
_Container_proxy_ptr<_Alty> _Proxy(_Alproxy, *_Scary);
_Tree_head_scoped_ptr<_Alnode, _Scary_val> _Sentinel(_Getal(), *_Scary);
_Copy<_Strategy::_Move>(_Right);
_Sentinel._Release();
_Proxy._Release();
return;
}
}
Expand Down
4 changes: 0 additions & 4 deletions stl/inc/yvals_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -1665,19 +1665,15 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
#define __cpp_lib_interpolate 201902L
#define __cpp_lib_is_constant_evaluated 201811L

#ifndef __EDG__ // TRANSITION, VSO-1268984
#ifndef __clang__ // TRANSITION, LLVM-48860
#define __cpp_lib_is_layout_compatible 201907L
#endif // __clang__
#endif // __EDG__

#define __cpp_lib_is_nothrow_convertible 201806L

#ifndef __EDG__ // TRANSITION, VSO-1268984
#ifndef __clang__ // TRANSITION, LLVM-48860
#define __cpp_lib_is_pointer_interconvertible 201907L
#endif // __clang__
#endif // __EDG__

#define __cpp_lib_jthread 201911L
#define __cpp_lib_latch 201907L
Expand Down
1 change: 0 additions & 1 deletion stl/src/StlCompareStringA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,6 @@ extern "C" int __cdecl __crtCompareStringA(_In_z_ LPCWSTR LocaleName, _In_ DWORD
}

// allocate enough space for chars
#pragma warning(suppress : 6386) // TRANSITION, VSO-1152705 false buffer overrun report in _malloca_crt_t
const __crt_scoped_stack_ptr<wchar_t> wbuffer2(_malloca_crt_t(wchar_t, buff_size2));
if (wbuffer2.get() == nullptr) {
return 0;
Expand Down
1 change: 0 additions & 1 deletion stl/src/StlLCMapStringA.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ extern "C" int __cdecl __crtLCMapStringA(_In_opt_z_ LPCWSTR LocaleName, _In_ DWO
int outbuff_size = retval;

// allocate enough space for wide chars (includes null terminator if any)
#pragma warning(suppress : 6386) // TRANSITION, VSO-1152705 false buffer overrun report in _malloca_crt_t
const __crt_scoped_stack_ptr<wchar_t> outwbuffer(_malloca_crt_t(wchar_t, outbuff_size));
if (!outwbuffer) {
return retval;
Expand Down
6 changes: 3 additions & 3 deletions tests/libcxx/expected_results.txt
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ std/utilities/function.objects/func.wrap/func.wrap.func/noncopyable_return_type.

# *** CLANG COMPILER BUGS ***
# LLVM-46207 Clang's tgmath.h interferes with the UCRT's tgmath.h
std/depr/depr.c.headers/tgmath_h.pass.cpp:1 SKIPPED
std/depr/depr.c.headers/tgmath_h.pass.cpp:1 FAIL


# *** CLANG ISSUES, NOT YET ANALYZED ***
Expand Down Expand Up @@ -513,8 +513,8 @@ std/thread/thread.threads/thread.thread.class/thread.thread.assign/move2.pass.cp
std/thread/thread.threads/thread.thread.class/thread.thread.member/join.pass.cpp SKIPPED

# OS-29877133 "LDBL_DECIMAL_DIG missing from <float.h>"
std/depr/depr.c.headers/float_h.pass.cpp FAIL
std/language.support/support.limits/c.limits/cfloat.pass.cpp FAIL
std/depr/depr.c.headers/float_h.pass.cpp:0 FAIL
std/language.support/support.limits/c.limits/cfloat.pass.cpp:0 FAIL


# *** LIKELY BOGUS TESTS ***
Expand Down
2 changes: 2 additions & 0 deletions tests/std/tests/GH_000431_copy_move_family/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ struct StatefulDerived2 : EmptyBase, StatefulBase {};
#ifdef __cpp_lib_is_pointer_interconvertible
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, EmptyDerived>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulDerived>);
#ifndef __EDG__ // TRANSITION, VSO-1849453
STATIC_ASSERT(!is_pointer_interconvertible_base_of_v<EmptyBase, StatefulDerived>);
#endif // ^^^ no workaround ^^^
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulDerived2>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, StatefulDerived2>);
#endif // __cpp_lib_is_pointer_interconvertible
Expand Down
2 changes: 2 additions & 0 deletions tests/std/tests/GH_000431_equal_family/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,9 @@ struct StatefulDerived2 : EmptyBase, StatefulBase {};
#ifdef __cpp_lib_is_pointer_interconvertible
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, EmptyDerived>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulDerived>);
#ifndef __EDG__ // TRANSITION, VSO-1849453
STATIC_ASSERT(!is_pointer_interconvertible_base_of_v<EmptyBase, StatefulDerived>);
#endif // ^^^ no workaround ^^^
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulDerived2>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, StatefulDerived2>);
#endif // __cpp_lib_is_pointer_interconvertible
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,13 @@ struct StatefulPrivatelyDerived2 : private EmptyBase, private StatefulBase {};
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, EmptyDerived>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, EmptyPrivatelyDerived>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulDerived>);
#ifndef __EDG__ // TRANSITION, VSO-1849453
STATIC_ASSERT(!is_pointer_interconvertible_base_of_v<EmptyBase, StatefulDerived>);
#endif // ^^^ no workaround ^^^
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulPrivatelyDerived>);
#ifndef __EDG__ // TRANSITION, VSO-1849453
STATIC_ASSERT(!is_pointer_interconvertible_base_of_v<EmptyBase, StatefulPrivatelyDerived>);
#endif // ^^^ no workaround ^^^
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulDerived2>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, StatefulDerived2>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulPrivatelyDerived2>);
Expand Down Expand Up @@ -453,8 +457,10 @@ STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<enable_derived_to_base, Emp
STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<enable_derived_to_base, EmptyBase, EmptyDerived>());
STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<enable_derived_to_base, StatefulDerived, StatefulBase>());
STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<enable_derived_to_base, StatefulBase, StatefulDerived>());
#ifndef __EDG__ // TRANSITION, VSO-1849453
STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<false, StatefulDerived, EmptyBase>());
STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<false, EmptyBase, StatefulDerived>());
#endif // ^^^ no workaround ^^^
STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<enable_derived_to_base, StatefulDerived2, StatefulBase>());
STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<enable_derived_to_base, StatefulBase, StatefulDerived2>());
STATIC_ASSERT(test_equal_memcmp_is_safe_for_pointers<enable_derived_to_base, StatefulDerived2, EmptyBase>());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -309,9 +309,13 @@ struct StatefulPrivatelyDerived2 : private EmptyBase, private StatefulBase {};
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, EmptyDerived>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, EmptyPrivatelyDerived>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulDerived>);
#ifndef __EDG__ // TRANSITION, VSO-1849453
STATIC_ASSERT(!is_pointer_interconvertible_base_of_v<EmptyBase, StatefulDerived>);
#endif // ^^^ no workaround ^^^
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulPrivatelyDerived>);
#ifndef __EDG__ // TRANSITION, VSO-1849453
STATIC_ASSERT(!is_pointer_interconvertible_base_of_v<EmptyBase, StatefulPrivatelyDerived>);
#endif // ^^^ no workaround ^^^
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulDerived2>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<EmptyBase, StatefulDerived2>);
STATIC_ASSERT(is_pointer_interconvertible_base_of_v<StatefulBase, StatefulPrivatelyDerived2>);
Expand Down
2 changes: 0 additions & 2 deletions tests/std/tests/P0040R3_parallel_memory_algorithms/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,6 @@ struct test_case_uninitialized_fill_n_parallel {
};

int main() {
#ifndef _M_CEE // TRANSITION, VSO-1664463
parallel_test_case(test_case_uninitialized_default_construct_parallel{}, par);
parallel_test_case(test_case_uninitialized_default_construct_n_parallel{}, par);
parallel_test_case(test_case_uninitialized_default_construct_trivial_parallel{}, par);
Expand Down Expand Up @@ -446,5 +445,4 @@ int main() {
parallel_test_case(test_case_uninitialized_fill_parallel{}, unseq);
parallel_test_case(test_case_uninitialized_fill_n_parallel{}, unseq);
#endif // _HAS_CXX20
#endif // _M_CEE
}
4 changes: 0 additions & 4 deletions tests/std/tests/P0067R5_charconv/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1170,9 +1170,6 @@ template pair<wchar_t*, errc> std::__to_chars(
wchar_t* const, wchar_t* const, const __floating_decimal_64, chars_format, const double);
template pair<wchar_t*, errc> std::__d2fixed_buffered_n(wchar_t*, wchar_t* const, const double, const uint32_t);

#if defined(__clang__) && defined(_M_IX86) // TRANSITION, LLVM-62762, fixed in Clang 16.0.3
int main() {}
#else // ^^^ workaround / no workaround vvv
int main(int argc, char** argv) {
const auto start = chrono::steady_clock::now();

Expand Down Expand Up @@ -1201,4 +1198,3 @@ int main(int argc, char** argv) {
puts("That was slow. Consider tuning PrefixesToTest and FractionBits to test fewer cases.");
}
}
#endif // ^^^ no workaround ^^^
Loading