зеркало из https://github.com/microsoft/STL.git
Massively improve the performance of <system_error> and remove constexpr workarounds. (#529)
* Removes VSO-406237 "C1XX does not do constant initialization where the standard requires" workarounds. * Introduce `_Immortalize_memcpy_image` which avoids the need for synchronization when constructing the error categories. See the big comment block for explanation of how we got here. For compilers which let us declare instances with the empty virtual destructor as constexpr variables (currently only clang in C++20 mode), we can avoid the workaround. * Turn on `/Zc:threadSafeInit-` and warning 4640 in most tests to ensure we aren't emitting thread-local initializers in `<system_error>`. * Move `_Immortalizer` and friends to the one remaining caller in the `exception_ptr` implementation. * Remove `_Generic_error_category` from the base class hierarchies of error categories to workaround DevCom-928781.
This commit is contained in:
Родитель
b190cb5586
Коммит
d4ee5c3fb4
|
@ -1 +1 @@
|
||||||
Subproject commit 47282b1b4bf3e18d2e2166b87159115ed520a2aa
|
Subproject commit e48849a2404128175df25168f961a83d6c0a901e
|
|
@ -152,12 +152,9 @@ private:
|
||||||
error_code _Mycode; // the stored error code
|
error_code _Mycode; // the stored error code
|
||||||
};
|
};
|
||||||
|
|
||||||
// CLASS _Future_error_category
|
class _Future_error_category2 : public error_category { // categorize a future error
|
||||||
class _Future_error_category : public _Generic_error_category { // categorize a future error
|
|
||||||
public:
|
public:
|
||||||
_Future_error_category() {
|
constexpr _Future_error_category2() noexcept : error_category(_Future_addr) {}
|
||||||
_Addr = _Future_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual const char* name() const noexcept override {
|
virtual const char* name() const noexcept override {
|
||||||
return "future";
|
return "future";
|
||||||
|
@ -169,12 +166,12 @@ public:
|
||||||
return _Name;
|
return _Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _Generic_error_category::message(_Errcode);
|
return _Syserror_map(_Errcode);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
_NODISCARD inline const error_category& future_category() noexcept {
|
_NODISCARD inline const error_category& future_category() noexcept {
|
||||||
return _Immortalize<_Future_error_category>();
|
return _Immortalize_memcpy_image<_Future_error_category2>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// STRUCT TEMPLATE _State_deleter
|
// STRUCT TEMPLATE _State_deleter
|
||||||
|
|
|
@ -1011,7 +1011,7 @@ public:
|
||||||
using weak_type = weak_ptr<_Ty>;
|
using weak_type = weak_ptr<_Ty>;
|
||||||
#endif // _HAS_CXX17
|
#endif // _HAS_CXX17
|
||||||
|
|
||||||
constexpr shared_ptr() noexcept {} // construct empty shared_ptr
|
constexpr shared_ptr() noexcept = default;
|
||||||
|
|
||||||
constexpr shared_ptr(nullptr_t) noexcept {} // construct empty shared_ptr
|
constexpr shared_ptr(nullptr_t) noexcept {} // construct empty shared_ptr
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#ifndef _SYSTEM_ERROR_
|
#ifndef _SYSTEM_ERROR_
|
||||||
#define _SYSTEM_ERROR_
|
#define _SYSTEM_ERROR_
|
||||||
#include <yvals_core.h>
|
#include <yvals.h>
|
||||||
#if _STL_COMPILER_PREPROCESSOR
|
#if _STL_COMPILER_PREPROCESSOR
|
||||||
#include <__msvc_system_error_abi.hpp>
|
#include <__msvc_system_error_abi.hpp>
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
|
@ -14,6 +14,9 @@
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <xcall_once.h>
|
#include <xcall_once.h>
|
||||||
#include <xerrc.h>
|
#include <xerrc.h>
|
||||||
|
#ifndef _M_CEE_PURE
|
||||||
|
#include <atomic>
|
||||||
|
#endif
|
||||||
|
|
||||||
#pragma pack(push, _CRT_PACKING)
|
#pragma pack(push, _CRT_PACKING)
|
||||||
#pragma warning(push, _STL_WARNING_LEVEL)
|
#pragma warning(push, _STL_WARNING_LEVEL)
|
||||||
|
@ -68,7 +71,10 @@ public:
|
||||||
_Addr = reinterpret_cast<uintptr_t>(this);
|
_Addr = reinterpret_cast<uintptr_t>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~error_category() noexcept {}
|
#ifdef __cpp_constexpr_dynamic_alloc
|
||||||
|
constexpr
|
||||||
|
#endif
|
||||||
|
virtual ~error_category() noexcept = default;
|
||||||
|
|
||||||
_NODISCARD virtual const char* name() const noexcept = 0;
|
_NODISCARD virtual const char* name() const noexcept = 0;
|
||||||
|
|
||||||
|
@ -98,7 +104,9 @@ public:
|
||||||
protected:
|
protected:
|
||||||
uintptr_t _Addr;
|
uintptr_t _Addr;
|
||||||
|
|
||||||
enum : uintptr_t { // imaginary addresses for Standard error_category objects
|
constexpr explicit error_category(const uintptr_t _Addr_) noexcept : _Addr(_Addr_) {}
|
||||||
|
|
||||||
|
enum : uintptr_t { // symbolic addresses for Standard error_category objects
|
||||||
_Future_addr = 1,
|
_Future_addr = 1,
|
||||||
_Generic_addr = 3,
|
_Generic_addr = 3,
|
||||||
_Iostream_addr = 5,
|
_Iostream_addr = 5,
|
||||||
|
@ -449,12 +457,9 @@ struct _System_error_message {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// CLASS _Generic_error_category
|
|
||||||
class _Generic_error_category : public error_category { // categorize a generic error
|
class _Generic_error_category : public error_category { // categorize a generic error
|
||||||
public:
|
public:
|
||||||
_Generic_error_category() noexcept {
|
constexpr _Generic_error_category() noexcept : error_category(_Generic_addr) {}
|
||||||
_Addr = _Generic_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
_NODISCARD virtual const char* name() const noexcept override {
|
_NODISCARD virtual const char* name() const noexcept override {
|
||||||
return "generic";
|
return "generic";
|
||||||
|
@ -465,12 +470,9 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// CLASS _Iostream_error_category
|
class _Iostream_error_category2 : public error_category { // categorize an iostream error
|
||||||
class _Iostream_error_category : public _Generic_error_category { // categorize an iostream error
|
|
||||||
public:
|
public:
|
||||||
_Iostream_error_category() noexcept {
|
constexpr _Iostream_error_category2() noexcept : error_category(_Iostream_addr) {}
|
||||||
_Addr = _Iostream_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
_NODISCARD virtual const char* name() const noexcept override {
|
_NODISCARD virtual const char* name() const noexcept override {
|
||||||
return "iostream";
|
return "iostream";
|
||||||
|
@ -482,17 +484,14 @@ public:
|
||||||
constexpr size_t _Iostream_error_length = sizeof(_Iostream_error) - 1; // TRANSITION, DevCom-906503
|
constexpr size_t _Iostream_error_length = sizeof(_Iostream_error) - 1; // TRANSITION, DevCom-906503
|
||||||
return string(_Iostream_error, _Iostream_error_length);
|
return string(_Iostream_error, _Iostream_error_length);
|
||||||
} else {
|
} else {
|
||||||
return _Generic_error_category::message(_Errcode);
|
return _Syserror_map(_Errcode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// CLASS _System_error_category
|
|
||||||
class _System_error_category : public error_category { // categorize an operating system error
|
class _System_error_category : public error_category { // categorize an operating system error
|
||||||
public:
|
public:
|
||||||
_System_error_category() noexcept {
|
constexpr _System_error_category() noexcept : error_category(_System_addr) {}
|
||||||
_Addr = _System_addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
_NODISCARD virtual const char* name() const noexcept override {
|
_NODISCARD virtual const char* name() const noexcept override {
|
||||||
return "system";
|
return "system";
|
||||||
|
@ -520,16 +519,81 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// TRANSITION, VSO-1043450
|
||||||
|
// _Immortalize_memcpy_image is used to provide a nonstandard guarantee.
|
||||||
|
// Specifically, we want the error category objects returned from things like std::system_category() to always
|
||||||
|
// be available, even during DLL unload (otherwise, <system_error> would be a huge regression vs. legacy error codes).
|
||||||
|
// Moreover, we need to be very conservative in the runtime support we request. Thus, we have these constraints:
|
||||||
|
//
|
||||||
|
// * can't use magic statics in standard modes, because that would inject a .TLS section into all binaries using
|
||||||
|
// <system_error> and would likely put borderline programs over the TLS slot count limit, and would destroy the
|
||||||
|
// variable during DLL unload
|
||||||
|
// * can't declare the error_category as an ordinary constexpr variable for most compilers, because error_category
|
||||||
|
// has a virtual destructor (TRANSITION, __cpp_constexpr_dynamic_alloc)
|
||||||
|
// * can't declare the error_category as an ordinary non-constexpr variable even with a constexpr constructor, because
|
||||||
|
// the compiler will emit code to destroy it which invalidates its use in these DLL shutdown scenarios
|
||||||
|
//
|
||||||
|
// As a result, we use a workaround: We create an atomic<uintptr_t> array to store the error_category instance, test
|
||||||
|
// if the first atomic is nonzero (acquire), and if so, we know we have formed the instance and can return a
|
||||||
|
// reinterpreted pointer to that storage. If the first atomic is zero, we write all except the first atomic (relaxed),
|
||||||
|
// then write the first one as a store-release. (The non-first values are transferred to other threads in the
|
||||||
|
// release sequence).
|
||||||
|
//
|
||||||
|
// Acknowledged undefined and implementation-defined behavior happening here:
|
||||||
|
// * There is a data race when filling in the values other than the first atomic; this is OK on all hardware we target
|
||||||
|
// because the racing threads are all writing identical values that never change afterwards.
|
||||||
|
// * We are reaching into the layout of atomic<uintptr_t>[N] and assuming we can reinterpret that as some other type.
|
||||||
|
// * We are assuming that virtual functions are implemented with a vfptr located as the first member of an object.
|
||||||
|
// (there are probably others)
|
||||||
|
//
|
||||||
|
// Inspecting the resulting assembly of any callers of _Immortalize_memcpy_image is recommended.
|
||||||
|
//
|
||||||
|
|
||||||
|
#if defined(_M_CEE_PURE)
|
||||||
|
// /clr:pure doesn't ever do constant initialization, so rely on the CLR and magic statics
|
||||||
|
template <class _Ty>
|
||||||
|
_NODISCARD const _Ty& _Immortalize_memcpy_image() noexcept {
|
||||||
|
/* MAGIC */ static _Immortalizer_impl<_Ty> _Static;
|
||||||
|
return _Static._Storage;
|
||||||
|
}
|
||||||
|
#elif defined(__cpp_constexpr_dynamic_alloc)
|
||||||
|
template <class _Ty>
|
||||||
|
_NODISCARD const _Ty& _Immortalize_memcpy_image() noexcept {
|
||||||
|
constexpr _Ty _Static;
|
||||||
|
return _Static._Storage;
|
||||||
|
}
|
||||||
|
#else // choose immortalize strategy
|
||||||
|
template <class _Ty>
|
||||||
|
_NODISCARD const _Ty& _Immortalize_memcpy_image() noexcept {
|
||||||
|
// return reference to a memcpy'd default-initialized _Ty
|
||||||
|
// pre: A default-initialized _Ty sets the first pointer-sized field to nonzero
|
||||||
|
constexpr size_t _Pointer_count = sizeof(_Ty) / sizeof(uintptr_t);
|
||||||
|
static atomic<uintptr_t> _Storage[_Pointer_count];
|
||||||
|
static_assert(sizeof(_Storage) == sizeof(_Ty), "Bad storage size");
|
||||||
|
static_assert(alignof(decltype(_Storage)) >= alignof(_Ty), "Bad alignment assumptions");
|
||||||
|
if (_Storage[0].load(memory_order_acquire) != 0) {
|
||||||
|
return reinterpret_cast<_Ty&>(_Storage);
|
||||||
|
}
|
||||||
|
|
||||||
|
const _Ty _Target;
|
||||||
|
const auto _Target_iter = reinterpret_cast<const uintptr_t*>(_STD addressof(_Target));
|
||||||
|
_CSTD memcpy(_Storage + 1, _Target_iter + 1, sizeof(_Ty) - sizeof(uintptr_t));
|
||||||
|
_Storage[0].store(_Target_iter[0], memory_order_release);
|
||||||
|
return reinterpret_cast<_Ty&>(_Storage);
|
||||||
|
}
|
||||||
|
#endif // choose immortalize strategy
|
||||||
|
|
||||||
_NODISCARD inline const error_category& generic_category() noexcept {
|
_NODISCARD inline const error_category& generic_category() noexcept {
|
||||||
return _Immortalize<_Generic_error_category>();
|
return _Immortalize_memcpy_image<_Generic_error_category>();
|
||||||
}
|
}
|
||||||
|
|
||||||
_NODISCARD inline const error_category& iostream_category() noexcept {
|
_NODISCARD inline const error_category& iostream_category() noexcept {
|
||||||
return _Immortalize<_Iostream_error_category>();
|
return _Immortalize_memcpy_image<_Iostream_error_category2>();
|
||||||
}
|
}
|
||||||
|
|
||||||
_NODISCARD inline const error_category& system_category() noexcept {
|
_NODISCARD inline const error_category& system_category() noexcept {
|
||||||
return _Immortalize<_System_error_category>();
|
return _Immortalize_memcpy_image<_System_error_category>();
|
||||||
}
|
}
|
||||||
_STD_END
|
_STD_END
|
||||||
#pragma pop_macro("new")
|
#pragma pop_macro("new")
|
||||||
|
|
|
@ -32,51 +32,17 @@ using _Execute_once_fp_t = int(__stdcall*)(void*, void*, void**);
|
||||||
_CRTIMP2_PURE int __CLRCALL_PURE_OR_CDECL _Execute_once(
|
_CRTIMP2_PURE int __CLRCALL_PURE_OR_CDECL _Execute_once(
|
||||||
once_flag& _Flag, _Execute_once_fp_t _Callback, void* _Pv) noexcept;
|
once_flag& _Flag, _Execute_once_fp_t _Callback, void* _Pv) noexcept;
|
||||||
|
|
||||||
#ifdef _M_CEE_PURE
|
|
||||||
template <class _Ty>
|
template <class _Ty>
|
||||||
struct _Immortalizer { // constructs _Ty, never destroys
|
union _Immortalizer_impl { // constructs _Ty, never destroys
|
||||||
_Immortalizer() { // construct _Ty inside _Storage
|
constexpr _Immortalizer_impl() noexcept : _Storage{} {}
|
||||||
::new (static_cast<void*>(&_Storage)) _Ty();
|
_Immortalizer_impl(const _Immortalizer_impl&) = delete;
|
||||||
|
_Immortalizer_impl& operator=(const _Immortalizer_impl&) = delete;
|
||||||
|
~_Immortalizer_impl() {
|
||||||
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
_Immortalizer(const _Immortalizer&) = delete;
|
_Ty _Storage;
|
||||||
_Immortalizer& operator=(const _Immortalizer&) = delete;
|
|
||||||
|
|
||||||
aligned_union_t<1, _Ty> _Storage;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma warning(push)
|
|
||||||
#pragma warning(disable : 4640) // construction of local static object is not thread-safe (/Wall)
|
|
||||||
template <class _Ty>
|
|
||||||
_Ty& _Immortalize() { // return a reference to an object that will live forever
|
|
||||||
/* MAGIC */ static _Immortalizer<_Ty> _Static;
|
|
||||||
return reinterpret_cast<_Ty&>(_Static._Storage);
|
|
||||||
}
|
|
||||||
#pragma warning(pop)
|
|
||||||
|
|
||||||
#else // ^^^ _M_CEE_PURE ^^^ // vvv !_M_CEE_PURE vvv
|
|
||||||
template <class _Ty>
|
|
||||||
int __stdcall _Immortalize_impl(void*, void* _Storage_ptr, void**) noexcept {
|
|
||||||
// adapt True Placement New to _Execute_once
|
|
||||||
::new (_Storage_ptr) _Ty();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class _Ty>
|
|
||||||
_Ty& _Immortalize() { // return a reference to an object that will live forever
|
|
||||||
static_assert(sizeof(void*) == sizeof(once_flag), "TRANSITION, VSO-406237");
|
|
||||||
static_assert(alignof(void*) == alignof(once_flag), "TRANSITION, VSO-406237");
|
|
||||||
static void* _Flag = nullptr;
|
|
||||||
static aligned_union_t<1, _Ty> _Storage;
|
|
||||||
if (_Execute_once(reinterpret_cast<once_flag&>(_Flag), _Immortalize_impl<_Ty>, &_Storage) == 0) {
|
|
||||||
// _Execute_once should never fail if the callback never fails
|
|
||||||
_STD terminate();
|
|
||||||
}
|
|
||||||
|
|
||||||
return reinterpret_cast<_Ty&>(_Storage);
|
|
||||||
}
|
|
||||||
#endif // _M_CEE_PURE
|
|
||||||
|
|
||||||
_STD_END
|
_STD_END
|
||||||
|
|
||||||
#pragma pop_macro("new")
|
#pragma pop_macro("new")
|
||||||
|
|
|
@ -37,6 +37,33 @@ extern "C" _CRTIMP2 void* __cdecl __AdjustPointer(void*, const PMD&); // defined
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
#ifdef _M_CEE_PURE
|
||||||
|
template <class _Ty>
|
||||||
|
_Ty& _Immortalize() { // return a reference to an object that will live forever
|
||||||
|
/* MAGIC */ static _Immortalizer_impl<_Ty> _Static;
|
||||||
|
return reinterpret_cast<_Ty&>(_Static._Storage);
|
||||||
|
}
|
||||||
|
#else // ^^^ _M_CEE_PURE ^^^ // vvv !_M_CEE_PURE vvv
|
||||||
|
template <class _Ty>
|
||||||
|
int __stdcall _Immortalize_impl(void*, void* _Storage_ptr, void**) noexcept {
|
||||||
|
// adapt True Placement New to _Execute_once
|
||||||
|
::new (_Storage_ptr) _Ty();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class _Ty>
|
||||||
|
_Ty& _Immortalize() { // return a reference to an object that will live forever
|
||||||
|
static once_flag _Flag;
|
||||||
|
alignas(_Ty) static unsigned char _Storage[sizeof(_Ty)];
|
||||||
|
if (_Execute_once(_Flag, _Immortalize_impl<_Ty>, &_Storage) == 0) {
|
||||||
|
// _Execute_once should never fail if the callback never fails
|
||||||
|
_STD terminate();
|
||||||
|
}
|
||||||
|
|
||||||
|
return reinterpret_cast<_Ty&>(_Storage);
|
||||||
|
}
|
||||||
|
#endif // _M_CEE_PURE
|
||||||
|
|
||||||
void _PopulateCppExceptionRecord(
|
void _PopulateCppExceptionRecord(
|
||||||
_EXCEPTION_RECORD& _Record, const void* const _PExcept, ThrowInfo* _PThrow) noexcept {
|
_EXCEPTION_RECORD& _Record, const void* const _PExcept, ThrowInfo* _PThrow) noexcept {
|
||||||
_Record.ExceptionCode = EH_EXCEPTION_NUMBER;
|
_Record.ExceptionCode = EH_EXCEPTION_NUMBER;
|
||||||
|
|
|
@ -11,11 +11,13 @@ namespace pmr {
|
||||||
static memory_resource* _Default_resource = nullptr;
|
static memory_resource* _Default_resource = nullptr;
|
||||||
|
|
||||||
extern "C" _CRT_SATELLITE_1 _Aligned_new_delete_resource_impl* __cdecl _Aligned_new_delete_resource() noexcept {
|
extern "C" _CRT_SATELLITE_1 _Aligned_new_delete_resource_impl* __cdecl _Aligned_new_delete_resource() noexcept {
|
||||||
return &_Immortalize<_Aligned_new_delete_resource_impl>();
|
return &const_cast<_Aligned_new_delete_resource_impl&>(
|
||||||
|
_Immortalize_memcpy_image<_Aligned_new_delete_resource_impl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" _CRT_SATELLITE_1 _Unaligned_new_delete_resource_impl* __cdecl _Unaligned_new_delete_resource() noexcept {
|
extern "C" _CRT_SATELLITE_1 _Unaligned_new_delete_resource_impl* __cdecl _Unaligned_new_delete_resource() noexcept {
|
||||||
return &_Immortalize<_Unaligned_new_delete_resource_impl>();
|
return &const_cast<_Unaligned_new_delete_resource_impl&>(
|
||||||
|
_Immortalize_memcpy_image<_Unaligned_new_delete_resource_impl>());
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" _CRT_SATELLITE_1 memory_resource* __cdecl _Aligned_get_default_resource() noexcept {
|
extern "C" _CRT_SATELLITE_1 memory_resource* __cdecl _Aligned_get_default_resource() noexcept {
|
||||||
|
@ -66,7 +68,7 @@ namespace pmr {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return &_Immortalize<_Null_resource>();
|
return &const_cast<_Null_resource&>(_Immortalize_memcpy_image<_Null_resource>());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace pmr
|
} // namespace pmr
|
||||||
|
|
|
@ -12,6 +12,8 @@ const size_t max_parallel_test_case_n = 1000;
|
||||||
const size_t max_parallel_test_case_n = std::max(4u, std::thread::hardware_concurrency()) + 1;
|
const size_t max_parallel_test_case_n = std::max(4u, std::thread::hardware_concurrency()) + 1;
|
||||||
#endif // EXHAUSTIVE
|
#endif // EXHAUSTIVE
|
||||||
|
|
||||||
|
#pragma warning(push)
|
||||||
|
#pragma warning(disable : 4640) // 'cases': construction of local static object is not thread-safe
|
||||||
template <typename Fx, typename... Args>
|
template <typename Fx, typename... Args>
|
||||||
void parallel_test_case(Fx fn, Args&... vals) {
|
void parallel_test_case(Fx fn, Args&... vals) {
|
||||||
// call fn with "interesting" test case sizes and additional parameters
|
// call fn with "interesting" test case sizes and additional parameters
|
||||||
|
@ -25,3 +27,4 @@ void parallel_test_case(Fx fn, Args&... vals) {
|
||||||
fn(testSize, vals...);
|
fn(testSize, vals...);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#pragma warning(pop)
|
||||||
|
|
|
@ -90,8 +90,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void deallocate(T* const p, size_t) const {
|
void deallocate(T* const p, size_t) const {
|
||||||
unsigned char* const x = static_cast<unsigned char*>(static_cast<void*>(p)) - 128;
|
unsigned char* const x = static_cast<unsigned char*>(static_cast<void*>(p)) - 128;
|
||||||
static const auto equal_to_cc = [](const unsigned char c) { return c == 0xCC; };
|
const auto equal_to_cc = [](const unsigned char c) { return c == 0xCC; };
|
||||||
assert(all_of(x, x + 128, equal_to_cc));
|
assert(all_of(x, x + 128, equal_to_cc));
|
||||||
const auto afterT = x + 128 + sizeof(T);
|
const auto afterT = x + 128 + sizeof(T);
|
||||||
assert(all_of(afterT, afterT + 128, equal_to_cc));
|
assert(all_of(afterT, afterT + 128, equal_to_cc));
|
||||||
|
|
|
@ -51,7 +51,7 @@ STATIC_ASSERT(il.size() == 0);
|
||||||
STATIC_ASSERT(il.begin() == il.end());
|
STATIC_ASSERT(il.begin() == il.end());
|
||||||
STATIC_ASSERT(begin(il) == end(il));
|
STATIC_ASSERT(begin(il) == end(il));
|
||||||
|
|
||||||
// TRANSITION:
|
// TRANSITION,
|
||||||
// constexpr error_category() noexcept;
|
// constexpr error_category() noexcept;
|
||||||
|
|
||||||
constexpr int i = 1729;
|
constexpr int i = 1729;
|
||||||
|
@ -816,7 +816,7 @@ constexpr adopt_lock_t adopt_lock2 = adopt_lock;
|
||||||
|
|
||||||
constexpr once_flag once{};
|
constexpr once_flag once{};
|
||||||
|
|
||||||
// TRANSITION:
|
// TRANSITION,
|
||||||
// constexpr mutex() noexcept;
|
// constexpr mutex() noexcept;
|
||||||
|
|
||||||
#endif // _M_CEE
|
#endif // _M_CEE
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE ..\prefix.lst
|
RUNALL_INCLUDE ..\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
|
PM_CL="/w14640 /Zc:threadSafeInit-"
|
||||||
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /DCONSTEXPR_NOTHROW"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /DCONSTEXPR_NOTHROW"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /DCONSTEXPR_NOTHROW"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /DCONSTEXPR_NOTHROW"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /DCONSTEXPR_NOTHROW"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /DCONSTEXPR_NOTHROW"
|
||||||
|
|
|
@ -72,6 +72,8 @@ struct test_info {
|
||||||
|
|
||||||
using expected_table_t = vector<test_info>;
|
using expected_table_t = vector<test_info>;
|
||||||
|
|
||||||
|
#pragma warning(push)
|
||||||
|
#pragma warning(disable : 4640) // 'variable': construction of local static object is not thread-safe
|
||||||
#if _ITERATOR_DEBUG_LEVEL == 0
|
#if _ITERATOR_DEBUG_LEVEL == 0
|
||||||
|
|
||||||
const expected_table_t& get_expected_moves_table() {
|
const expected_table_t& get_expected_moves_table() {
|
||||||
|
@ -126,6 +128,7 @@ const expected_table_t& get_expected_copies_table() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
#endif // _ITERATOR_DEBUG_LEVEL == 0
|
||||||
|
#pragma warning(pop)
|
||||||
|
|
||||||
int query_expected_table(const expected_table_t& table, const string& type_name, const string& test_name) {
|
int query_expected_table(const expected_table_t& table, const string& type_name, const string& test_name) {
|
||||||
auto exact_match = find_if(begin(table), end(table),
|
auto exact_match = find_if(begin(table), end(table),
|
||||||
|
|
|
@ -1,7 +1,40 @@
|
||||||
# Copyright (c) Microsoft Corporation.
|
# Copyright (c) Microsoft Corporation.
|
||||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||||
|
|
||||||
RUNALL_INCLUDE ..\usual_matrix.lst
|
# The following lines are intended to match usual_matrix.lst but without /w14640 /Zc:threadSafeInit-
|
||||||
|
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++14 /D_HAS_IF_CONSTEXPR=0"
|
||||||
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
|
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-"
|
||||||
|
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++14 /fp:except"
|
||||||
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
||||||
|
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 /await"
|
||||||
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only"
|
||||||
|
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 /await"
|
||||||
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only"
|
||||||
|
PM_CL="/Za /EHsc /MD /std:c++latest /permissive-"
|
||||||
|
PM_CL="/Za /EHsc /MDd /std:c++latest /permissive-"
|
||||||
|
PM_CL="/clr /MD /std:c++17"
|
||||||
|
PM_CL="/clr /MDd /std:c++17"
|
||||||
|
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"
|
||||||
|
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 /EHsc /MD /std:c++14"
|
||||||
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MDd /std:c++17"
|
||||||
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict"
|
||||||
|
|
||||||
|
# The following lines are extras not present in usual_matrix.lst
|
||||||
PM_CL="/MT /std:c++latest /EHsc /Zc:alignedNew- /DTEST_DISABLED_ALIGNED_NEW"
|
PM_CL="/MT /std:c++latest /EHsc /Zc:alignedNew- /DTEST_DISABLED_ALIGNED_NEW"
|
||||||
PM_CL="/MT /std:c++latest /EHs- /DTEST_DISABLED_EXCEPTIONS"
|
PM_CL="/MT /std:c++latest /EHs- /DTEST_DISABLED_EXCEPTIONS"
|
||||||
PM_CL="/MT /std:c++latest /EHsc /Zc:noexceptTypes- /DTEST_DISABLED_NOEXCEPT_FUNCTION_TYPE"
|
PM_CL="/MT /std:c++latest /EHsc /Zc:noexceptTypes- /DTEST_DISABLED_NOEXCEPT_FUNCTION_TYPE"
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||||
|
|
||||||
RUNALL_INCLUDE .\usual_matrix.lst
|
RUNALL_INCLUDE .\usual_matrix.lst
|
||||||
PM_CL="/Gr /EHsc /MT /std:c++latest"
|
PM_CL="/Gr /EHsc /MT /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Gr /EHsc /MTd /std:c++latest"
|
PM_CL="/Gr /EHsc /MTd /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Gv /EHsc /MT /std:c++latest"
|
PM_CL="/Gv /EHsc /MT /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Gv /EHsc /MTd /std:c++latest"
|
PM_CL="/Gv /EHsc /MTd /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Gz /EHsc /MT /std:c++latest"
|
PM_CL="/Gz /EHsc /MT /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Gz /EHsc /MTd /std:c++latest"
|
PM_CL="/Gz /EHsc /MTd /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
|
|
|
@ -3,5 +3,7 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
|
PM_CL="/w14640 /Zc:threadSafeInit-"
|
||||||
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/clr /MD /std:c++17"
|
PM_CL="/clr /MD /std:c++17"
|
||||||
PM_CL="/clr /MDd /std:c++17"
|
PM_CL="/clr /MDd /std:c++17"
|
||||||
|
|
|
@ -3,9 +3,11 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-"
|
PM_CL="/w14640 /Zc:threadSafeInit- /EHsc /std:c++latest"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /permissive-"
|
PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /permissive-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest"
|
PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /Zc:char8_t-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only"
|
PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /permissive-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only"
|
PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2"
|
||||||
|
PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /analyze:only"
|
||||||
|
PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /analyze:only"
|
||||||
|
|
|
@ -3,14 +3,16 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHa /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14"
|
PM_CL="/w14640 /Zc:threadSafeInit- /EHa"
|
||||||
PM_CL="/EHa /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHa /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14"
|
||||||
PM_CL="/EHa /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
||||||
PM_CL="/EHa /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-"
|
PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
PM_CL="/EHa /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except"
|
PM_CL="/MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
||||||
PM_CL="/EHa /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-"
|
||||||
PM_CL="/EHa /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-"
|
PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except"
|
||||||
PM_CL="/EHa /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /await"
|
PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
||||||
PM_CL="/EHa /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict"
|
PM_CL="/MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-"
|
||||||
PM_CL="/EHa /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /await"
|
PM_CL="/MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /await"
|
||||||
|
PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict"
|
||||||
|
PM_CL="/MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /await"
|
||||||
|
|
|
@ -4,4 +4,4 @@
|
||||||
# This is for tests that take a long time to execute, so run only one configuration.
|
# This is for tests that take a long time to execute, so run only one configuration.
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MT /O2 /GL /std:c++latest /analyze"
|
PM_CL="/EHsc /MT /O2 /GL /std:c++latest /analyze /w14640 /Zc:threadSafeInit-"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
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++14"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict"
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict /w14640 /Zc:threadSafeInit-"
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/DMEOW_HEADER=algorithm"
|
PM_CL="/DMEOW_HEADER=algorithm"
|
||||||
PM_CL="/DMEOW_HEADER=any"
|
PM_CL="/DMEOW_HEADER=any"
|
||||||
|
|
|
@ -3,37 +3,37 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
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++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /await"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /await /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /await"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /await /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Za /EHsc /MD /std:c++latest /permissive-"
|
PM_CL="/Za /EHsc /MD /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Za /EHsc /MDd /std:c++latest /permissive-"
|
PM_CL="/Za /EHsc /MDd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
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"
|
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"
|
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"
|
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"
|
PM_CL="/clr /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MD /J /std:c++17"
|
PM_CL="/clr /MD /J /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MDd /J /std:c++17"
|
PM_CL="/clr /MDd /J /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr:pure /MD /std:c++14"
|
PM_CL="/clr:pure /MD /std:c++14"
|
||||||
PM_CL="/clr:pure /MDd /std:c++14"
|
PM_CL="/clr:pure /MDd /std:c++14"
|
||||||
PM_CL="/BE /c /EHsc /MD /std:c++14"
|
PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-"
|
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-"
|
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MD /std:c++14"
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MDd /std:c++17"
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict"
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict /w14640 /Zc:threadSafeInit-"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
|
PM_CL="/w14640 /Zc:threadSafeInit-"
|
||||||
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
|
PM_CL="/w14640 /Zc:threadSafeInit-"
|
||||||
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
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-"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
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++14"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
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++14"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MTd /std:c++latest /analyze"
|
PM_CL="/EHsc /MTd /std:c++latest /analyze /w14640 /Zc:threadSafeInit-"
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/GR"
|
PM_CL="/GR"
|
||||||
PM_CL="/GR-"
|
PM_CL="/GR-"
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
|
PM_CL="/w14640 /Zc:threadSafeInit-"
|
||||||
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
|
PM_CL="/w14640 /Zc:threadSafeInit-"
|
||||||
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
|
PM_CL="/w14640 /Zc:threadSafeInit-"
|
||||||
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
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-"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
|
PM_CL="/w14640 /Zc:threadSafeInit-"
|
||||||
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
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-"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
||||||
|
|
|
@ -1,34 +1,38 @@
|
||||||
# Copyright (c) Microsoft Corporation.
|
# Copyright (c) Microsoft Corporation.
|
||||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||||
|
|
||||||
|
#
|
||||||
|
# When updating this list, also remember to update VSO_0157762_feature_test_macros\env.lst
|
||||||
|
#
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
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++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /await"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /await /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /await"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /await /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Za /EHsc /MD /std:c++latest /permissive-"
|
PM_CL="/Za /EHsc /MD /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Za /EHsc /MDd /std:c++latest /permissive-"
|
PM_CL="/Za /EHsc /MDd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MD /std:c++17"
|
PM_CL="/clr /MD /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MDd /std:c++17"
|
PM_CL="/clr /MDd /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr:pure /MD /std:c++14"
|
PM_CL="/clr:pure /MD /std:c++14"
|
||||||
PM_CL="/clr:pure /MDd /std:c++14"
|
PM_CL="/clr:pure /MDd /std:c++14"
|
||||||
PM_CL="/BE /c /EHsc /MD /std:c++14"
|
PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-"
|
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-"
|
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MD /std:c++14"
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MDd /std:c++17"
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict"
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing /EHsc /MTd /std:c++latest /fp:strict /w14640 /Zc:threadSafeInit-"
|
||||||
|
|
|
@ -3,30 +3,30 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
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++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t-"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:char8_t- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t-"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /Zc:wchar_t- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /fp:except /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /await"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /await /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /fp:strict /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /await"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /await /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MD /std:c++17"
|
PM_CL="/clr /MD /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MDd /std:c++17"
|
PM_CL="/clr /MDd /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr:pure /MD /std:c++14"
|
PM_CL="/clr:pure /MD /std:c++14"
|
||||||
PM_CL="/clr:pure /MDd /std:c++14"
|
PM_CL="/clr:pure /MDd /std:c++14"
|
||||||
PM_CL="/BE /c /EHsc /MD /std:c++14"
|
PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-"
|
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-"
|
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-delayed-template-parsing /EHsc /MD /std:c++14"
|
PM_COMPILER="clang-cl" PM_CL="-fno-delayed-template-parsing /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-delayed-template-parsing /EHsc /MDd /std:c++17"
|
PM_COMPILER="clang-cl" PM_CL="-fno-delayed-template-parsing /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-delayed-template-parsing /EHsc /MTd /std:c++latest"
|
PM_COMPILER="clang-cl" PM_CL="-fno-delayed-template-parsing /EHsc /MTd /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
|
|
|
@ -3,30 +3,30 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
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++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++14 /D_HAS_IF_CONSTEXPR=0 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive-"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive-"
|
PM_CL="/EHsc /MDd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /analyze:only /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MT /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=0 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=1 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze:only /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Za /EHsc /MD /std:c++latest /permissive-"
|
PM_CL="/Za /EHsc /MD /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/Za /EHsc /MDd /std:c++latest /permissive-"
|
PM_CL="/Za /EHsc /MDd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MD /std:c++17"
|
PM_CL="/clr /MD /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr /MDd /std:c++17"
|
PM_CL="/clr /MDd /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/clr:pure /MD /std:c++14"
|
PM_CL="/clr:pure /MD /std:c++14"
|
||||||
PM_CL="/clr:pure /MDd /std:c++14"
|
PM_CL="/clr:pure /MDd /std:c++14"
|
||||||
PM_CL="/BE /c /EHsc /MD /std:c++14"
|
PM_CL="/BE /c /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive-"
|
PM_CL="/BE /c /EHsc /MDd /std:c++17 /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive-"
|
PM_CL="/BE /c /EHsc /MTd /std:c++latest /permissive- /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -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 -Xclang -Wno-deprecated-declarations -Xclang -Wno-self-assign /EHsc /MD /std:c++14 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -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 -Xclang -Wno-deprecated-declarations -Xclang -Wno-self-assign /EHsc /MDd /std:c++17 /w14640 /Zc:threadSafeInit-"
|
||||||
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Xclang -Wno-deprecated-declarations -Xclang -Wno-self-assign /EHsc /MTd /std:c++latest"
|
PM_COMPILER="clang-cl" PM_CL="-fno-ms-compatibility -fno-delayed-template-parsing -Xclang -Wno-deprecated-declarations -Xclang -Wno-self-assign /EHsc /MTd /std:c++latest /w14640 /Zc:threadSafeInit-"
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
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++14"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++14 /D_HAS_IF_CONSTEXPR=0"
|
||||||
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
PM_CL="/EHsc /MD /D_ITERATOR_DEBUG_LEVEL=0 /std:c++17"
|
||||||
|
|
|
@ -3,4 +3,4 @@
|
||||||
|
|
||||||
RUNALL_INCLUDE .\prefix.lst
|
RUNALL_INCLUDE .\prefix.lst
|
||||||
RUNALL_CROSSLIST
|
RUNALL_CROSSLIST
|
||||||
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze"
|
PM_CL="/EHsc /MTd /D_ITERATOR_DEBUG_LEVEL=2 /std:c++latest /analyze /w14640 /Zc:threadSafeInit-"
|
||||||
|
|
Загрузка…
Ссылка в новой задаче