diff --git a/stl/inc/__msvc_all_public_headers.hpp b/stl/inc/__msvc_all_public_headers.hpp index 35c2128d17..1734fa07b2 100644 --- a/stl/inc/__msvc_all_public_headers.hpp +++ b/stl/inc/__msvc_all_public_headers.hpp @@ -142,19 +142,16 @@ #include <__msvc_cxx_stdatomic.hpp> #include #include -#include -#include -#include -#endif // _M_CEE_PURE - -#ifndef _M_CEE #include #include #include +#include #include +#include #include +#include #include -#endif // _M_CEE +#endif // _M_CEE_PURE // Non-Core C Wrapper Headers #include diff --git a/stl/inc/algorithm b/stl/inc/algorithm index 74b47b7b01..8253371f45 100644 --- a/stl/inc/algorithm +++ b/stl/inc/algorithm @@ -932,10 +932,17 @@ namespace ranges { // We've trimmed matching prefixes and matching suffixes. // Now we need to compare each range's prefix to the other range's suffix. +#ifdef _M_CEE // TRANSITION, VSO-1663257 + const auto _ProjectedPred = [&](auto&& _Left, auto&& _Right) -> bool { + return _STD invoke(_Pred, _STD invoke(_Proj1, _STD forward(_Left)), + _STD invoke(_Proj2, _STD forward(_Right))); + }; +#else // ^^^ workaround / no workaround vvv const auto _ProjectedPred = [&](_Ty1&& _Left, _Ty2&& _Right) -> bool { return _STD invoke(_Pred, _STD invoke(_Proj1, _STD forward<_Ty1>(_Left)), _STD invoke(_Proj2, _STD forward<_Ty2>(_Right))); }; +#endif // ^^^ no workaround ^^^ const _TrimResult _Res = _Trim_completely(_First1, _Final1, _First2, _Final2, _ProjectedPred); @@ -1021,10 +1028,17 @@ namespace ranges { // We've trimmed matching prefixes and matching suffixes. // Now we need to compare each range's prefix to the other range's suffix. +#ifdef _M_CEE // TRANSITION, VSO-1663257 + const auto _ProjectedPred = [&](auto&& _Left, auto&& _Right) -> bool { + return _STD invoke(_Pred, _STD invoke(_Proj1, _STD forward(_Left)), + _STD invoke(_Proj2, _STD forward(_Right))); + }; +#else // ^^^ workaround / no workaround vvv const auto _ProjectedPred = [&](_Ty1&& _Left, _Ty2&& _Right) -> bool { return _STD invoke(_Pred, _STD invoke(_Proj1, _STD forward<_Ty1>(_Left)), _STD invoke(_Proj2, _STD forward<_Ty2>(_Right))); }; +#endif // ^^^ no workaround ^^^ const _TrimResult _Res = _Trim_completely(_First1, _Final1, _First2, _Final2, _ProjectedPred); diff --git a/stl/inc/chrono b/stl/inc/chrono index d7b489e672..de9132c927 100644 --- a/stl/inc/chrono +++ b/stl/inc/chrono @@ -5358,7 +5358,13 @@ namespace chrono { const _Allowed_bit _Mod = _Modifier == 'E' ? _E_mod : _O_mod; - if (auto _It = _RANGES find(_Table, _Type, &_Table_entry::_Type); _It != _STD end(_Table)) { +#ifdef _M_CEE // TRANSITION, VSO-1664341 + constexpr auto _Get_table_entry_type = [](const _Table_entry& _Entry) { return _Entry._Type; }; +#else // ^^^ workaround / no workaround vvv + constexpr auto _Get_table_entry_type = &_Table_entry::_Type; +#endif // ^^^ no workaround ^^^ + + if (auto _It = _RANGES find(_Table, _Type, _Get_table_entry_type); _It != _STD end(_Table)) { if (_It->_Allowed & _Mod) { return; } @@ -5679,10 +5685,10 @@ namespace chrono { return; } - constexpr bool _Is_ymd = - _Is_any_of_v<_Ty, year_month_day, year_month_day_last, year_month_weekday, year_month_weekday_last>; - const auto _Validate = [&] { + constexpr bool _Is_ymd = + _Is_any_of_v<_Ty, year_month_day, year_month_day_last, year_month_weekday, year_month_weekday_last>; + switch (_Spec._Type) { case 'a': case 'A': diff --git a/stl/inc/cmath b/stl/inc/cmath index 38b6bff4ad..a722c06d7f 100644 --- a/stl/inc/cmath +++ b/stl/inc/cmath @@ -12,7 +12,8 @@ #include #include -#if !defined(_M_CEE) && !defined(__clang__) && !defined(__CUDACC__) && !defined(__INTEL_COMPILER) +#if !defined(__clang__) && !defined(__CUDACC__) && !defined(__INTEL_COMPILER) \ + && !defined(_M_CEE) // TRANSITION, VSO-1663104 #define _HAS_CMATH_INTRINSICS 1 #else // ^^^ intrinsics available ^^^ / vvv intrinsics unavailable vvv #define _HAS_CMATH_INTRINSICS 0 diff --git a/stl/inc/condition_variable b/stl/inc/condition_variable index fc11f39d58..3d50fc860c 100644 --- a/stl/inc/condition_variable +++ b/stl/inc/condition_variable @@ -23,9 +23,9 @@ _STL_DISABLE_CLANG_WARNINGS #pragma push_macro("new") #undef new -#ifdef _M_CEE -#error is not supported when compiling with /clr or /clr:pure. -#endif // _M_CEE +#ifdef _M_CEE_PURE +#error is not supported when compiling with /clr:pure. +#endif // _M_CEE_PURE _STD_BEGIN template diff --git a/stl/inc/format b/stl/inc/format index 9804a08d9f..db141abb70 100644 --- a/stl/inc/format +++ b/stl/inc/format @@ -1952,7 +1952,12 @@ public: _NODISCARD size_t _Estimate_required_capacity() const noexcept { using _CharT = typename _Context::char_type; size_t _Result = 0; +#ifdef _M_CEE // TRANSITION, VSO-1663257 + const auto _Visitor = [&_Result](const auto _Arg) noexcept { + using _ArgTy = remove_const_t; +#else // ^^^ workaround / no workaround vvv const auto _Visitor = [&_Result](const _ArgTy _Arg) noexcept { +#endif // ^^^ no workaround ^^^ if constexpr (is_same_v<_ArgTy, basic_string_view<_CharT>>) { _Result += _Arg.size(); } else if constexpr (is_same_v<_ArgTy, const _CharT*>) { diff --git a/stl/inc/future b/stl/inc/future index 031384331a..a3cd4e1091 100644 --- a/stl/inc/future +++ b/stl/inc/future @@ -9,9 +9,9 @@ #include #if _STL_COMPILER_PREPROCESSOR -#ifdef _M_CEE -#error is not supported when compiling with /clr or /clr:pure. -#endif // _M_CEE +#ifdef _M_CEE_PURE +#error is not supported when compiling with /clr:pure. +#endif // _M_CEE_PURE #ifdef _RESUMABLE_FUNCTIONS_SUPPORTED #include diff --git a/stl/inc/iterator b/stl/inc/iterator index 2bd3c4ff01..0c50d463c0 100644 --- a/stl/inc/iterator +++ b/stl/inc/iterator @@ -1355,9 +1355,15 @@ public: _RANGES iter_swap(_Left._Current, _Right.base()); } +#if _ITERATOR_DEBUG_LEVEL != 0 template _Other> friend constexpr void _Same_sequence( const counted_iterator& _Left, const counted_iterator<_Other>& _Right) noexcept { +#ifdef _M_CEE // TRANSITION, VSO-1665606 + (void) _Left; + (void) _Right; +#else // ^^^ workaround / no workaround vvv + // Per N4901 [counted.iterator]/3, two counted_iterators x and y refer to elements of the same sequence iff // for some integer n, next(x.base(), x.count() + n) and next(y.base(), y.count() + n) // "refer to the same (possibly past-the-end) element". @@ -1377,7 +1383,9 @@ public: "counted_iterators are from different ranges"); } } +#endif // ^^^ no workaround ^^^ } +#endif // _ITERATOR_DEBUG_LEVEL != 0 template _Other> friend constexpr void _Verify_range(const counted_iterator& _Left, const counted_iterator<_Other>& _Right) { diff --git a/stl/inc/memory_resource b/stl/inc/memory_resource index 154063e539..62b0f428db 100644 --- a/stl/inc/memory_resource +++ b/stl/inc/memory_resource @@ -17,9 +17,9 @@ _EMIT_STL_WARNING(STL4038, "The contents of are available only #include #include -#ifndef _M_CEE +#ifndef _M_CEE_PURE #include -#endif // _M_CEE +#endif // _M_CEE_PURE #pragma pack(push, _CRT_PACKING) #pragma warning(push, _STL_WARNING_LEVEL) @@ -565,7 +565,7 @@ namespace pmr { pmr::vector<_Pool> _Pools{}; // pools in order of increasing block size }; -#ifndef _M_CEE +#ifndef _M_CEE_PURE _EXPORT_STD class synchronized_pool_resource : public unsynchronized_pool_resource { public: using unsynchronized_pool_resource::unsynchronized_pool_resource; @@ -589,7 +589,7 @@ namespace pmr { private: mutable mutex _Mtx; }; -#endif // _M_CEE +#endif // _M_CEE_PURE _EXPORT_STD class monotonic_buffer_resource : public _Identity_equal_resource { public: diff --git a/stl/inc/mutex b/stl/inc/mutex index de0537c068..6b595e21e9 100644 --- a/stl/inc/mutex +++ b/stl/inc/mutex @@ -28,8 +28,6 @@ _STL_DISABLE_CLANG_WARNINGS #undef new _STD_BEGIN -// mutex and recursive_mutex are not supported under /clr -#ifndef _M_CEE _EXPORT_STD class condition_variable; _EXPORT_STD class condition_variable_any; @@ -103,7 +101,6 @@ public: recursive_mutex(const recursive_mutex&) = delete; recursive_mutex& operator=(const recursive_mutex&) = delete; }; -#endif // _M_CEE _EXPORT_STD struct adopt_lock_t { // indicates adopt lock explicit adopt_lock_t() = default; @@ -563,8 +560,6 @@ void(call_once)(once_flag& _Once, _Fn&& _Fx, _Args&&... _Ax) noexcept( #undef _WINDOWS_API #undef _RENAME_WINDOWS_API -// condition_variable, timed_mutex, and recursive_timed_mutex are not supported under /clr -#ifndef _M_CEE _EXPORT_STD enum class cv_status { // names for wait returns no_timeout, timeout @@ -930,7 +925,6 @@ private: unsigned int _My_locked; thread::id _My_owner; }; -#endif // _M_CEE _STD_END #pragma pop_macro("new") _STL_RESTORE_CLANG_WARNINGS diff --git a/stl/inc/shared_mutex b/stl/inc/shared_mutex index 495ef05991..0db75728c5 100644 --- a/stl/inc/shared_mutex +++ b/stl/inc/shared_mutex @@ -13,11 +13,9 @@ #error is not supported when compiling with /clr:pure. #endif // _M_CEE_PURE +#include #include #include -#ifndef _M_CEE -#include -#endif // _M_CEE #pragma pack(push, _CRT_PACKING) #pragma warning(push, _STL_WARNING_LEVEL) @@ -71,8 +69,6 @@ private: _Smtx_t _Myhandle; }; -// shared_timed_mutex is not supported under /clr -#ifndef _M_CEE _EXPORT_STD class shared_timed_mutex { // class for mutual exclusion shared across threads private: using _Read_cnt_t = unsigned int; @@ -230,7 +226,6 @@ private: _Read_cnt_t _Readers; bool _Writing; }; -#endif // _M_CEE _EXPORT_STD template class shared_lock { // shareable lock diff --git a/stl/inc/xlocinfo b/stl/inc/xlocinfo index 74a86b8e27..8396fe52b5 100644 --- a/stl/inc/xlocinfo +++ b/stl/inc/xlocinfo @@ -227,10 +227,9 @@ public: static _Locinfo& __CLRCALL_PURE_OR_CDECL _Locinfo_Addcats(_Locinfo*, int, const char*); __CLR_OR_THIS_CALL _Locinfo(const char* _Pch = "C") -#ifndef _M_CEE +#ifndef _M_CEE_PURE : _Lock(_LOCK_LOCALE) -#endif // _M_CEE - +#endif // _M_CEE_PURE { if (_Pch) { _Locinfo_ctor(this, _Pch); @@ -241,10 +240,9 @@ public: } __CLR_OR_THIS_CALL _Locinfo(int _Cat, const char* _Pch) -#ifndef _M_CEE +#ifndef _M_CEE_PURE : _Lock(_LOCK_LOCALE) -#endif // _M_CEE - +#endif // _M_CEE_PURE { if (_Pch) { _Locinfo_ctor(this, _Cat, _Pch); @@ -373,12 +371,11 @@ public: _Locinfo& operator=(const _Locinfo&) = delete; private: -#ifdef _M_CEE +#ifdef _M_CEE_PURE _EmptyLockit _Empty_lock; // to maintain same size - -#else // _M_CEE +#else // _M_CEE_PURE _Lockit _Lock; // thread lock, because global locale is altered -#endif // _M_CEE +#endif // _M_CEE_PURE _Yarn _Days; // weekday names _Yarn _Months; // month names diff --git a/stl/inc/xthreads.h b/stl/inc/xthreads.h index d7f9ba4639..8157685097 100644 --- a/stl/inc/xthreads.h +++ b/stl/inc/xthreads.h @@ -52,9 +52,15 @@ _INLINE_VAR constexpr size_t _Cnd_internal_imp_alignment = 4; #endif // _WIN64 #endif // _CRT_WINDOWS -using _Mtx_t = struct _Mtx_internal_imp_t*; - -using _Cnd_t = struct _Cnd_internal_imp_t*; +#ifdef _M_CEE // avoid warning LNK4248: unresolved typeref token for '_Mtx_internal_imp_t'; image may not run +using _Mtx_t = void*; +using _Cnd_t = void*; +#else // ^^^ defined(_M_CEE) / !defined(_M_CEE) vvv +struct _Mtx_internal_imp_t; +struct _Cnd_internal_imp_t; +using _Mtx_t = _Mtx_internal_imp_t*; +using _Cnd_t = _Cnd_internal_imp_t*; +#endif // ^^^ !defined(_M_CEE) ^^^ enum { _Thrd_success, _Thrd_nomem, _Thrd_timedout, _Thrd_busy, _Thrd_error }; diff --git a/stl/inc/yvals.h b/stl/inc/yvals.h index 0b34b704da..77df23caa3 100644 --- a/stl/inc/yvals.h +++ b/stl/inc/yvals.h @@ -385,12 +385,14 @@ extern "C++" class _CRTIMP2_PURE_IMPORT _Lockit { // lock while object in existe int _Locktype; }; -#ifdef _M_CEE +#ifdef _M_CEE_PURE class _CRTIMP2_PURE_IMPORT _EmptyLockit { // empty lock class used for bin compat private: int _Locktype; }; +#endif // _M_CEE_PURE +#ifdef _M_CEE #ifndef _PREPARE_CONSTRAINED_REGIONS #ifdef _M_CEE_PURE #define _PREPARE_CONSTRAINED_REGIONS 1 @@ -437,11 +439,6 @@ class _CRTIMP2_PURE_IMPORT _EmptyLockit { // empty lock class used for bin compa #define _END_LOCINFO() _END_LOCK() -#define _RELIABILITY_CONTRACT \ - [System::Runtime::ConstrainedExecution::ReliabilityContract( \ - System::Runtime::ConstrainedExecution::Consistency::WillNotCorruptState, \ - System::Runtime::ConstrainedExecution::Cer::Success)] - #else // _M_CEE #define _BEGIN_LOCK(_Kind) \ { \ @@ -454,8 +451,6 @@ class _CRTIMP2_PURE_IMPORT _EmptyLockit { // empty lock class used for bin compa _Locinfo _VarName; #define _END_LOCINFO() } - -#define _RELIABILITY_CONTRACT #endif // _M_CEE #ifdef _CRTBLD @@ -479,6 +474,16 @@ class _CRTIMP2_PURE_IMPORT _Init_locks { // initialize mutexes static void __cdecl _Init_locks_ctor(_Init_locks*) noexcept; static void __cdecl _Init_locks_dtor(_Init_locks*) noexcept; }; + +#ifdef _M_CEE +#define _RELIABILITY_CONTRACT \ + [System::Runtime::ConstrainedExecution::ReliabilityContract( \ + System::Runtime::ConstrainedExecution::Consistency::WillNotCorruptState, \ + System::Runtime::ConstrainedExecution::Cer::Success)] +#else // _M_CEE +#define _RELIABILITY_CONTRACT +#endif // _M_CEE + #endif // _CRTBLD #if _HAS_EXCEPTIONS @@ -519,10 +524,6 @@ class _CRTIMP2_PURE_IMPORT _Init_locks { // initialize mutexes #endif // _HAS_EXCEPTIONS _STD_END -#ifndef _RELIABILITY_CONTRACT -#define _RELIABILITY_CONTRACT -#endif // _RELIABILITY_CONTRACT - #pragma pop_macro("new") _STL_RESTORE_CLANG_WARNINGS #pragma warning(pop) diff --git a/stl/inc/yvals_core.h b/stl/inc/yvals_core.h index 19b3c83e6d..38732c242e 100644 --- a/stl/inc/yvals_core.h +++ b/stl/inc/yvals_core.h @@ -1473,9 +1473,9 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect #define __cpp_lib_quoted_string_io 201304L #define __cpp_lib_result_of_sfinae 201210L #define __cpp_lib_robust_nonmodifying_seq_ops 201304L -#ifndef _M_CEE +#ifndef _M_CEE_PURE #define __cpp_lib_shared_timed_mutex 201402L -#endif // _M_CEE +#endif // _M_CEE_PURE #define __cpp_lib_string_udls 201304L #define __cpp_lib_transformation_trait_aliases 201304L #define __cpp_lib_tuple_element_t 201402L @@ -1524,9 +1524,9 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect #define __cpp_lib_memory_resource 201603L #define __cpp_lib_node_extract 201606L #define __cpp_lib_not_fn 201603L -#ifndef _M_CEE +#ifndef _M_CEE_PURE #define __cpp_lib_parallel_algorithm 201603L -#endif // _M_CEE +#endif // _M_CEE_PURE #define __cpp_lib_raw_memory_algorithms 201606L #define __cpp_lib_sample 201603L #define __cpp_lib_scoped_lock 201703L @@ -1542,9 +1542,9 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect #define __cpp_lib_char8_t 201907L #endif // __cpp_char8_t -#ifdef __cpp_impl_coroutine +#if defined(__cpp_impl_coroutine) && !defined(_M_CEE) // TRANSITION, VSO-1663233 #define __cpp_lib_coroutine 201902L -#endif // __cpp_impl_coroutine +#endif // defined(__cpp_impl_coroutine) && !defined(_M_CEE) #if _HAS_CXX20 #if !defined(__EDG__) || defined(__INTELLISENSE__) // TRANSITION, GH-395 @@ -1714,13 +1714,13 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect #define __cpp_lib_constexpr_memory 201811L // P1006R1 constexpr For pointer_traits::pointer_to() #endif // _HAS_CXX20 -#ifndef _M_CEE +#ifndef _M_CEE_PURE #if _HAS_CXX20 #define __cpp_lib_execution 201902L // P1001R2 execution::unseq #elif _HAS_CXX17 #define __cpp_lib_execution 201603L // P0024R2 Parallel Algorithms #endif // language mode -#endif // _M_CEE +#endif // _M_CEE_PURE #if _HAS_CXX23 && defined(__cpp_lib_concepts) // TRANSITION, GH-395 #define __cpp_lib_optional 202110L // P0798R8 Monadic Operations For optional diff --git a/tests/std/include/instantiate_algorithms.hpp b/tests/std/include/instantiate_algorithms.hpp index ae35649478..76727df710 100644 --- a/tests/std/include/instantiate_algorithms.hpp +++ b/tests/std/include/instantiate_algorithms.hpp @@ -15,15 +15,9 @@ #include #include -#if _HAS_CXX17 && !defined(_M_CEE) -#define HAS_PARALLEL_ALGORITHMS 1 -#else -#define HAS_PARALLEL_ALGORITHMS 0 -#endif // _HAS_CXX17 && !defined(_M_CEE) - -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution #include -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution // Compiling all algorithms takes too long for one test case. // Therefore, when using this header, be sure to define INSTANTIATE_ALGORITHMS_SPLIT_MODE @@ -328,7 +322,7 @@ namespace std_testing { #endif // SPLIT_MODE } -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution template void test_exec_fwd1_fwd2_fwd3(ExecutionPolicy&& exec, Fwd1 fwd1, Fwd2 fwd2, Fwd3 fwd3) { std::transform(std::forward(exec), fwd1, fwd1, fwd2, fwd3, BINARYOP{}); @@ -406,19 +400,19 @@ namespace std_testing { std::adjacent_difference(std::forward(exec), fwd1, fwd1, fwd2); std::adjacent_difference(std::forward(exec), fwd1, fwd1, fwd2, BINARYOP{}); } -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution template void test_fwd1_fwd2(Fwd1 fwd1, Fwd2 fwd2) { // SPLIT_MODE 1 -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution test_exec_fwd1_fwd2(std::execution::seq, fwd1, fwd2); test_exec_fwd1_fwd2(std::execution::par, fwd1, fwd2); test_exec_fwd1_fwd2(std::execution::par_unseq, fwd1, fwd2); #if _HAS_CXX20 test_exec_fwd1_fwd2(std::execution::unseq, fwd1, fwd2); #endif // _HAS_CXX20 -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution (void) std::find_end(fwd1, fwd1, fwd2, fwd2); (void) std::find_end(fwd1, fwd1, fwd2, fwd2, BIPRED{}); @@ -441,7 +435,7 @@ namespace std_testing { #endif // _HAS_CXX17 } -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution template void test_exec_fwd1(ExecutionPolicy&& exec, Fwd1 fwd1) { (void) std::all_of(std::forward(exec), fwd1, fwd1, PRED{}); @@ -497,19 +491,19 @@ namespace std_testing { (void) std::reduce(std::forward(exec), fwd1, fwd1, VAL, BINARYOP{}); (void) std::transform_reduce(std::forward(exec), fwd1, fwd1, VAL, BINARYOP{}, UNARYOP{}); } -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution template void test_fwd1(Fwd1 fwd1) { // SPLIT_MODE 2 -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution test_exec_fwd1(std::execution::seq, fwd1); test_exec_fwd1(std::execution::par, fwd1); test_exec_fwd1(std::execution::par_unseq, fwd1); #if _HAS_CXX20 test_exec_fwd1(std::execution::unseq, fwd1); #endif // _HAS_CXX20 -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution test_fwd1_fwd2(fwd1, FWDIT); test_fwd1_fwd2(fwd1, BIDIT); @@ -595,7 +589,7 @@ namespace std_testing { std::reverse_copy(bid1, bid1, out); } -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution template void test_exec_bid1_fwd1(ExecutionPolicy&& exec, Bid1 bid1, Fwd1 fwd1) { std::reverse_copy(std::forward(exec), bid1, bid1, fwd1); @@ -622,7 +616,7 @@ namespace std_testing { std::inplace_merge(std::forward(exec), bid1, bid1, bid1); std::inplace_merge(std::forward(exec), bid1, bid1, bid1, COMP{}); } -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution template void test_bid1(Bid1 bid1) { @@ -638,7 +632,7 @@ namespace std_testing { test_bid1_out(bid1, RANIT); test_bid1_out(bid1, ARRIT); -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution test_bid1_fwd1(bid1, FWDIT); test_bid1_fwd1(bid1, BIDIT); test_bid1_fwd1(bid1, RANIT); @@ -650,7 +644,7 @@ namespace std_testing { #if _HAS_CXX20 test_exec_bid1(std::execution::unseq, bid1); #endif // _HAS_CXX20 -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution std::reverse(bid1, bid1); // Currently the standard requires random-access iterators for stable_sort, but our implementation @@ -674,7 +668,7 @@ namespace std_testing { std::generate_n(out, 0, GENERATOR{}); } -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution template void test_exec_ran(ExecutionPolicy&& exec, Ran ran) { std::sort(std::forward(exec), ran, ran); @@ -688,19 +682,19 @@ namespace std_testing { (void) std::is_heap_until(std::forward(exec), ran, ran); (void) std::is_heap_until(std::forward(exec), ran, ran, COMP{}); } -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution template void test_ran(Ran ran) { // SPLIT_MODE 1 -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution test_exec_ran(std::execution::seq, ran); test_exec_ran(std::execution::par, ran); test_exec_ran(std::execution::par_unseq, ran); #if _HAS_CXX20 test_exec_ran(std::execution::unseq, ran); #endif // _HAS_CXX20 -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution #if _HAS_AUTO_PTR_ETC std::random_shuffle(ran, ran); diff --git a/tests/std/include/range_algorithm_support.hpp b/tests/std/include/range_algorithm_support.hpp index 1c4c0db2ce..644b28363f 100644 --- a/tests/std/include/range_algorithm_support.hpp +++ b/tests/std/include/range_algorithm_support.hpp @@ -12,6 +12,10 @@ #include #include +#ifdef _M_CEE // TRANSITION, VSO-1659408 +#include +#endif // ^^^ workaround ^^^ + #define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) namespace ranges = std::ranges; @@ -64,6 +68,27 @@ struct boolish { } }; +template +struct holder { + STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); + +#ifdef _M_CEE // TRANSITION, VSO-1659408 + unsigned char space[(N + 1) * sizeof(T)]; + + auto as_span() { + void* buffer_ptr = space; + size_t buffer_len = sizeof(space); + return std::span{static_cast(std::align(alignof(T), sizeof(T), buffer_ptr, buffer_len)), N}; + } +#else // ^^^ workaround / no workaround vvv + alignas(T) unsigned char space[N * sizeof(T)]; + + auto as_span() { + return std::span{reinterpret_cast(space + 0), N}; + } +#endif // ^^^ no workaround ^^^ +}; + namespace test { using std::assignable_from, std::conditional_t, std::convertible_to, std::copy_constructible, std::derived_from, std::exchange, std::ptrdiff_t, std::span; diff --git a/tests/std/include/test_atomic_wait.hpp b/tests/std/include/test_atomic_wait.hpp index 9322cd5454..d3c2180f92 100644 --- a/tests/std/include/test_atomic_wait.hpp +++ b/tests/std/include/test_atomic_wait.hpp @@ -74,7 +74,13 @@ void test_atomic_wait_func(UnderlyingType old_value, const UnderlyingType new_va template void test_atomic_wait_func_ptr(UnderlyingType old_value, const UnderlyingType new_value, const std::chrono::steady_clock::duration waiting_duration) { +#ifdef _M_CEE // TRANSITION, VSO-1665654 + (void) old_value; + (void) new_value; + (void) waiting_duration; +#else // ^^^ workaround / no workaround vvv test_atomic_wait_func_impl(old_value, new_value, waiting_duration); +#endif // ^^^ no workaround ^^^ } @@ -108,8 +114,14 @@ void test_notify_all_notifies_all(UnderlyingType old_value, const UnderlyingType template void test_notify_all_notifies_all_ptr(UnderlyingType old_value, const UnderlyingType new_value, const std::chrono::steady_clock::duration waiting_duration) { +#ifdef _M_CEE // TRANSITION, VSO-1665654 + (void) old_value; + (void) new_value; + (void) waiting_duration; +#else // ^^^ workaround / no workaround vvv // increased waiting_duration because timing assumption might not hold for atomic smart pointers test_notify_all_notifies_all_impl(old_value, new_value, 3 * waiting_duration); +#endif // ^^^ no workaround ^^^ } @@ -160,8 +172,12 @@ void test_pad_bits_impl(const std::chrono::steady_clock::duration waiting_durati template void test_pad_bits(const std::chrono::steady_clock::duration waiting_duration) { +#ifdef _M_CEE // TRANSITION, VSO-1665654 + (void) waiting_duration; +#else // ^^^ workaround / no workaround vvv test_pad_bits_impl(waiting_duration); test_pad_bits_impl(waiting_duration); +#endif // ^^^ no workaround ^^^ } struct two_shorts { diff --git a/tests/std/tests/Dev08_527068_scl_no_exceptions/env.lst b/tests/std/tests/Dev08_527068_scl_no_exceptions/env.lst index a7497cef71..6777856e82 100644 --- a/tests/std/tests/Dev08_527068_scl_no_exceptions/env.lst +++ b/tests/std/tests/Dev08_527068_scl_no_exceptions/env.lst @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst RUNALL_CROSSLIST PM_CL="/D_HAS_EXCEPTIONS=0" PM_CL="/D_HAS_EXCEPTIONS=1" diff --git a/tests/std/tests/Dev08_563686_ostream/env.lst b/tests/std/tests/Dev08_563686_ostream/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/Dev08_563686_ostream/env.lst +++ b/tests/std/tests/Dev08_563686_ostream/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/Dev09_181509_tr1_inf_loop_uniform_int_ull/env.lst b/tests/std/tests/Dev09_181509_tr1_inf_loop_uniform_int_ull/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/Dev09_181509_tr1_inf_loop_uniform_int_ull/env.lst +++ b/tests/std/tests/Dev09_181509_tr1_inf_loop_uniform_int_ull/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/Dev09_181509_tr1_inf_loop_uniform_int_ull/test.cpp b/tests/std/tests/Dev09_181509_tr1_inf_loop_uniform_int_ull/test.cpp index 3132c5ee1e..ce2e1988e7 100644 --- a/tests/std/tests/Dev09_181509_tr1_inf_loop_uniform_int_ull/test.cpp +++ b/tests/std/tests/Dev09_181509_tr1_inf_loop_uniform_int_ull/test.cpp @@ -121,6 +121,7 @@ class Wacky { }; int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659695 vector tests; add_tests(tests); @@ -128,4 +129,5 @@ int main() { add_tests(tests); for_each(par, tests.begin(), tests.end(), [](fp_t fn) { fn(); }); +#endif // _M_CEE } diff --git a/tests/std/tests/Dev10_561430_list_and_tree_leaks/test.cpp b/tests/std/tests/Dev10_561430_list_and_tree_leaks/test.cpp index 7eb85025d3..5a2ea09e85 100644 --- a/tests/std/tests/Dev10_561430_list_and_tree_leaks/test.cpp +++ b/tests/std/tests/Dev10_561430_list_and_tree_leaks/test.cpp @@ -18,9 +18,9 @@ #include #include -#ifndef _M_CEE +#ifndef _M_CEE_PURE #include -#endif // _M_CEE +#endif // _M_CEE_PURE int g_mallocs = 0; @@ -120,7 +120,7 @@ int main() { { shared_ptr sp = allocate_shared(Mallocator(), 1729); } -#ifndef _M_CEE +#ifndef _M_CEE_PURE { promise p(allocator_arg, Mallocator()); @@ -186,7 +186,7 @@ int main() { f.get(); } #endif // _HAS_FUNCTION_ALLOCATOR_SUPPORT -#endif // _M_CEE +#endif // _M_CEE_PURE assert(g_mallocs == 0); diff --git a/tests/std/tests/Dev10_682964_stable_sort_warnings/test.cpp b/tests/std/tests/Dev10_682964_stable_sort_warnings/test.cpp index ec4a1feaa9..d92404bd79 100644 --- a/tests/std/tests/Dev10_682964_stable_sort_warnings/test.cpp +++ b/tests/std/tests/Dev10_682964_stable_sort_warnings/test.cpp @@ -8,22 +8,16 @@ #include #include -using namespace std; - -#if _HAS_CXX17 && !defined(_M_CEE) -#define HAS_PARALLEL_ALGORITHMS 1 -#else -#define HAS_PARALLEL_ALGORITHMS 0 -#endif // _HAS_CXX17 && !defined(_M_CEE) - -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution #include -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution + +using namespace std; int main() { { vector v = {"cute", "fluffy", "kittens", "ugly", "stupid", "puppies"}; -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution auto p = v; #endif @@ -33,7 +27,7 @@ int main() { assert(v == correct); -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution stable_sort(execution::par, p.begin(), p.end()); assert(p == correct); @@ -42,7 +36,7 @@ int main() { { vector v = {"cute", "fluffy", "kittens", "ugly", "stupid", "puppies"}; -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution auto p = v; #endif @@ -53,7 +47,7 @@ int main() { assert(v == correct); -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution stable_sort(execution::par, p.begin(), p.end(), cmp); assert(p == correct); @@ -96,14 +90,14 @@ int main() { v.emplace_back(urng()); } -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution auto p = v; #endif stable_sort(v.begin(), v.end()); assert(is_sorted(v.begin(), v.end())); -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution stable_sort(execution::par, p.begin(), p.end()); assert(is_sorted(p.begin(), p.end())); #endif diff --git a/tests/std/tests/Dev11_0000000_function_crashes/test.cpp b/tests/std/tests/Dev11_0000000_function_crashes/test.cpp index cf44c1a484..16419ffca6 100644 --- a/tests/std/tests/Dev11_0000000_function_crashes/test.cpp +++ b/tests/std/tests/Dev11_0000000_function_crashes/test.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #include -#ifndef _M_CEE +#ifndef _M_CEE_PURE #include #endif using namespace std; @@ -68,14 +68,14 @@ int main() { g(); } -#ifndef _M_CEE +#ifndef _M_CEE_PURE { future f = async([]() { return 500000; }); global += f.get(); } #endif -#ifdef _M_CEE +#ifdef _M_CEE_PURE return global != 83210; #else return global != 583210; diff --git a/tests/std/tests/Dev11_0235721_async_and_packaged_task/env.lst b/tests/std/tests/Dev11_0235721_async_and_packaged_task/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/Dev11_0235721_async_and_packaged_task/env.lst +++ b/tests/std/tests/Dev11_0235721_async_and_packaged_task/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/Dev11_0235721_async_and_packaged_task/test.cpp b/tests/std/tests/Dev11_0235721_async_and_packaged_task/test.cpp index 0fdd2df70d..1d3cfa51df 100644 --- a/tests/std/tests/Dev11_0235721_async_and_packaged_task/test.cpp +++ b/tests/std/tests/Dev11_0235721_async_and_packaged_task/test.cpp @@ -266,6 +266,7 @@ void test_shared_future_noexcept_copy() { test_shared_future_noexcept_copy_impl(); } +#ifndef _M_CEE // TRANSITION, VSO-1659511 struct use_async_in_a_global_tester { use_async_in_a_global_tester() { assert(async([] { return 42; }).get() == 42); @@ -274,6 +275,7 @@ struct use_async_in_a_global_tester { (void) async([] { return 1729; }).get(); } } use_async_in_a_global_instance; +#endif // _M_CEE int main() { test_DevDiv_235721(); diff --git a/tests/std/tests/Dev11_0253803_debug_pointer/test.cpp b/tests/std/tests/Dev11_0253803_debug_pointer/test.cpp index 63aa3516a4..a9b67d7556 100644 --- a/tests/std/tests/Dev11_0253803_debug_pointer/test.cpp +++ b/tests/std/tests/Dev11_0253803_debug_pointer/test.cpp @@ -11,15 +11,9 @@ #include #include -#if _HAS_CXX17 && !defined(_M_CEE) -#define HAS_PARALLEL_ALGORITHMS 1 -#else -#define HAS_PARALLEL_ALGORITHMS 0 -#endif // _HAS_CXX17 && !defined(_M_CEE) - -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution #include -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution using namespace std; @@ -277,7 +271,7 @@ int main() { uninitialized_fill(nil, nil, 1729); uninitialized_fill_n(nil, zero, 1729); -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution using namespace std::execution; (void) all_of(par, nil, nil, pred); (void) any_of(par, nil, nil, pred); @@ -426,5 +420,5 @@ int main() { adjacent_difference(par, nil, nil, nil); adjacent_difference(par, nil, nil, nil, binop); -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution } diff --git a/tests/std/tests/Dev11_0377755_thread_ctor_move_only_types/env.lst b/tests/std/tests/Dev11_0377755_thread_ctor_move_only_types/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/Dev11_0377755_thread_ctor_move_only_types/env.lst +++ b/tests/std/tests/Dev11_0377755_thread_ctor_move_only_types/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/Dev11_0485243_condition_variable_crash/env.lst b/tests/std/tests/Dev11_0485243_condition_variable_crash/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/Dev11_0485243_condition_variable_crash/env.lst +++ b/tests/std/tests/Dev11_0485243_condition_variable_crash/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/Dev11_0493504_error_category_lifetime/test.cpp b/tests/std/tests/Dev11_0493504_error_category_lifetime/test.cpp index e264e7f5ed..befa397a30 100644 --- a/tests/std/tests/Dev11_0493504_error_category_lifetime/test.cpp +++ b/tests/std/tests/Dev11_0493504_error_category_lifetime/test.cpp @@ -6,9 +6,9 @@ #include #include -#ifndef _M_CEE +#ifndef _M_CEE_PURE #include -#endif // _M_CEE +#endif // _M_CEE_PURE #include @@ -20,9 +20,9 @@ struct Global { (void) iostream_category().name(); (void) system_category().name(); -#ifndef _M_CEE +#ifndef _M_CEE_PURE (void) future_category().name(); -#endif // _M_CEE +#endif // _M_CEE_PURE } }; diff --git a/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp b/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp index f5236ef8e6..79422b95da 100644 --- a/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp +++ b/tests/std/tests/Dev11_0535636_functional_overhaul/test.cpp @@ -1377,6 +1377,7 @@ _CONSTEXPR20 bool test_mem_fn() { assert(&r2 == &cw.m_i); +#ifndef _M_CEE // TRANSITION, VSO-1664293 w.m_i = 1000; assert(mem_fn(&Widget::nullary)(w) == 1001); @@ -1400,6 +1401,7 @@ _CONSTEXPR20 bool test_mem_fn() { assert(mem_fn(&Widget::unary_lv)(&w, 6) == 1061); assert(mem_fn(&Widget::unary_rv)(move(w), 7) == 1404); +#endif // _M_CEE return true; } diff --git a/tests/std/tests/Dev11_0579795_inplace_merge_out_of_memory/test.cpp b/tests/std/tests/Dev11_0579795_inplace_merge_out_of_memory/test.cpp index f66f049e29..37682b7cb8 100644 --- a/tests/std/tests/Dev11_0579795_inplace_merge_out_of_memory/test.cpp +++ b/tests/std/tests/Dev11_0579795_inplace_merge_out_of_memory/test.cpp @@ -9,15 +9,9 @@ #include #include -#if _HAS_CXX17 && !defined(_M_CEE) -#define HAS_PARALLEL_ALGORITHMS 1 -#else -#define HAS_PARALLEL_ALGORITHMS 0 -#endif // _HAS_CXX17 && !defined(_M_CEE) - -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution #include -#endif // HAS_PARALLEL_ALGORITHMS +#endif // __cpp_lib_execution using namespace std; @@ -141,7 +135,7 @@ void test_stability() { 75, 19, 35, 65, 99, 42, 39, 80, 66, 18, 87, 64, 76, 33, 96, 55, 26, 98, 63, 95, 40, 65, 79, 16, 63, 68, 55, 27, 99, 55, 77, 59, 77, 11, 77, 92, 77, 16, 28, 83, 74, 77, 21, 55, 50, 73, 65, 81, 53, 68, 82, 72, 92, 64, 30, 94, 80, 86, 21, 37, 20, 90, 56, 71, 41, 15, 42, 70, 50, 90, 26, 72, 47, 41, 46, 41, 58, 94}}; -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution auto b = a; #endif @@ -155,7 +149,7 @@ void test_stability() { assert(a == correct); -#if HAS_PARALLEL_ALGORITHMS +#ifdef __cpp_lib_execution stable_sort(execution::par, b.begin(), b.end(), comp); assert(b == correct); diff --git a/tests/std/tests/Dev11_0696045_future_wait_for/env.lst b/tests/std/tests/Dev11_0696045_future_wait_for/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/Dev11_0696045_future_wait_for/env.lst +++ b/tests/std/tests/Dev11_0696045_future_wait_for/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/Dev11_0920385_list_sort_allocator/test.cpp b/tests/std/tests/Dev11_0920385_list_sort_allocator/test.cpp index 1be18dcf82..e3b01dad3f 100644 --- a/tests/std/tests/Dev11_0920385_list_sort_allocator/test.cpp +++ b/tests/std/tests/Dev11_0920385_list_sort_allocator/test.cpp @@ -28,9 +28,9 @@ #include #include -#ifndef _M_CEE +#ifndef _M_CEE_PURE #include -#endif // _M_CEE +#endif // _M_CEE_PURE using namespace std; @@ -231,7 +231,7 @@ int main() { shared_ptr sp2 = allocate_shared(alloc, 1729); } -#ifndef _M_CEE +#ifndef _M_CEE_PURE { promise p(allocator_arg, alloc); future f = p.get_future(); @@ -277,7 +277,7 @@ int main() { f.get(); } #endif // _HAS_FUNCTION_ALLOCATOR_SUPPORT -#endif // _M_CEE +#endif // _M_CEE_PURE test_1119194(); test_1184701(); diff --git a/tests/std/tests/Dev11_1074023_constexpr/test.cpp b/tests/std/tests/Dev11_1074023_constexpr/test.cpp index 2ce1cf86ec..cdd745fd63 100644 --- a/tests/std/tests/Dev11_1074023_constexpr/test.cpp +++ b/tests/std/tests/Dev11_1074023_constexpr/test.cpp @@ -9,27 +9,18 @@ #include #include -#include -#ifndef _M_CEE_PURE -#include -#endif // _M_CEE_PURE #include +#include #include #include +#include #include -#ifndef _M_CEE -#include -#endif // _M_CEE #include #include #include #include #include #include -#ifndef _M_CEE -#include -#endif // _M_CEE -#include #include #include #include @@ -41,6 +32,12 @@ #include #include +#ifndef _M_CEE_PURE +#include +#include +#include +#endif // _M_CEE_PURE + using namespace std; using namespace std::chrono; namespace RC = std::regex_constants; @@ -814,7 +811,7 @@ STATIC_ASSERT(sm.first == nullptr); STATIC_ASSERT(sm.second == nullptr); STATIC_ASSERT(sm.matched == false); -#ifndef _M_CEE +#ifndef _M_CEE_PURE constexpr defer_lock_t defer_lock2 = defer_lock; constexpr try_to_lock_t try_to_lock2 = try_to_lock; @@ -825,7 +822,7 @@ constexpr once_flag once{}; // TRANSITION, // constexpr mutex() noexcept; -#endif // _M_CEE +#endif // _M_CEE_PURE // reverse_iterator and string_view constexpr are tested in P0220R1_string_view @@ -849,9 +846,9 @@ void test_all_bitmasks() { test_bitmask(); test_bitmask(); test_bitmask(); -#ifndef _M_CEE +#ifndef _M_CEE_PURE test_bitmask(); -#endif // _M_CEE +#endif // _M_CEE_PURE } template @@ -1015,12 +1012,12 @@ int main() { (void) istream_it; (void) istreambuf_it; -#ifndef _M_CEE +#ifndef _M_CEE_PURE (void) defer_lock2; (void) try_to_lock2; (void) adopt_lock2; (void) once; -#endif // _M_CEE +#endif // _M_CEE_PURE // Compare against VC 2013's values. assert_bits(numeric_limits::denorm_min(), 0x00000001UL); diff --git a/tests/std/tests/Dev11_1114006_condition_variable_pred/env.lst b/tests/std/tests/Dev11_1114006_condition_variable_pred/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/Dev11_1114006_condition_variable_pred/env.lst +++ b/tests/std/tests/Dev11_1114006_condition_variable_pred/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/Dev11_1127004_future_has_exceptions_0/env.lst b/tests/std/tests/Dev11_1127004_future_has_exceptions_0/env.lst index a7497cef71..6777856e82 100644 --- a/tests/std/tests/Dev11_1127004_future_has_exceptions_0/env.lst +++ b/tests/std/tests/Dev11_1127004_future_has_exceptions_0/env.lst @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst RUNALL_CROSSLIST PM_CL="/D_HAS_EXCEPTIONS=0" PM_CL="/D_HAS_EXCEPTIONS=1" diff --git a/tests/std/tests/Dev11_1150223_shared_mutex/test.cpp b/tests/std/tests/Dev11_1150223_shared_mutex/test.cpp index 55d463d44d..6030a575bf 100644 --- a/tests/std/tests/Dev11_1150223_shared_mutex/test.cpp +++ b/tests/std/tests/Dev11_1150223_shared_mutex/test.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -12,22 +13,15 @@ #define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) -#ifndef _M_CEE -#include -#endif // _M_CEE using namespace std; -#ifndef _M_CEE STATIC_ASSERT(is_standard_layout_v); // N4296 30.4.1.2.1 [thread.mutex.class]/3 STATIC_ASSERT(is_standard_layout_v); // N4296 30.4.1.2.2 [thread.mutex.recursive]/2 STATIC_ASSERT(is_standard_layout_v); // N4296 30.4.1.3.1 [thread.timedmutex.class]/2 STATIC_ASSERT(is_standard_layout_v); // N4296 30.4.1.3.2 [thread.timedmutex.recursive]/2 -#endif // _M_CEE STATIC_ASSERT(is_standard_layout_v); // N4527 30.4.1.4.1 [thread.sharedmutex.class]/2 -#ifndef _M_CEE STATIC_ASSERT(is_standard_layout_v); // N4296 30.4.1.4.1 [thread.sharedtimedmutex.class]/2 STATIC_ASSERT(is_standard_layout_v); // N4296 30.5.1 [thread.condition.condvar]/1 -#endif // _M_CEE void join_and_clear(vector& threads) { for (auto& t : threads) { @@ -187,7 +181,6 @@ void test_try_lock_and_try_lock_shared() { } } -#ifndef _M_CEE void test_timed_behavior() { { // Test try_lock_for() and try_lock_shared_for(). No timing assumptions. shared_timed_mutex stm; @@ -331,7 +324,6 @@ void test_timed_behavior() { assert(readers == 4); } } -#endif // _M_CEE int main() { test_one_writer(); @@ -340,7 +332,6 @@ int main() { test_readers_blocking_writer(); test_try_lock_and_try_lock_shared(); -#ifndef _M_CEE test_one_writer(); test_multiple_readers(); test_writer_blocking_readers(); @@ -348,5 +339,4 @@ int main() { test_try_lock_and_try_lock_shared(); test_timed_behavior(); -#endif // _M_CEE } diff --git a/tests/std/tests/GH_000545_include_compare/test_coroutine.cpp b/tests/std/tests/GH_000545_include_compare/test_coroutine.cpp index 198678b741..e9142637da 100644 --- a/tests/std/tests/GH_000545_include_compare/test_coroutine.cpp +++ b/tests/std/tests/GH_000545_include_compare/test_coroutine.cpp @@ -1,10 +1,12 @@ // Copyright (c) Microsoft Corporation. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +#ifndef _M_CEE // TRANSITION, VSO-1663233 #include // Testing LWG-3330 "Include from most library headers" by intentionally NOT including static_assert(std::is_eq(std::partial_ordering::equivalent)); +#endif // _M_CEE void test_coroutine() {} diff --git a/tests/std/tests/GH_000685_condition_variable_any/env.lst b/tests/std/tests/GH_000685_condition_variable_any/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/GH_000685_condition_variable_any/env.lst +++ b/tests/std/tests/GH_000685_condition_variable_any/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/GH_002058_debug_iterator_race/env.lst b/tests/std/tests/GH_002058_debug_iterator_race/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/GH_002058_debug_iterator_race/env.lst +++ b/tests/std/tests/GH_002058_debug_iterator_race/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/GH_002488_promise_not_default_constructible_types/env.lst b/tests/std/tests/GH_002488_promise_not_default_constructible_types/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/GH_002488_promise_not_default_constructible_types/env.lst +++ b/tests/std/tests/GH_002488_promise_not_default_constructible_types/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/GH_002488_promise_not_default_constructible_types/test.cpp b/tests/std/tests/GH_002488_promise_not_default_constructible_types/test.cpp index 0f4dedb10a..35a7b92db0 100644 --- a/tests/std/tests/GH_002488_promise_not_default_constructible_types/test.cpp +++ b/tests/std/tests/GH_002488_promise_not_default_constructible_types/test.cpp @@ -127,6 +127,7 @@ void run_tests() { } } +#ifndef _M_CEE // TRANSITION, VSO-1659383 { Promise p; Future f = p.get_future(); @@ -153,6 +154,7 @@ void run_tests() { assert(failures == 7); assert(succeeded != -1 && f.get().x == succeeded); } +#endif // _M_CEE { (void) std::async(std::launch::async, [] { return T(16); }); diff --git a/tests/std/tests/GH_002558_format_presetPadding/env.lst b/tests/std/tests/GH_002558_format_presetPadding/env.lst index 7ad91d88fe..cf58a6b66f 100644 --- a/tests/std/tests/GH_002558_format_presetPadding/env.lst +++ b/tests/std/tests/GH_002558_format_presetPadding/env.lst @@ -4,22 +4,24 @@ # This is concepts_20_matrix.lst + /presetPadding with clang configs disabled (clang-cl doesn't support /presetPadding) RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /presetPadding" +PM_CL="/w14640 /Zc:threadSafeInit- /presetPadding" RUNALL_CROSSLIST -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -# PM_CL="/std:c++20 /permissive- /BE /c /MD" -# PM_CL="/std:c++latest /permissive- /BE /c /MTd" -# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++20 /permissive- /MD" -# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++latest /permissive- /MTd /fp:strict" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" +# PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" +# PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" diff --git a/tests/std/tests/P0019R8_atomic_ref/test.cpp b/tests/std/tests/P0019R8_atomic_ref/test.cpp index 5ac90c9d36..7af751eca2 100644 --- a/tests/std/tests/P0019R8_atomic_ref/test.cpp +++ b/tests/std/tests/P0019R8_atomic_ref/test.cpp @@ -37,6 +37,7 @@ struct int128 { template void test_ops() { +#ifndef _M_CEE // TRANSITION, VSO-1659408 constexpr std::size_t unique = 80; // small to avoid overflow even for char constexpr std::size_t repetitions = 8000; constexpr std::size_t total = unique * repetitions; @@ -83,6 +84,7 @@ void test_ops() { assert(std::transform_reduce(par, refs.begin(), refs.end(), 0, std::plus{}, load) == range * repetitions * 2); assert(std::transform_reduce(par, refs.begin(), refs.end(), 0, std::plus{}, xchg0) == range * 2); assert(std::transform_reduce(par, refs.begin(), refs.end(), 0, std::plus{}, load) == 0); +#endif // _M_CEE } template diff --git a/tests/std/tests/P0024R2_parallel_algorithms_adjacent_difference/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_adjacent_difference/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_adjacent_difference/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_adjacent_difference/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_adjacent_find/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_adjacent_find/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_adjacent_find/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_adjacent_find/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_all_of/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_all_of/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_all_of/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_all_of/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_count/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_count/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_count/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_count/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_equal/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_equal/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_equal/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_equal/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_equal/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_equal/test.cpp index 45fd84742e..c411aefd66 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_equal/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_equal/test.cpp @@ -80,7 +80,9 @@ void test_case_equal_parallel(const size_t testSize) { } int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659695 parallel_test_case(test_case_equal_parallel); parallel_test_case(test_case_equal_parallel); parallel_test_case(test_case_equal_parallel); +#endif // _M_CEE } diff --git a/tests/std/tests/P0024R2_parallel_algorithms_exclusive_scan/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_exclusive_scan/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_exclusive_scan/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_exclusive_scan/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_find/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_find/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_find/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_find/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_find_end/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_find_end/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_find_end/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_find_end/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_find_first_of/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_find_first_of/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_find_first_of/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_find_first_of/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_for_each/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_for_each/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_for_each/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_for_each/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_for_each/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_for_each/test.cpp index ecfbea2801..f5955af494 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_for_each/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_for_each/test.cpp @@ -69,6 +69,7 @@ struct test_case_for_each_n_parallel { }; int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659695 test_case_for_each_n(); parallel_test_case(test_case_for_each_parallel{}, par); parallel_test_case(test_case_for_each_parallel{}, par); @@ -84,4 +85,5 @@ int main() { parallel_test_case(test_case_for_each_n_parallel{}, unseq); parallel_test_case(test_case_for_each_n_parallel{}, unseq); #endif // _HAS_CXX20 +#endif // _M_CEE } diff --git a/tests/std/tests/P0024R2_parallel_algorithms_inclusive_scan/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_inclusive_scan/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_inclusive_scan/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_inclusive_scan/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_inclusive_scan/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_inclusive_scan/test.cpp index eddb7b3b6b..769090a18d 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_inclusive_scan/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_inclusive_scan/test.cpp @@ -207,6 +207,7 @@ void test_case_inclusive_scan_init_writes_intermediate_type() { } int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659695 mt19937 gen(1729); parallel_test_case(test_case_inclusive_scan_parallel, gen); @@ -217,4 +218,5 @@ int main() { parallel_test_case(test_case_inclusive_scan_bop_init_parallel_associative); parallel_test_case(test_case_inclusive_scan_bop_init_parallel_associative_in_place); test_case_inclusive_scan_init_writes_intermediate_type(); +#endif // _M_CEE } diff --git a/tests/std/tests/P0024R2_parallel_algorithms_is_heap/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_is_heap/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_is_heap/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_is_heap/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_is_partitioned/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_is_partitioned/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_is_partitioned/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_is_partitioned/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_is_sorted/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_is_sorted/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_is_sorted/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_is_sorted/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_mismatch/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_mismatch/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_mismatch/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_mismatch/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_mismatch/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_mismatch/test.cpp index cac22c3ab7..5d7ffb3471 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_mismatch/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_mismatch/test.cpp @@ -77,6 +77,7 @@ void test_case_mismatch_lengths(const size_t testSize) { } int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659489 parallel_test_case(test_case_mismatch_signatures); parallel_test_case(test_case_mismatch_signatures); parallel_test_case(test_case_mismatch_signatures); @@ -85,4 +86,5 @@ int main() { parallel_test_case(test_case_mismatch_lengths); parallel_test_case(test_case_mismatch_lengths); parallel_test_case(test_case_mismatch_lengths); +#endif // _M_CEE } diff --git a/tests/std/tests/P0024R2_parallel_algorithms_partition/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_partition/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_partition/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_partition/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_reduce/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_reduce/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_reduce/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_reduce/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_reduce/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_reduce/test.cpp index c168a294f2..21058aa8c6 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_reduce/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_reduce/test.cpp @@ -75,9 +75,11 @@ void test_case_incorrect_special_case_reasoning() { } int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659695 mt19937 gen(1729); parallel_test_case(test_case_reduce, gen); parallel_test_case([](const size_t testSize) { test_case_move_only(seq, testSize); }); parallel_test_case([](const size_t testSize) { test_case_move_only(par, testSize); }); test_case_incorrect_special_case_reasoning(); +#endif // _M_CEE } diff --git a/tests/std/tests/P0024R2_parallel_algorithms_remove/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_remove/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_remove/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_remove/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_replace/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_replace/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_replace/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_replace/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_replace/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_replace/test.cpp index 1a4c38389a..ef153df436 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_replace/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_replace/test.cpp @@ -37,8 +37,10 @@ void test_case_replace_if_parallel(const size_t testSize, mt19937& gen) { } int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659695 mt19937 gen(1729); parallel_test_case(test_case_replace_parallel, gen); parallel_test_case(test_case_replace_if_parallel, gen); +#endif // _M_CEE } diff --git a/tests/std/tests/P0024R2_parallel_algorithms_search/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_search/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_search/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_search/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_search_n/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_search_n/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_search_n/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_search_n/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_set_difference/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_set_difference/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_set_difference/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_set_difference/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_set_intersection/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_set_intersection/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_set_intersection/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_set_intersection/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_sort/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_sort/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_sort/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_sort/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_stable_sort/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_stable_sort/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_stable_sort/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_stable_sort/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_transform/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_transform/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_transform/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_transform/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_transform_exclusive_scan/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_transform_exclusive_scan/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_transform_exclusive_scan/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_transform_exclusive_scan/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_transform_inclusive_scan/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_transform_inclusive_scan/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_transform_inclusive_scan/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_transform_inclusive_scan/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_transform_inclusive_scan/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_transform_inclusive_scan/test.cpp index d4e299dc5a..450e007ce5 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_transform_inclusive_scan/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_transform_inclusive_scan/test.cpp @@ -218,6 +218,7 @@ void test_case_transform_inclusive_scan_init_writes_intermediate_type() { } int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659695 mt19937 gen(1729); parallel_test_case(test_case_transform_inclusive_scan_parallel, gen); @@ -227,4 +228,5 @@ int main() { parallel_test_case(test_case_transform_inclusive_scan_init_parallel_associative); parallel_test_case(test_case_transform_inclusive_scan_init_parallel_associative_in_place); test_case_transform_inclusive_scan_init_writes_intermediate_type(); +#endif // _M_CEE } diff --git a/tests/std/tests/P0024R2_parallel_algorithms_transform_reduce/env.lst b/tests/std/tests/P0024R2_parallel_algorithms_transform_reduce/env.lst index 1f3dc81ee8..2de7aab295 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_transform_reduce/env.lst +++ b/tests/std/tests/P0024R2_parallel_algorithms_transform_reduce/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_17_matrix.lst +RUNALL_INCLUDE ..\usual_17_matrix.lst diff --git a/tests/std/tests/P0024R2_parallel_algorithms_transform_reduce/test.cpp b/tests/std/tests/P0024R2_parallel_algorithms_transform_reduce/test.cpp index 9141838019..93dd580991 100644 --- a/tests/std/tests/P0024R2_parallel_algorithms_transform_reduce/test.cpp +++ b/tests/std/tests/P0024R2_parallel_algorithms_transform_reduce/test.cpp @@ -145,6 +145,7 @@ void test_case_incorrect_special_case_reasoning() { } int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659695 mt19937 gen(1729); parallel_test_case(test_case_transform_reduce_binary, gen); parallel_test_case(test_case_transform_reduce, gen); @@ -153,4 +154,5 @@ int main() { parallel_test_case([](const size_t testSize) { test_case_move_only(seq, testSize); }); parallel_test_case([](const size_t testSize) { test_case_move_only(par, testSize); }); test_case_incorrect_special_case_reasoning(); +#endif // _M_CEE } diff --git a/tests/std/tests/P0040R3_extending_memory_management_tools/test.cpp b/tests/std/tests/P0040R3_extending_memory_management_tools/test.cpp index 8fcd62f428..98fe274136 100644 --- a/tests/std/tests/P0040R3_extending_memory_management_tools/test.cpp +++ b/tests/std/tests/P0040R3_extending_memory_management_tools/test.cpp @@ -54,7 +54,7 @@ struct uninitialized_fixture { template struct uninitialized_storage { -#ifdef _M_CEE +#ifdef _M_CEE // TRANSITION, VSO-1659408 char storage[sizeof(T) * Count + sizeof(T)]; T* begin() { diff --git a/tests/std/tests/P0083R3_splicing_maps_and_sets/test.cpp b/tests/std/tests/P0083R3_splicing_maps_and_sets/test.cpp index 77054bb4ae..35b60a9e3f 100644 --- a/tests/std/tests/P0083R3_splicing_maps_and_sets/test.cpp +++ b/tests/std/tests/P0083R3_splicing_maps_and_sets/test.cpp @@ -153,10 +153,12 @@ void test_node_handle(NodeHandle& nh1, NodeHandle& nh2, Validator1 v1, Validator // Nothrow/constexpr default construction static_assert(std::is_nothrow_default_constructible_v); CHECK_EMPTY(NodeHandle{}); +#ifndef _M_CEE // TRANSITION, VSO-1664382 #ifdef __cpp_constinit #pragma warning(suppress : 4640) // C4640 emitted by MSVC because 'NodeHandle' type has non-trivial dtor { static constinit NodeHandle static_handle{}; } #endif // ^^^ __cpp_constinit ^^^ +#endif // _M_CEE // No copies! static_assert(!std::is_copy_constructible_v); diff --git a/tests/std/tests/P0088R3_variant/env.lst b/tests/std/tests/P0088R3_variant/env.lst index 941eaa7656..92e8de7e3e 100644 --- a/tests/std/tests/P0088R3_variant/env.lst +++ b/tests/std/tests/P0088R3_variant/env.lst @@ -26,6 +26,7 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +# With /clr /std:c++20 /d1clrcxxstd, extreme compiler memory consumption causes test timeouts. PM_CL="/clr /MD /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" PM_CL="/clr /MDd /std:c++17 /DCONSTEXPR_NOTHROW /DTEST_PERMISSIVE" PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" diff --git a/tests/std/tests/P0088R3_variant/test.cpp b/tests/std/tests/P0088R3_variant/test.cpp index 26b6422e41..9fbd0c2155 100644 --- a/tests/std/tests/P0088R3_variant/test.cpp +++ b/tests/std/tests/P0088R3_variant/test.cpp @@ -6064,7 +6064,7 @@ template struct Holder { T t; }; constexpr bool test(bool do_it) { if (do_it) { -#ifndef _M_CEE +#ifndef _M_CEE // TRANSITION, VSO-1659496 std::variant*, int> v = nullptr; std::visit([](auto){}, v); std::visit([](auto) -> Holder* { return nullptr; }, v); diff --git a/tests/std/tests/P0156R2_scoped_lock/test.cpp b/tests/std/tests/P0156R2_scoped_lock/test.cpp index 1248533591..8dd8021b8c 100644 --- a/tests/std/tests/P0156R2_scoped_lock/test.cpp +++ b/tests/std/tests/P0156R2_scoped_lock/test.cpp @@ -13,12 +13,7 @@ using namespace std; // LOCK ORDERING: g_coutMutex is locked after all other locks and synchronizes // access to cout. -#ifdef _M_CEE -#include -using TestMutex = shared_mutex; -#else // ^^^ _M_CEE ^^^ // vvv !_M_CEE vvv // using TestMutex = mutex; -#endif // _M_CEE TestMutex g_coutMutex; diff --git a/tests/std/tests/P0220R1_any/test.cpp b/tests/std/tests/P0220R1_any/test.cpp index 6baf5d08ba..5fccb41c84 100644 --- a/tests/std/tests/P0220R1_any/test.cpp +++ b/tests/std/tests/P0220R1_any/test.cpp @@ -2605,7 +2605,6 @@ namespace msvc { namespace overaligned { template void test_one_alignment() { -#ifndef _M_CEE // If alignas doesn't work, we don't need to support overaligned types. constexpr std::size_t align = __STDCPP_DEFAULT_NEW_ALIGNMENT__ << (1 + shift); struct aligned_type { @@ -2634,7 +2633,6 @@ namespace msvc { assert(static_cast(globalMemCounter.aligned_delete_called) == i + 1); assert(globalMemCounter.last_delete_align == alignof(aligned_type)); } -#endif // !_M_CEE } void run_test() { diff --git a/tests/std/tests/P0220R1_polymorphic_memory_resources/test.cpp b/tests/std/tests/P0220R1_polymorphic_memory_resources/test.cpp index 459fde682c..c679bd7d67 100644 --- a/tests/std/tests/P0220R1_polymorphic_memory_resources/test.cpp +++ b/tests/std/tests/P0220R1_polymorphic_memory_resources/test.cpp @@ -1250,13 +1250,11 @@ namespace { std::pmr::unsynchronized_pool_resource upr{{0_zu, 64_zu}, &rr}; lambda(&upr); } -#ifndef _M_CEE { recording_resource rr; std::pmr::synchronized_pool_resource upr{{0_zu, 64_zu}, &rr}; lambda(&upr); } -#endif // _M_CEE } void test_medium_allocation() { @@ -1458,9 +1456,7 @@ namespace { void test() { test_is_equal(); -#ifndef _M_CEE test_is_equal(); -#endif // _M_CEE } } // namespace is_equal } // namespace pool diff --git a/tests/std/tests/P0415R1_constexpr_complex/test.cpp b/tests/std/tests/P0415R1_constexpr_complex/test.cpp index 12383dfc80..b750a2ea5a 100644 --- a/tests/std/tests/P0415R1_constexpr_complex/test.cpp +++ b/tests/std/tests/P0415R1_constexpr_complex/test.cpp @@ -61,7 +61,9 @@ constexpr void test_type() { assert((c == complex{f1, f3})); c /= complex{f1, f3}; +#ifndef _M_CEE // TRANSITION, VSO-1665481 assert(c == complex{f1}); +#endif // _M_CEE { using Other = conditional_t, double, float>; @@ -79,7 +81,9 @@ constexpr void test_type() { assert((c == complex{f1, f3})); c /= complex{Other{1}, Other{3}}; +#ifndef _M_CEE // TRANSITION, VSO-1665481 assert(c == complex{f1}); +#endif // _M_CEE } assert((complex{f1, f1} + complex{f1, f2} == complex{f2, f3})); diff --git a/tests/std/tests/P0433R2_deduction_guides/test.cpp b/tests/std/tests/P0433R2_deduction_guides/test.cpp index 58785806c5..8b99de5f0b 100644 --- a/tests/std/tests/P0433R2_deduction_guides/test.cpp +++ b/tests/std/tests/P0433R2_deduction_guides/test.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #include +#include #include #include #include @@ -10,16 +11,19 @@ #include #include #include +#include #include #include #include #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -33,16 +37,6 @@ #include #include -#ifndef _M_CEE_PURE -#include -#endif // _M_CEE_PURE - -#ifndef _M_CEE -#include -#include -#include -#endif // _M_CEE - #if _HAS_CXX23 && !defined(__clang__) // TRANSITION, DevCom-10107077, Clang has not implemented Deducing this #define HAS_EXPLICIT_THIS_PARAMETER #endif // _HAS_CXX23 && !defined(__clang__) @@ -1102,7 +1096,6 @@ void test_regex() { } void test_atomic() { -#ifndef _M_CEE_PURE long x = 11L; atomic atom1(x); @@ -1110,11 +1103,9 @@ void test_atomic() { static_assert(is_same_v>); static_assert(is_same_v>); -#endif // _M_CEE_PURE } void test_locks() { -#ifndef _M_CEE recursive_mutex rm{}; recursive_timed_mutex rtm{}; lock_guard lg(rm); @@ -1144,7 +1135,6 @@ void test_locks() { static_assert(is_same_v>); static_assert(is_same_v>); static_assert(is_same_v>); -#endif // _M_CEE } int main() { @@ -1161,9 +1151,7 @@ int main() { test_transparent_operator_functors(); test_function_wrapper(); -#ifndef _M_CEE test_function_wrapper(); -#endif // _M_CEE test_searchers(); test_duration_and_time_point(); diff --git a/tests/std/tests/P0466R5_layout_compatibility_and_pointer_interconvertibility_traits/test.cpp b/tests/std/tests/P0466R5_layout_compatibility_and_pointer_interconvertibility_traits/test.cpp index f1ee5890b8..943f022078 100644 --- a/tests/std/tests/P0466R5_layout_compatibility_and_pointer_interconvertibility_traits/test.cpp +++ b/tests/std/tests/P0466R5_layout_compatibility_and_pointer_interconvertibility_traits/test.cpp @@ -202,7 +202,9 @@ constexpr bool test() { ASSERT(!is_corresponding_member(&S5::v1, &S6::v2)); ASSERT(!is_corresponding_member(&S5::v2, &S6::v1)); ASSERT(!is_corresponding_member(&S5::v3, &S6::v3)); +#ifndef _M_CEE // TRANSITION, VSO-1664293 ASSERT(!is_corresponding_member(&NS::v1, &NS::w1)); +#endif // _M_CEE ASSERT(!is_corresponding_member(&S7::f1, &S7::f1)); ASSERT(!is_corresponding_member(static_cast(nullptr), static_cast(nullptr))); ASSERT(!is_corresponding_member(&S1::v1, static_cast(nullptr))); @@ -237,7 +239,9 @@ constexpr bool test() { ASSERT(is_pointer_interconvertible_with_class(&U::v2)); ASSERT(!is_pointer_interconvertible_with_class(&NS::a)); +#ifndef _M_CEE // TRANSITION, VSO-1664293 ASSERT(!is_pointer_interconvertible_with_class(&NS::b)); +#endif // _M_CEE ASSERT(!is_pointer_interconvertible_with_class(&C::f1)); ASSERT(!is_pointer_interconvertible_with_class(static_cast(nullptr))); } diff --git a/tests/std/tests/P0476R2_bit_cast/test.cpp b/tests/std/tests/P0476R2_bit_cast/test.cpp index 612846b41f..288f960b42 100644 --- a/tests/std/tests/P0476R2_bit_cast/test.cpp +++ b/tests/std/tests/P0476R2_bit_cast/test.cpp @@ -219,10 +219,14 @@ constexpr bool test_float() { if (!std::is_constant_evaluated()) { assert(std::signbit(std::bit_cast(as_int)) == true); } + +#ifndef _M_CEE // TRANSITION, VSO-1666161 // signaling nan as_int = 0x7fc00001; float snan = std::bit_cast(as_int); assert(as_int == std::bit_cast(snan)); +#endif // _M_CEE + as_int = std::bit_cast(std::numeric_limits::infinity()); assert(as_int == 0x7f800000); assert(std::bit_cast(as_int) == std::numeric_limits::infinity()); diff --git a/tests/std/tests/P0513R0_poisoning_the_hash/test.cpp b/tests/std/tests/P0513R0_poisoning_the_hash/test.cpp index a94452d8f6..0666ce4990 100644 --- a/tests/std/tests/P0513R0_poisoning_the_hash/test.cpp +++ b/tests/std/tests/P0513R0_poisoning_the_hash/test.cpp @@ -19,9 +19,9 @@ #include #include -#ifndef _M_CEE +#ifndef _M_CEE_PURE #include -#endif // _M_CEE +#endif // _M_CEE_PURE using namespace std; @@ -93,9 +93,9 @@ STATIC_ASSERT(standard_hash_enabled()); STATIC_ASSERT(standard_hash_enabled()); STATIC_ASSERT(standard_hash_enabled>()); -#ifndef _M_CEE +#ifndef _M_CEE_PURE STATIC_ASSERT(standard_hash_enabled()); -#endif // _M_CEE +#endif // _M_CEE_PURE struct NotHashable {}; diff --git a/tests/std/tests/P0645R10_text_formatting_legacy_text_encoding/env.lst b/tests/std/tests/P0645R10_text_formatting_legacy_text_encoding/env.lst index 4b3fe1c1c3..fd74dc9139 100644 --- a/tests/std/tests/P0645R10_text_formatting_legacy_text_encoding/env.lst +++ b/tests/std/tests/P0645R10_text_formatting_legacy_text_encoding/env.lst @@ -6,22 +6,25 @@ RUNALL_INCLUDE ..\prefix.lst RUNALL_CROSSLIST -PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /execution-charset:.932" +PM_CL="/w14640 /Zc:threadSafeInit- /execution-charset:.932" RUNALL_CROSSLIST -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -# PM_CL="/std:c++20 /permissive- /BE /c /MD" -# PM_CL="/std:c++latest /permissive- /BE /c /MTd" -# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++20 /permissive- /MD" -# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++latest /permissive- /MTd /fp:strict" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +# TRANSITION, VSO-1664463 +# PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +# PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" +# PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" +# PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" +# PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" diff --git a/tests/std/tests/P0660R10_stop_token/test.cpp b/tests/std/tests/P0660R10_stop_token/test.cpp index 132dd856a2..afad961313 100644 --- a/tests/std/tests/P0660R10_stop_token/test.cpp +++ b/tests/std/tests/P0660R10_stop_token/test.cpp @@ -55,6 +55,7 @@ struct cb_destroying_functor { }; int main() noexcept { +#ifndef _M_CEE // TRANSITION, VSO-1659408 reset_new_counters(0); { // all the following must not allocate, and must work with a nostopstate source; in rough synopsis order stop_token token; @@ -415,4 +416,5 @@ int main() noexcept { reset_new_counters(0); puts("pass"); +#endif // _M_CEE } diff --git a/tests/std/tests/P0718R2_atomic_smart_ptrs/test.cpp b/tests/std/tests/P0718R2_atomic_smart_ptrs/test.cpp index cce5ed2949..710a09a454 100644 --- a/tests/std/tests/P0718R2_atomic_smart_ptrs/test.cpp +++ b/tests/std/tests/P0718R2_atomic_smart_ptrs/test.cpp @@ -580,9 +580,11 @@ void ensure_member_calls_compile() { } } +#ifndef _M_CEE // TRANSITION, VSO-1664382 // LWG-3661: constinit atomic> a(nullptr); should work constinit atomic> a{}; constinit atomic> b{nullptr}; +#endif // _M_CEE int main() { // These values for is_always_lock_free are not required by the standard, but they are true for our implementation. diff --git a/tests/std/tests/P0768R1_spaceship_cpos/test.cpp b/tests/std/tests/P0768R1_spaceship_cpos/test.cpp index e275923196..b681f65a26 100644 --- a/tests/std/tests/P0768R1_spaceship_cpos/test.cpp +++ b/tests/std/tests/P0768R1_spaceship_cpos/test.cpp @@ -442,9 +442,11 @@ template constexpr void test_floating() { if constexpr (is_same_v) { const pair rank_value_pairs[]{ +#ifndef _M_CEE // TRANSITION, VSO-1666161 {10, bit_cast(0xFFFFFFFFu)}, // negative quiet NaN, all payload bits set {10, bit_cast(0xFFC01234u)}, // negative quiet NaN, some payload bits set {10, bit_cast(0xFFC00000u)}, // negative quiet NaN, no payload bits set +#endif // _M_CEE #ifdef __clang__ // TRANSITION, MSVC "quiets" signaling NaNs into quiet NaNs when constant evaluated {10, bit_cast(0xFFBFFFFFu)}, // negative signaling NaN, all payload bits set {10, bit_cast(0xFF801234u)}, // negative signaling NaN, some payload bits set @@ -467,9 +469,11 @@ constexpr void test_floating() { {90, bit_cast(0x7F801234u)}, // signaling NaN, some payload bits set {90, bit_cast(0x7FBFFFFFu)}, // signaling NaN, all payload bits set #endif // defined(__clang__) +#ifndef _M_CEE // TRANSITION, VSO-1666161 {90, bit_cast(0x7FC00000u)}, // quiet NaN, no payload bits set {90, bit_cast(0x7FC01234u)}, // quiet NaN, some payload bits set {90, bit_cast(0x7FFFFFFFu)}, // quiet NaN, all payload bits set +#endif // _M_CEE }; test_ranked_values(rank_value_pairs); diff --git a/tests/std/tests/P0811R3_midpoint_lerp/test.cpp b/tests/std/tests/P0811R3_midpoint_lerp/test.cpp index e519fc6964..6ee188526e 100644 --- a/tests/std/tests/P0811R3_midpoint_lerp/test.cpp +++ b/tests/std/tests/P0811R3_midpoint_lerp/test.cpp @@ -23,9 +23,6 @@ using namespace std; template using limits = numeric_limits; -// "major" floating point exceptions, excluding underflow and inexact -constexpr int fe_major_except = FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW; - #ifdef _M_FP_STRICT // According to: // https://docs.microsoft.com/en-us/cpp/build/reference/fp-specify-floating-point-behavior @@ -86,6 +83,12 @@ class ExceptGuard { fenv_t env; }; +constexpr int fe_invalid = FE_INVALID; +constexpr int fe_overflow = FE_OVERFLOW; + +// "major" floating point exceptions, excluding underflow and inexact +constexpr int fe_major_except = FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW; + bool check_feexcept(const int expected_excepts, const int except_mask = fe_major_except) { return fetestexcept(except_mask) == (expected_excepts & except_mask); } @@ -100,8 +103,11 @@ class ExceptGuard { ~ExceptGuard() {} }; -bool check_feexcept( - [[maybe_unused]] const int expected_excepts, [[maybe_unused]] const int except_mask = fe_major_except) { +// These values are ignored. (FE_INVALID and FE_OVERFLOW aren't available for /clr.) +constexpr int fe_invalid = 0; +constexpr int fe_overflow = 0; + +bool check_feexcept([[maybe_unused]] const int expected_excepts, [[maybe_unused]] const int except_mask = 0) { return true; } #endif // ^^^ !defined(_M_FP_STRICT) ^^^ @@ -508,11 +514,13 @@ void test_midpoint_floating() { assert(midpoint(limits::denorm_min(), limits::infinity()) == limits::infinity()); assert(midpoint(limits::denorm_min(), -limits::infinity()) == -limits::infinity()); +#ifndef _M_CEE // TRANSITION, VSO-1666178 assert_bitwise_equal(mint_nan(0, 1), midpoint(mint_nan(0, 1), Ty(0))); assert_bitwise_equal(mint_nan(0, 1), midpoint(Ty(0), mint_nan(0, 1))); assert_bitwise_equal(mint_nan(0, 1), midpoint(mint_nan(0, 1), limits::max())); assert_bitwise_equal(mint_nan(0, 1), midpoint(limits::max(), mint_nan(0, 1))); assert_bitwise_equal(mint_nan(0, 1), midpoint(mint_nan(0, 1), mint_nan(0, 1))); +#endif // _M_CEE assert(isnan(midpoint(limits::quiet_NaN(), Ty(2.0)))); assert(isnan(midpoint(Ty(2.0), limits::quiet_NaN()))); @@ -525,7 +533,7 @@ void test_midpoint_floating() { constexpr auto test_midpoint_fe_invalid = [](const Ty& a, const Ty& b) { ExceptGuard except; const auto answer = midpoint(a, b); - return check_feexcept(FE_INVALID) && isnan(answer); + return check_feexcept(fe_invalid) && isnan(answer); }; Ty snan; @@ -961,7 +969,7 @@ bool test_lerp() { for (auto&& testCase : LerpCases::lerpOverflowTestCases) { ExceptGuard except; const auto answer = lerp(testCase.x, testCase.y, testCase.t); - if (!check_feexcept(FE_OVERFLOW) || memcmp(&answer, &testCase.expected, sizeof(Ty)) != 0) { + if (!check_feexcept(fe_overflow) || memcmp(&answer, &testCase.expected, sizeof(Ty)) != 0) { print_lerp_result(testCase, answer); abort(); } @@ -970,7 +978,7 @@ bool test_lerp() { for (auto&& testCase : LerpCases::lerpInvalidTestCases) { ExceptGuard except; const auto answer = lerp(testCase.x, testCase.y, testCase.t); - if (!check_feexcept(FE_INVALID) || !isnan(answer)) { + if (!check_feexcept(fe_invalid) || !isnan(answer)) { print_lerp_result(testCase, answer); abort(); } @@ -991,7 +999,7 @@ bool test_lerp() { constexpr auto test_lerp_snan = [](const Ty& a, const Ty& b, const Ty& t) { ExceptGuard except; const auto answer = lerp(a, b, t); - return check_feexcept(FE_INVALID) && isnan(answer); + return check_feexcept(fe_invalid) && isnan(answer); }; Ty snan; diff --git a/tests/std/tests/P0896R4_counted_iterator_death/test.cpp b/tests/std/tests/P0896R4_counted_iterator_death/test.cpp index 436658e2a0..c8846a01b8 100644 --- a/tests/std/tests/P0896R4_counted_iterator_death/test.cpp +++ b/tests/std/tests/P0896R4_counted_iterator_death/test.cpp @@ -233,6 +233,7 @@ int main(int argc, char* argv[]) { test_case_operator_retreat_negative_after_end, test_case_operator_retreat_copy_before_begin, test_case_operator_retreat_copy_after_end, +#ifndef _M_CEE // TRANSITION, VSO-1665606 test_case_operator_subtract_incompatible_different_data, test_case_operator_subtract_incompatible_different_size, test_case_operator_subtract_incompatible_value_initialized, @@ -242,6 +243,7 @@ int main(int argc, char* argv[]) { test_case_operator_spaceship_incompatible_different_data, test_case_operator_spaceship_incompatible_different_size, test_case_operator_spaceship_incompatible_value_initialized, +#endif // _M_CEE }); #endif // _ITERATOR_DEBUG_LEVEL != 0 diff --git a/tests/std/tests/P0896R4_ranges_alg_move_backward/test.cpp b/tests/std/tests/P0896R4_ranges_alg_move_backward/test.cpp index 49fc09d7fd..3fe5776b20 100644 --- a/tests/std/tests/P0896R4_ranges_alg_move_backward/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_move_backward/test.cpp @@ -26,6 +26,12 @@ struct int_wrapper { auto operator<=>(const int_wrapper&) const = default; }; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ + // Validate that move_backward_result aliases in_out_result STATIC_ASSERT(same_as, ranges::in_out_result>); @@ -56,8 +62,8 @@ struct instantiator { move_backward(wrapped_input, wrapped_output.end()); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.begin()); - assert(equal(output, expected_output, ranges::equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, ranges::equal_to{}, &int_wrapper::val)); + assert(equal(output, expected_output, ranges::equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, ranges::equal_to{}, get_int_wrapper_val)); } { // Validate iterator + sentinel overload int_wrapper input[] = {13, 42, 1729}; @@ -68,8 +74,8 @@ struct instantiator { move_backward(wrapped_input.begin(), wrapped_input.end(), wrapped_output.end()); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.begin()); - assert(equal(output, expected_output, ranges::equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, ranges::equal_to{}, &int_wrapper::val)); + assert(equal(output, expected_output, ranges::equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, ranges::equal_to{}, get_int_wrapper_val)); } { // Validate overlapping ranges int_wrapper io[] = {0, 1, 2, 42}; @@ -79,7 +85,7 @@ struct instantiator { move_backward(wrapped_input, wrapped_output.end()); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.begin()); - assert(equal(io, expected_overlapping, ranges::equal_to{}, &int_wrapper::val)); + assert(equal(io, expected_overlapping, ranges::equal_to{}, get_int_wrapper_val)); } } } @@ -122,7 +128,11 @@ constexpr void test_memmove() { assert(result.in == io + 3); assert(result.out == io + 1); constexpr int expected[] = {0, 0, 1, 2}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 + assert(equal(io, expected, ranges::equal_to{}, [](const S& s) { return s.val; })); +#else // ^^^ workaround / no workaround vvv assert(equal(io, expected, ranges::equal_to{}, &S::val)); +#endif // ^^^ no workaround ^^^ } } diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_copy/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_copy/test.cpp index e68b871867..12f003058d 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_copy/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_copy/test.cpp @@ -77,15 +77,11 @@ struct int_wrapper { auto operator<=>(const int_wrapper&) const = default; }; -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ struct instantiator { static constexpr int expected_output[] = {13, 55, 12345}; @@ -111,8 +107,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -131,8 +127,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -151,8 +147,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(++result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input_long, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input_long, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -172,8 +168,8 @@ struct instantiator { assert(result.in == wrapped_input.end()); construct_at(addressof(*result.out), -1); // Need to construct non written element for comparison assert(++result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output_long, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output_long, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 4); assert(int_wrapper::destructions == 4); @@ -203,7 +199,7 @@ struct throwing_test { } assert(int_wrapper::constructions == 2); assert(int_wrapper::destructions == 2); - assert(ranges::equal(input, expected_input, ranges::equal_to{}, &int_wrapper::val)); + assert(ranges::equal(input, expected_input, ranges::equal_to{}, get_int_wrapper_val)); } }; diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_copy_n/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_copy_n/test.cpp index e679e48227..4b6c373038 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_copy_n/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_copy_n/test.cpp @@ -57,15 +57,11 @@ struct int_wrapper { auto operator<=>(const int_wrapper&) const = default; }; -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ struct instantiator { static constexpr int expected_output[] = {13, 55, 12345}; @@ -91,8 +87,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -111,8 +107,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(++result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input_long, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input_long, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -132,8 +128,8 @@ struct instantiator { assert(result.in == wrapped_input.end()); construct_at(addressof(*result.out), -1); // Need to construct non written element for comparison assert(++result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output_long, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output_long, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 4); assert(int_wrapper::destructions == 4); diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_default_construct/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_default_construct/test.cpp index 8c2139b6e7..20712b76db 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_default_construct/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_default_construct/test.cpp @@ -43,16 +43,6 @@ struct int_wrapper { }; STATIC_ASSERT(default_initializable); -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; - struct instantiator { template static void call() { diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_default_construct_n/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_default_construct_n/test.cpp index 041a52bdae..402afe094c 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_default_construct_n/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_default_construct_n/test.cpp @@ -39,16 +39,6 @@ struct int_wrapper { }; STATIC_ASSERT(default_initializable); -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; - struct instantiator { template static void call() { diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_fill/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_fill/test.cpp index 038afa507d..570f0ee045 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_fill/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_fill/test.cpp @@ -46,15 +46,11 @@ struct int_wrapper { }; STATIC_ASSERT(default_initializable); -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ struct instantiator { static constexpr int expected[3] = {42, 42, 42}; @@ -72,7 +68,7 @@ struct instantiator { assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 0); assert(result == wrapped_input.end()); - assert(equal(wrapped_input, expected, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_input, expected, equal_to{}, get_int_wrapper_val)); destroy(wrapped_input); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -88,7 +84,7 @@ struct instantiator { assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 0); assert(result == wrapped_input.end()); - assert(equal(wrapped_input, expected, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_input, expected, equal_to{}, get_int_wrapper_val)); destroy(wrapped_input); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_fill_n/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_fill_n/test.cpp index 26bb6dfbe5..cb24fe5b97 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_fill_n/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_fill_n/test.cpp @@ -42,15 +42,11 @@ struct int_wrapper { }; STATIC_ASSERT(default_initializable); -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ struct instantiator { static constexpr int expected[3] = {42, 42, 42}; @@ -68,7 +64,7 @@ struct instantiator { assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 0); assert(result == wrapped_input.end()); - assert(equal(wrapped_input, expected, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_input, expected, equal_to{}, get_int_wrapper_val)); destroy(wrapped_input); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_move/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_move/test.cpp index 1b6ed75fc4..5bb2e457f4 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_move/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_move/test.cpp @@ -67,15 +67,11 @@ struct int_wrapper { }; STATIC_ASSERT(movable && !copyable); -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ struct instantiator { static constexpr int expected_output[] = {13, 55, 12345}; @@ -101,8 +97,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -121,8 +117,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -141,8 +137,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(++result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input_long, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input_long, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -162,8 +158,8 @@ struct instantiator { assert(result.in == wrapped_input.end()); construct_at(addressof(*result.out), -1); // Need to construct non written element for comparison assert(++result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output_long, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output_long, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 4); assert(int_wrapper::destructions == 4); @@ -193,7 +189,7 @@ struct throwing_test { } assert(int_wrapper::constructions == 2); assert(int_wrapper::destructions == 2); - assert(ranges::equal(input, expected_input, ranges::equal_to{}, &int_wrapper::val)); + assert(ranges::equal(input, expected_input, ranges::equal_to{}, get_int_wrapper_val)); } }; diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_move_n/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_move_n/test.cpp index 8c1b2a9ede..5df1136cd6 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_move_n/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_move_n/test.cpp @@ -58,15 +58,11 @@ struct int_wrapper { }; STATIC_ASSERT(movable && !copyable); -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ struct instantiator { static constexpr int expected_output[] = {13, 55, 12345}; @@ -91,8 +87,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -111,8 +107,8 @@ struct instantiator { assert(int_wrapper::destructions == 0); assert(++result.in == wrapped_input.end()); assert(result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input_long, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input_long, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -132,8 +128,8 @@ struct instantiator { assert(result.in == wrapped_input.end()); construct_at(addressof(*result.out), -1); // Need to construct non written element for comparison assert(++result.out == wrapped_output.end()); - assert(equal(wrapped_output, expected_output_long, equal_to{}, &int_wrapper::val)); - assert(equal(input, expected_input, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_output, expected_output_long, equal_to{}, get_int_wrapper_val)); + assert(equal(input, expected_input, equal_to{}, get_int_wrapper_val)); destroy(wrapped_output); assert(int_wrapper::constructions == 4); assert(int_wrapper::destructions == 4); @@ -162,7 +158,7 @@ struct throwing_test { } assert(int_wrapper::constructions == 2); assert(int_wrapper::destructions == 2); - assert(ranges::equal(input, expected_input, ranges::equal_to{}, &int_wrapper::val)); + assert(ranges::equal(input, expected_input, ranges::equal_to{}, get_int_wrapper_val)); } }; diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_value_construct/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_value_construct/test.cpp index 4433c2b6f7..58d3288a34 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_value_construct/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_value_construct/test.cpp @@ -43,15 +43,11 @@ struct int_wrapper { }; STATIC_ASSERT(default_initializable); -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ struct instantiator { static constexpr int expected[3] = {10, 10, 10}; @@ -70,7 +66,7 @@ struct instantiator { assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 0); assert(result == wrapped_input.end()); - assert(equal(wrapped_input, expected, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_input, expected, equal_to{}, get_int_wrapper_val)); destroy(wrapped_input); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); @@ -86,7 +82,7 @@ struct instantiator { assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 0); assert(result == wrapped_input.end()); - assert(equal(wrapped_input, expected, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_input, expected, equal_to{}, get_int_wrapper_val)); destroy(wrapped_input); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); diff --git a/tests/std/tests/P0896R4_ranges_alg_uninitialized_value_construct_n/test.cpp b/tests/std/tests/P0896R4_ranges_alg_uninitialized_value_construct_n/test.cpp index 5858880772..bf1d80bc8f 100644 --- a/tests/std/tests/P0896R4_ranges_alg_uninitialized_value_construct_n/test.cpp +++ b/tests/std/tests/P0896R4_ranges_alg_uninitialized_value_construct_n/test.cpp @@ -39,15 +39,11 @@ struct int_wrapper { }; STATIC_ASSERT(default_initializable); -template -struct holder { - STATIC_ASSERT(N < ~size_t{0} / sizeof(T)); - alignas(T) unsigned char space[N * sizeof(T)]; - - auto as_span() { - return span{reinterpret_cast(space + 0), N}; - } -}; +#ifdef _M_CEE // TRANSITION, VSO-1664341 +constexpr auto get_int_wrapper_val = [](const int_wrapper& w) { return w.val; }; +#else // ^^^ workaround / no workaround vvv +constexpr auto get_int_wrapper_val = &int_wrapper::val; +#endif // ^^^ no workaround ^^^ struct instantiator { static constexpr int expected[3] = {10, 10, 10}; @@ -66,7 +62,7 @@ struct instantiator { assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 0); assert(result == wrapped_input.end()); - assert(equal(wrapped_input, expected, equal_to{}, &int_wrapper::val)); + assert(equal(wrapped_input, expected, equal_to{}, get_int_wrapper_val)); destroy(wrapped_input); assert(int_wrapper::constructions == 3); assert(int_wrapper::destructions == 3); diff --git a/tests/std/tests/P0896R4_ranges_algorithm_machinery/test.compile.pass.cpp b/tests/std/tests/P0896R4_ranges_algorithm_machinery/test.compile.pass.cpp index 520643c0ab..cfb9721a9c 100644 --- a/tests/std/tests/P0896R4_ranges_algorithm_machinery/test.compile.pass.cpp +++ b/tests/std/tests/P0896R4_ranges_algorithm_machinery/test.compile.pass.cpp @@ -11,6 +11,8 @@ #include #include +#pragma warning(disable : 4793) // function compiled as native: non-clrcall vcall thunks must be compiled as native + #define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) namespace ranges = std::ranges; @@ -823,35 +825,47 @@ namespace mergeable_test { { using Bad_I1 = readable_archetype; +#ifndef _M_CEE // TRANSITION, VSO-1665670 STATIC_ASSERT(!input_iterator); +#endif // _M_CEE STATIC_ASSERT(input_iterator); STATIC_ASSERT(weakly_incrementable); STATIC_ASSERT(indirectly_copyable); STATIC_ASSERT(indirectly_copyable); STATIC_ASSERT(indirect_strict_weak_order, projected>); +#ifndef _M_CEE // TRANSITION, VSO-1665670 STATIC_ASSERT(!mergeable); +#endif // _M_CEE } { using Bad_I2 = readable_archetype; STATIC_ASSERT(input_iterator); +#ifndef _M_CEE // TRANSITION, VSO-1665670 STATIC_ASSERT(!input_iterator); +#endif // _M_CEE STATIC_ASSERT(weakly_incrementable); STATIC_ASSERT(indirectly_copyable); STATIC_ASSERT(indirectly_copyable); STATIC_ASSERT(indirect_strict_weak_order, projected>); +#ifndef _M_CEE // TRANSITION, VSO-1665670 STATIC_ASSERT(!mergeable); +#endif // _M_CEE } { using Bad_O = writable_archetype; STATIC_ASSERT(input_iterator); STATIC_ASSERT(input_iterator); +#ifndef _M_CEE // TRANSITION, VSO-1665670 STATIC_ASSERT(!weakly_incrementable); +#endif // _M_CEE STATIC_ASSERT(indirectly_copyable); STATIC_ASSERT(indirectly_copyable); STATIC_ASSERT(indirect_strict_weak_order, projected>); +#ifndef _M_CEE // TRANSITION, VSO-1665670 STATIC_ASSERT(!mergeable); +#endif // _M_CEE } { diff --git a/tests/std/tests/P0896R4_ranges_iterator_machinery/test.cpp b/tests/std/tests/P0896R4_ranges_iterator_machinery/test.cpp index 974de15f0f..9f35a0d4db 100644 --- a/tests/std/tests/P0896R4_ranges_iterator_machinery/test.cpp +++ b/tests/std/tests/P0896R4_ranges_iterator_machinery/test.cpp @@ -1393,7 +1393,9 @@ namespace iterator_concept_winc_test { constexpr bool test(std::index_sequence) { STATIC_ASSERT( std::same_as, std::make_index_sequence>); +#ifndef _M_CEE // TRANSITION, VSO-1665674 STATIC_ASSERT((!weakly_incrementable> && ...)); +#endif // _M_CEE STATIC_ASSERT(weakly_incrementable>); return true; } @@ -1432,7 +1434,9 @@ namespace iterator_concept_iterator_test { template constexpr bool test(std::index_sequence) { STATIC_ASSERT(std::same_as, std::make_index_sequence>); +#ifndef _M_CEE // TRANSITION, VSO-1665674 STATIC_ASSERT((!input_or_output_iterator> && ...)); +#endif // _M_CEE STATIC_ASSERT(input_or_output_iterator>); return true; } @@ -1462,8 +1466,10 @@ namespace iterator_concept_sentinel_test { template constexpr bool test_one_pair() { +#ifndef _M_CEE // TRANSITION, VSO-1665674 constexpr bool expected = I >= sentinel_archetype_max && J >= iterator_archetype_max; STATIC_ASSERT(sentinel_for, iterator_archetype> == expected); +#endif // _M_CEE return true; } @@ -1490,8 +1496,10 @@ namespace iterator_concept_sizedsentinel_test { template constexpr bool test_one_pair() { +#ifndef _M_CEE // TRANSITION, VSO-1665674 constexpr bool expected = I >= sized_sentinel_archetype_max && J >= iterator_archetype_max; STATIC_ASSERT(sized_sentinel_for, iterator_archetype> == expected); +#endif // _M_CEE return true; } @@ -1517,7 +1525,9 @@ namespace iterator_concept_input_test { template constexpr bool test(std::index_sequence) { STATIC_ASSERT(std::same_as, std::make_index_sequence>); +#ifndef _M_CEE // TRANSITION, VSO-1665674 STATIC_ASSERT((!input_iterator> && ...)); +#endif // _M_CEE STATIC_ASSERT(input_iterator>); return true; } @@ -1540,10 +1550,12 @@ namespace iterator_concept_output_test { constexpr bool test(std::index_sequence) { STATIC_ASSERT( std::same_as, std::make_index_sequence>); +#ifndef _M_CEE // TRANSITION, VSO-1665674 STATIC_ASSERT((!output_iterator, int> && ...)); STATIC_ASSERT((!output_iterator, int const> && ...)); STATIC_ASSERT((!output_iterator, int&> && ...)); STATIC_ASSERT((!output_iterator, int const&> && ...)); +#endif // _M_CEE STATIC_ASSERT(output_iterator, int>); STATIC_ASSERT(output_iterator, int const>); STATIC_ASSERT(output_iterator, int&>); @@ -1741,7 +1753,9 @@ namespace unreachable_sentinel_test { STATIC_ASSERT(42 != unreachable_sentinel); STATIC_ASSERT(noexcept(42 != unreachable_sentinel)); +#ifndef _M_CEE // TRANSITION, VSO-1665674 STATIC_ASSERT((!Comparable> && ...)); +#endif // _M_CEE STATIC_ASSERT(Comparable>); return true; diff --git a/tests/std/tests/P0896R4_views_drop/test.cpp b/tests/std/tests/P0896R4_views_drop/test.cpp index 56ab4fe217..f1c6be74a8 100644 --- a/tests/std/tests/P0896R4_views_drop/test.cpp +++ b/tests/std/tests/P0896R4_views_drop/test.cpp @@ -510,6 +510,7 @@ int main() { STATIC_ASSERT((instantiation_test(), true)); instantiation_test(); +#ifndef _M_CEE // TRANSITION, VSO-1666180 { // Validate a view borrowed range constexpr auto v = @@ -517,6 +518,7 @@ int main() { STATIC_ASSERT(test_one(v, only_four_ints)); test_one(v, only_four_ints); } +#endif // _M_CEE { // Validate that we can use something that is convertible to integral (GH-1957) constexpr span s{some_ints}; diff --git a/tests/std/tests/P0896R4_views_elements/test.cpp b/tests/std/tests/P0896R4_views_elements/test.cpp index 13cfd0716c..e7c6cf04df 100644 --- a/tests/std/tests/P0896R4_views_elements/test.cpp +++ b/tests/std/tests/P0896R4_views_elements/test.cpp @@ -394,10 +394,12 @@ int main() { instantiation_test(); } +#ifndef _M_CEE // TRANSITION, VSO-1666180 { // Validate a view borrowed range constexpr auto v = views::iota(0ull, ranges::size(expected_keys)) | views::transform([](auto i) { return make_pair(expected_keys[i], expected_values[i]); }); STATIC_ASSERT(test_one(v)); test_one(v); } +#endif // _M_CEE } diff --git a/tests/std/tests/P0896R4_views_take/test.cpp b/tests/std/tests/P0896R4_views_take/test.cpp index 9998ecfe9a..abb90762af 100644 --- a/tests/std/tests/P0896R4_views_take/test.cpp +++ b/tests/std/tests/P0896R4_views_take/test.cpp @@ -556,6 +556,7 @@ int main() { STATIC_ASSERT((instantiation_test(), true)); instantiation_test(); +#ifndef _M_CEE // TRANSITION, VSO-1666180 { // Validate a view borrowed range constexpr auto v = @@ -563,6 +564,7 @@ int main() { STATIC_ASSERT(test_one(v, only_four_ints)); test_one(v, only_four_ints); } +#endif // _M_CEE { // Validate that we can use something that is convertible to integral (GH-1957) constexpr span s{some_ints}; diff --git a/tests/std/tests/P0898R3_concepts/test.cpp b/tests/std/tests/P0898R3_concepts/test.cpp index 5aeea6ffd2..3344e691e6 100644 --- a/tests/std/tests/P0898R3_concepts/test.cpp +++ b/tests/std/tests/P0898R3_concepts/test.cpp @@ -2866,10 +2866,12 @@ namespace test_invocable_concepts { #define MCALLCONV __cdecl #include "invocable_cc.hpp" +#ifndef _M_CEE // avoid warning C4561: '__fastcall' incompatible with the '/clr' option: converting to '__stdcall' #define NAME test_fast_fast #define CALLCONV __fastcall #define MCALLCONV __fastcall #include "invocable_cc.hpp" +#endif // _M_CEE #define NAME test_std_std #define CALLCONV __stdcall @@ -2881,12 +2883,14 @@ namespace test_invocable_concepts { #define MCALLCONV __thiscall #include "invocable_cc.hpp" +#ifndef _M_CEE // avoid warning C4575: '__vectorcall' incompatible with the '/clr' option: converting to '__stdcall' #if !defined(_M_ARM) && !defined(_M_ARM64) #define NAME test_vector_vector #define CALLCONV __vectorcall #define MCALLCONV __vectorcall #include "invocable_cc.hpp" #endif // ^^^ !ARM && !ARM64 ^^^ +#endif // _M_CEE } // namespace test_invocable_concepts diff --git a/tests/std/tests/P0912R5_coroutine/env.lst b/tests/std/tests/P0912R5_coroutine/env.lst index 79bd2bf7d0..bee9d37c45 100644 --- a/tests/std/tests/P0912R5_coroutine/env.lst +++ b/tests/std/tests/P0912R5_coroutine/env.lst @@ -19,6 +19,9 @@ PM_CL="/EHsc /MD /std:c++latest /permissive" PM_CL="/EHsc /MD /std:c++latest /permissive-" PM_CL="/EHsc /MTd /std:c++latest /permissive- /Zc:preprocessor" PM_CL="/EHsc /MD /std:c++latest /permissive- /analyze:only /analyze:autolog-" +# TRANSITION, VSO-1663233 +# PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +# PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" PM_CL="/BE /c /EHsc /MD /std:c++20 /permissive-" PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++20 /permissive-" diff --git a/tests/std/tests/P1135R6_atomic_flag_test/test.cpp b/tests/std/tests/P1135R6_atomic_flag_test/test.cpp index f82dbed310..47d0604e1a 100644 --- a/tests/std/tests/P1135R6_atomic_flag_test/test.cpp +++ b/tests/std/tests/P1135R6_atomic_flag_test/test.cpp @@ -82,6 +82,8 @@ void test_flag_type() { } int main() { +#ifndef _M_CEE // TRANSITION, VSO-1659408 test_flag_type(); test_flag_type(); +#endif // _M_CEE } diff --git a/tests/std/tests/P1208R6_source_location/test.cpp b/tests/std/tests/P1208R6_source_location/test.cpp index 23bae2090a..a83e34ffc9 100644 --- a/tests/std/tests/P1208R6_source_location/test.cpp +++ b/tests/std/tests/P1208R6_source_location/test.cpp @@ -104,7 +104,9 @@ constexpr void lambda_test() { const auto l = [loc = source_location::current()] { return loc; }; const auto x = l(); assert(x.line() == __LINE__ - 2); +#ifndef _M_CEE // TRANSITION, VSO-1665663 assert(x.column() == 51); +#endif // _M_CEE assert(x.function_name() == "lambda_test"sv); assert(string_view{x.file_name()}.ends_with(test_cpp)); } diff --git a/tests/std/tests/P1522R1_difference_type/test.cpp b/tests/std/tests/P1522R1_difference_type/test.cpp index ff8478143f..0a84190396 100644 --- a/tests/std/tests/P1522R1_difference_type/test.cpp +++ b/tests/std/tests/P1522R1_difference_type/test.cpp @@ -1174,7 +1174,7 @@ constexpr bool test_cross() { x = -26; TEST(u *= 2, x); y = 12; -#ifdef _M_CEE // TRANSITION, silent bad codegen, not yet reported +#ifdef _M_CEE // TRANSITION, VSO-1658184 (/clr silent bad codegen) i = 12; #else // ^^^ workaround / no workaround vvv TEST(i *= -2, y); diff --git a/tests/std/tests/VSO_0000000_condition_variable_any_exceptions/env.lst b/tests/std/tests/VSO_0000000_condition_variable_any_exceptions/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/VSO_0000000_condition_variable_any_exceptions/env.lst +++ b/tests/std/tests/VSO_0000000_condition_variable_any_exceptions/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/VSO_0000000_instantiate_iterators_misc/test.compile.pass.cpp b/tests/std/tests/VSO_0000000_instantiate_iterators_misc/test.compile.pass.cpp index 6a0e87e6a6..813bfe1eca 100644 --- a/tests/std/tests/VSO_0000000_instantiate_iterators_misc/test.compile.pass.cpp +++ b/tests/std/tests/VSO_0000000_instantiate_iterators_misc/test.compile.pass.cpp @@ -93,16 +93,12 @@ // Headers not allowed with /clr:pure #ifndef _M_CEE_PURE #include -#endif // _M_CEE_PURE - -// Headers not allowed to be used with /clr -#ifndef _M_CEE #include #include #include #include #include -#endif // _M_CEE +#endif // _M_CEE_PURE #include @@ -296,7 +292,7 @@ void chrono_test() { (void) (ceil>(time_pt)); } -#ifndef _M_CEE +#ifndef _M_CEE_PURE template void condition_variable_test_impl() { ConditionVariable cv{}; @@ -316,7 +312,7 @@ void condition_variable_test_impl() { void condition_variable_test() { condition_variable_test_impl(); } -#endif // _M_CEE +#endif // _M_CEE_PURE void check_nested_exception_impl(const exception& ex) { // unroll nested exceptions try { @@ -520,7 +516,7 @@ void functional_test() { // volatile binder calls not supported } -#ifndef _M_CEE +#ifndef _M_CEE_PURE template void future_test_impl(Future& f) { using namespace chrono; @@ -575,7 +571,7 @@ void future_test() { TRAIT_V(uses_allocator, packaged_task, allocator); #endif // _HAS_FUNCTION_ALLOCATOR_SUPPORT } -#endif // _M_CEE +#endif // _M_CEE_PURE template void iomanip_test_impl(IoManipIn in, IoManipOut out) { @@ -972,7 +968,7 @@ void memory_test() { owner_less_test_impl(owner_less{}, sptr, wptr); } -#ifndef _M_CEE +#ifndef _M_CEE_PURE template void timed_mutex_test_impl() { Mutex mtx{}; @@ -1002,7 +998,7 @@ void mutex_test() { timed_mutex_test_impl(); timed_mutex_test_impl(); } -#endif // _M_CEE +#endif // _M_CEE_PURE void ostream_test() { stringstream ss{}; @@ -1404,7 +1400,7 @@ void scoped_allocator_test() { equality_test(saa1, saa7); } -#ifndef _M_CEE +#ifndef _M_CEE_PURE void shared_mutex_test() { using namespace chrono; @@ -1421,7 +1417,7 @@ void shared_mutex_test() { (void) sl2.try_lock_until(system_clock::now()); swap_test(sl1); } -#endif // _M_CEE +#endif // _M_CEE_PURE template void sstream_test_impl() { @@ -1452,7 +1448,7 @@ void streambuf_test() { // istreambuf_iterator and ostreambuf_iterator covered in iterators test } -#ifndef _M_CEE +#ifndef _M_CEE_PURE void thread_test() { using namespace chrono; @@ -1466,7 +1462,7 @@ void thread_test() { cout << thr_id; hash_test(thr_id); } -#endif // _M_CEE +#endif // _M_CEE_PURE void tuple_test() { allocator my_alloc{}; diff --git a/tests/std/tests/VSO_0000000_more_pair_tuple_sfinae/test.cpp b/tests/std/tests/VSO_0000000_more_pair_tuple_sfinae/test.cpp index 2f52432beb..0674239e15 100644 --- a/tests/std/tests/VSO_0000000_more_pair_tuple_sfinae/test.cpp +++ b/tests/std/tests/VSO_0000000_more_pair_tuple_sfinae/test.cpp @@ -3,9 +3,9 @@ #include #include -#ifndef _M_CEE +#ifndef _M_CEE_PURE #include -#endif // _M_CEE +#endif // _M_CEE_PURE #include #include #include @@ -70,11 +70,11 @@ STATIC_ASSERT(ExplicitDC); STATIC_ASSERT(ExplicitDC); STATIC_ASSERT(ExplicitDC); STATIC_ASSERT(ExplicitDC); -#ifndef _M_CEE +#ifndef _M_CEE_PURE STATIC_ASSERT(ExplicitDC); STATIC_ASSERT(ExplicitDC); STATIC_ASSERT(ExplicitDC); -#endif // _M_CEE +#endif // _M_CEE_PURE using Expl = ExplicitDefault; using NOPE = NoDefault; diff --git a/tests/std/tests/VSO_0144114_sleep_until/env.lst b/tests/std/tests/VSO_0144114_sleep_until/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/VSO_0144114_sleep_until/env.lst +++ b/tests/std/tests/VSO_0144114_sleep_until/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/VSO_0157762_feature_test_macros/env.lst b/tests/std/tests/VSO_0157762_feature_test_macros/env.lst index 87535f05c2..ecc336491a 100644 --- a/tests/std/tests/VSO_0157762_feature_test_macros/env.lst +++ b/tests/std/tests/VSO_0157762_feature_test_macros/env.lst @@ -22,8 +22,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/clr /MD /std:c++17" -PM_CL="/clr /MDd /std:c++17" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" PM_CL="/clr:pure /MD /std:c++14" PM_CL="/clr:pure /MDd /std:c++14" PM_CL="/BE /c /EHsc /MD /std:c++14" diff --git a/tests/std/tests/VSO_0157762_feature_test_macros/test.compile.pass.cpp b/tests/std/tests/VSO_0157762_feature_test_macros/test.compile.pass.cpp index 674bda681d..8c20424224 100644 --- a/tests/std/tests/VSO_0157762_feature_test_macros/test.compile.pass.cpp +++ b/tests/std/tests/VSO_0157762_feature_test_macros/test.compile.pass.cpp @@ -704,7 +704,7 @@ STATIC_ASSERT(__cpp_lib_containers_ranges == 202202L); #endif #endif -#ifdef __cpp_impl_coroutine +#if defined(__cpp_impl_coroutine) && !defined(_M_CEE) // TRANSITION, VSO-1663233 #ifndef __cpp_lib_coroutine #error __cpp_lib_coroutine is not defined #elif __cpp_lib_coroutine != 201902L @@ -776,7 +776,7 @@ STATIC_ASSERT(__cpp_lib_erase_if == 202002L); STATIC_ASSERT(__cpp_lib_exchange_function == 201304L); #endif -#if _HAS_CXX20 && !defined(_M_CEE) +#if _HAS_CXX20 && !defined(_M_CEE_PURE) #ifndef __cpp_lib_execution #error __cpp_lib_execution is not defined #elif __cpp_lib_execution != 201902L @@ -784,7 +784,7 @@ STATIC_ASSERT(__cpp_lib_exchange_function == 201304L); #else STATIC_ASSERT(__cpp_lib_execution == 201902L); #endif -#elif _HAS_CXX17 && !defined(_M_CEE) +#elif _HAS_CXX17 && !defined(_M_CEE_PURE) #ifndef __cpp_lib_execution #error __cpp_lib_execution is not defined #elif __cpp_lib_execution != 201603L @@ -1446,7 +1446,7 @@ STATIC_ASSERT(__cpp_lib_out_ptr == 202106L); #endif #endif -#if _HAS_CXX17 && !defined(_M_CEE) +#if _HAS_CXX17 && !defined(_M_CEE_PURE) #ifndef __cpp_lib_parallel_algorithm #error __cpp_lib_parallel_algorithm is not defined #elif __cpp_lib_parallel_algorithm != 201603L @@ -1782,7 +1782,7 @@ STATIC_ASSERT(__cpp_lib_shared_ptr_weak_type == 201606L); #endif #endif -#ifdef _M_CEE +#ifdef _M_CEE_PURE #ifdef __cpp_lib_shared_timed_mutex #error __cpp_lib_shared_timed_mutex is defined #endif diff --git a/tests/std/tests/VSO_0226079_mutex/env.lst b/tests/std/tests/VSO_0226079_mutex/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/VSO_0226079_mutex/env.lst +++ b/tests/std/tests/VSO_0226079_mutex/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/VSO_0512710_terminate_current_exception_from_noexcept_function/env.lst b/tests/std/tests/VSO_0512710_terminate_current_exception_from_noexcept_function/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/VSO_0512710_terminate_current_exception_from_noexcept_function/env.lst +++ b/tests/std/tests/VSO_0512710_terminate_current_exception_from_noexcept_function/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/VSO_0512710_terminate_current_exception_from_noexcept_function_2/env.lst b/tests/std/tests/VSO_0512710_terminate_current_exception_from_noexcept_function_2/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/VSO_0512710_terminate_current_exception_from_noexcept_function_2/env.lst +++ b/tests/std/tests/VSO_0512710_terminate_current_exception_from_noexcept_function_2/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/VSO_0512710_terminate_current_exception_from_unwind/env.lst b/tests/std/tests/VSO_0512710_terminate_current_exception_from_unwind/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/VSO_0512710_terminate_current_exception_from_unwind/env.lst +++ b/tests/std/tests/VSO_0512710_terminate_current_exception_from_unwind/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/VSO_0744055_atomic_load_8_bytes_readonly/env.lst b/tests/std/tests/VSO_0744055_atomic_load_8_bytes_readonly/env.lst index e970fe46ae..f141421b29 100644 --- a/tests/std/tests/VSO_0744055_atomic_load_8_bytes_readonly/env.lst +++ b/tests/std/tests/VSO_0744055_atomic_load_8_bytes_readonly/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\native_matrix.lst +RUNALL_INCLUDE ..\impure_matrix.lst diff --git a/tests/std/tests/char8_t_17_matrix.lst b/tests/std/tests/char8_t_17_matrix.lst index 7baa882d0d..95b7ee931f 100644 --- a/tests/std/tests/char8_t_17_matrix.lst +++ b/tests/std/tests/char8_t_17_matrix.lst @@ -25,8 +25,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/clr /MD /std:c++17" -PM_CL="/clr /MDd /std:c++17" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" diff --git a/tests/std/tests/char8_t_impure_matrix.lst b/tests/std/tests/char8_t_impure_matrix.lst index 451d256e7e..33d0825c94 100644 --- a/tests/std/tests/char8_t_impure_matrix.lst +++ b/tests/std/tests/char8_t_impure_matrix.lst @@ -27,8 +27,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/clr /MD /std:c++17" -PM_CL="/clr /MDd /std:c++17" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" PM_CL="/BE /c /EHsc /MD /std:c++14" PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" diff --git a/tests/std/tests/char8_t_matrix.lst b/tests/std/tests/char8_t_matrix.lst index 2171c31e5e..5c9cb3a771 100644 --- a/tests/std/tests/char8_t_matrix.lst +++ b/tests/std/tests/char8_t_matrix.lst @@ -24,8 +24,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MD /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" PM_CL="/clr:pure /MD /std:c++14" PM_CL="/clr:pure /MDd /std:c++14" PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" diff --git a/tests/std/tests/clr_matrix.lst b/tests/std/tests/clr_matrix.lst index 5562abccb7..9e5668a6fe 100644 --- a/tests/std/tests/clr_matrix.lst +++ b/tests/std/tests/clr_matrix.lst @@ -5,5 +5,5 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -PM_CL="/clr /MD /std:c++17" -PM_CL="/clr /MDd /std:c++17" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" diff --git a/tests/std/tests/concepts_20_matrix.lst b/tests/std/tests/concepts_20_matrix.lst index c4ad11e571..ec7d7229b9 100644 --- a/tests/std/tests/concepts_20_matrix.lst +++ b/tests/std/tests/concepts_20_matrix.lst @@ -6,22 +6,24 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -PM_CL="/w14640 /Zc:threadSafeInit- /EHsc" +PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -# PM_CL="/std:c++20 /permissive- /BE /c /MD" -# PM_CL="/std:c++latest /permissive- /BE /c /MTd" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++20 /permissive- /MD" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++latest /permissive- /MTd /fp:strict" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" +# PM_CL="/std:c++20 /permissive- /BE /c /EHsc /MD" +# PM_CL="/std:c++latest /permissive- /BE /c /EHsc /MTd" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" diff --git a/tests/std/tests/impure_matrix.lst b/tests/std/tests/impure_matrix.lst index c6ef78d0eb..3c745541a2 100644 --- a/tests/std/tests/impure_matrix.lst +++ b/tests/std/tests/impure_matrix.lst @@ -25,8 +25,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/clr /MD /std:c++17" -PM_CL="/clr /MDd /std:c++17" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" PM_CL="/BE /c /EHsc /MD /std:c++14" PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" diff --git a/tests/std/tests/locale0_implib_cpp_matrix.lst b/tests/std/tests/locale0_implib_cpp_matrix.lst index 1f7116af9d..72ce91b045 100644 --- a/tests/std/tests/locale0_implib_cpp_matrix.lst +++ b/tests/std/tests/locale0_implib_cpp_matrix.lst @@ -20,13 +20,13 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MD /J /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MDd /J /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /J /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /J /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" PM_CL="/clr:pure /MD /std:c++14" PM_CL="/clr:pure /MDd /std:c++14" PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" diff --git a/tests/std/tests/native_17_matrix.lst b/tests/std/tests/native_17_matrix.lst deleted file mode 100644 index 1e99386f2c..0000000000 --- a/tests/std/tests/native_17_matrix.lst +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - -RUNALL_INCLUDE .\prefix.lst -RUNALL_CROSSLIST -PM_CL="/w14640 /Zc:threadSafeInit-" -RUNALL_CROSSLIST -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:noexceptTypes-" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /fp:except" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /Zc:preprocessor" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /Zc:preprocessor" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" -PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" -PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++17" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++20 /permissive- /fp:strict" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive-" diff --git a/tests/std/tests/native_matrix.lst b/tests/std/tests/native_matrix.lst deleted file mode 100644 index 1d8993732a..0000000000 --- a/tests/std/tests/native_matrix.lst +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - -RUNALL_INCLUDE .\prefix.lst -RUNALL_CROSSLIST -PM_CL="/w14640 /Zc:threadSafeInit-" -RUNALL_CROSSLIST -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /Zc:noexceptTypes-" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t- /Zc:preprocessor" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t-" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /Zc:preprocessor" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive-" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/BE /c /EHsc /MD /std:c++14" -PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" -PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MD /std:c++14" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MDd /std:c++17" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MT /std:c++20" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /MTd /std:c++latest /permissive- /fp:strict" diff --git a/tests/std/tests/strict_concepts_20_matrix.lst b/tests/std/tests/strict_concepts_20_matrix.lst index 3ddc473e07..6649467930 100644 --- a/tests/std/tests/strict_concepts_20_matrix.lst +++ b/tests/std/tests/strict_concepts_20_matrix.lst @@ -5,22 +5,24 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /permissive-" +PM_CL="/w14640 /Zc:threadSafeInit- /permissive-" RUNALL_CROSSLIST -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /Zc:noexceptTypes-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t- /Zc:preprocessor" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /fp:except /Zc:preprocessor" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only /analyze:autolog-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only /analyze:autolog-" -# PM_CL="/std:c++20 /BE /c /MD" -# PM_CL="/std:c++latest /BE /c /MTd" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++20 /MD" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++latest /MTd /fp:strict" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only /analyze:autolog-" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" +# PM_CL="/std:c++20 /BE /c /EHsc /MD" +# PM_CL="/std:c++latest /BE /c /EHsc /MTd" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /MTd /fp:strict" diff --git a/tests/std/tests/usual_17_matrix.lst b/tests/std/tests/usual_17_matrix.lst index 62a74dd2a8..6828a04e29 100644 --- a/tests/std/tests/usual_17_matrix.lst +++ b/tests/std/tests/usual_17_matrix.lst @@ -24,8 +24,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/clr /MD /std:c++17" -PM_CL="/clr /MDd /std:c++17" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" PM_CL="/BE /c /EHsc /MD /std:c++latest /permissive-" PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" PM_CL="/BE /c /EHsc /MT /std:c++20 /permissive-" diff --git a/tests/std/tests/usual_20_matrix.lst b/tests/std/tests/usual_20_matrix.lst index 00f7e75118..7e03110069 100644 --- a/tests/std/tests/usual_20_matrix.lst +++ b/tests/std/tests/usual_20_matrix.lst @@ -3,22 +3,24 @@ RUNALL_INCLUDE .\prefix.lst RUNALL_CROSSLIST -PM_CL="/w14640 /Zc:threadSafeInit- /EHsc" +PM_CL="/w14640 /Zc:threadSafeInit-" RUNALL_CROSSLIST -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t- /Zc:preprocessor" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" -PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/BE /c /MD /std:c++20 /permissive-" -PM_CL="/BE /c /MTd /std:c++latest /permissive-" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++20 /permissive- /MD" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /std:c++latest /permissive- /MTd /fp:strict" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++20 /permissive- /Zc:noexceptTypes-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:char8_t-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /Zc:wchar_t- /Zc:preprocessor" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++20 /permissive- /fp:except /Zc:preprocessor" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:strict" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" +PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" +PM_CL="/BE /c /EHsc /MD /std:c++20 /permissive-" +PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++20 /permissive- /MD" +PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call /EHsc /std:c++latest /permissive- /MTd /fp:strict" diff --git a/tests/std/tests/usual_matrix.lst b/tests/std/tests/usual_matrix.lst index 7fc105215c..689b83d470 100644 --- a/tests/std/tests/usual_matrix.lst +++ b/tests/std/tests/usual_matrix.lst @@ -24,8 +24,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /fp:stri PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MD /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" PM_CL="/clr:pure /MD /std:c++14" PM_CL="/clr:pure /MDd /std:c++14" PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" diff --git a/tests/tr1/env.lst b/tests/tr1/env.lst index 960f31b74f..164e32ef6d 100644 --- a/tests/tr1/env.lst +++ b/tests/tr1/env.lst @@ -19,8 +19,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/clr /MD /std:c++17" -PM_CL="/clr /MDd /std:c++17" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" PM_CL="/clr:pure /MD /std:c++14" PM_CL="/clr:pure /MDd /std:c++14" PM_CL="/BE /c /EHsc /MD /std:c++14" diff --git a/tests/tr1/env_minus_md_idl.lst b/tests/tr1/env_minus_md_idl.lst index e23a7b03bc..2f217abb1b 100644 --- a/tests/tr1/env_minus_md_idl.lst +++ b/tests/tr1/env_minus_md_idl.lst @@ -16,8 +16,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /w14640 PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive /w14640 /Zc:threadSafeInit-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog- /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MD /std:c++17 /w14640 /Zc:threadSafeInit-" -PM_CL="/clr /MDd /std:c++17 /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd /w14640 /Zc:threadSafeInit-" PM_CL="/clr:pure /MD /std:c++14" PM_CL="/clr:pure /MDd /std:c++14" PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-" diff --git a/tests/tr1/env_minus_pure.lst b/tests/tr1/env_minus_pure.lst index 844b85277f..faac16a6d3 100644 --- a/tests/tr1/env_minus_pure.lst +++ b/tests/tr1/env_minus_pure.lst @@ -19,8 +19,8 @@ PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/clr /MD /std:c++17" -PM_CL="/clr /MDd /std:c++17" +PM_CL="/clr /MD /std:c++20 /d1clrcxxstd" +PM_CL="/clr /MDd /std:c++20 /d1clrcxxstd" PM_CL="/BE /c /EHsc /MD /std:c++14" PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" diff --git a/tests/tr1/env_threads.lst b/tests/tr1/env_threads.lst deleted file mode 100644 index 26827847fa..0000000000 --- a/tests/tr1/env_threads.lst +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - -RUNALL_INCLUDE .\prefix.lst -RUNALL_CROSSLIST -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17" -PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14" -PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /permissive-" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive" -PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /analyze:only /analyze:autolog-" -PM_CL="/BE /c /EHsc /MD /std:c++14" -PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-" -PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Xclang -Wno-deprecated-declarations -Xclang -Wno-self-assign /EHsc /MD /std:c++14" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Xclang -Wno-deprecated-declarations -Xclang -Wno-self-assign /EHsc /MDd /std:c++17" -PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Wno-unqualified-std-cast-call -Xclang -Wno-deprecated-declarations -Xclang -Wno-self-assign /EHsc /MTd /std:c++latest /permissive-" diff --git a/tests/tr1/tests/chrono/env.lst b/tests/tr1/tests/chrono/env.lst index d3c3c9bb88..d74a62344c 100644 --- a/tests/tr1/tests/chrono/env.lst +++ b/tests/tr1/tests/chrono/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\..\env_threads.lst +RUNALL_INCLUDE ..\..\env_minus_pure.lst diff --git a/tests/tr1/tests/future/env.lst b/tests/tr1/tests/future/env.lst index d3c3c9bb88..d74a62344c 100644 --- a/tests/tr1/tests/future/env.lst +++ b/tests/tr1/tests/future/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\..\env_threads.lst +RUNALL_INCLUDE ..\..\env_minus_pure.lst diff --git a/tests/tr1/tests/future1/env.lst b/tests/tr1/tests/future1/env.lst index d3c3c9bb88..d74a62344c 100644 --- a/tests/tr1/tests/future1/env.lst +++ b/tests/tr1/tests/future1/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\..\env_threads.lst +RUNALL_INCLUDE ..\..\env_minus_pure.lst diff --git a/tests/tr1/tests/memory2/env.lst b/tests/tr1/tests/memory2/env.lst index d3c3c9bb88..d74a62344c 100644 --- a/tests/tr1/tests/memory2/env.lst +++ b/tests/tr1/tests/memory2/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\..\env_threads.lst +RUNALL_INCLUDE ..\..\env_minus_pure.lst diff --git a/tests/tr1/tests/ratio/env.lst b/tests/tr1/tests/ratio/env.lst index d3c3c9bb88..d74a62344c 100644 --- a/tests/tr1/tests/ratio/env.lst +++ b/tests/tr1/tests/ratio/env.lst @@ -1,4 +1,4 @@ # Copyright (c) Microsoft Corporation. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -RUNALL_INCLUDE ..\..\env_threads.lst +RUNALL_INCLUDE ..\..\env_minus_pure.lst