From 4ce22c093c8871b0cbfe3c83e3106f353cb0a088 Mon Sep 17 00:00:00 2001 From: Shawn Hoffman Date: Thu, 3 Jun 2021 16:06:52 -0700 Subject: [PATCH] msvc: remove workarounds for old compiler issues --- Source/Core/Common/BitField.h | 10 ---------- Source/Core/Common/FloatUtils.h | 29 ----------------------------- 2 files changed, 39 deletions(-) diff --git a/Source/Core/Common/BitField.h b/Source/Core/Common/BitField.h index b3a3a41cbc..0a26ea3685 100644 --- a/Source/Core/Common/BitField.h +++ b/Source/Core/Common/BitField.h @@ -134,10 +134,6 @@ public: // so that we can use this within unions constexpr BitField() = default; -// Visual Studio (as of VS2017) considers BitField to not be trivially -// copyable if we delete this copy assignment operator. -// https://developercommunity.visualstudio.com/content/problem/101208/c-compiler-is-overly-strict-regarding-whether-a-cl.html -#ifndef _MSC_VER // We explicitly delete the copy assignment operator here, because the // default copy assignment would copy the full storage value, rather than // just the bits relevant to this particular bit field. @@ -145,7 +141,6 @@ public: // relevant bits, but we're prevented from doing that because the savestate // code expects that this class is trivially copyable. BitField& operator=(const BitField&) = delete; -#endif DOLPHIN_FORCE_INLINE BitField& operator=(T val) { @@ -241,10 +236,6 @@ public: // so that we can use this within unions constexpr BitFieldArray() = default; -// Visual Studio (as of VS2017) considers BitField to not be trivially -// copyable if we delete this copy assignment operator. -// https://developercommunity.visualstudio.com/content/problem/101208/c-compiler-is-overly-strict-regarding-whether-a-cl.html -#ifndef _MSC_VER // We explicitly delete the copy assignment operator here, because the // default copy assignment would copy the full storage value, rather than // just the bits relevant to this particular bit field. @@ -252,7 +243,6 @@ public: // relevant bits, but we're prevented from doing that because the savestate // code expects that this class is trivially copyable. BitFieldArray& operator=(const BitFieldArray&) = delete; -#endif public: constexpr std::size_t StartBit() const { return position; } diff --git a/Source/Core/Common/FloatUtils.h b/Source/Core/Common/FloatUtils.h index d7657b941a..7fca042ace 100644 --- a/Source/Core/Common/FloatUtils.h +++ b/Source/Core/Common/FloatUtils.h @@ -10,18 +10,6 @@ #include "Common/BitUtils.h" #include "Common/CommonTypes.h" -#ifdef _MSC_VER - -// MSVC needs a workaround, because its std::numeric_limits::signaling_NaN() -// will use __builtin_nans, which is improperly handled by the compiler and generates -// a bad constant. Here we go back to the version MSVC used before the builtin. -// TODO: Remove this and use numeric_limits directly whenever this bug is fixed. -// See Visual Studio bug # 128935 "std::numeric_limits::signaling_NaN() is broken" - -#include - -#endif // _MSC_VER - namespace Common { template @@ -30,23 +18,6 @@ constexpr T SNANConstant() return std::numeric_limits::signaling_NaN(); } -#ifdef _MSC_VER - -// See workaround note above. - -template <> -constexpr double SNANConstant() -{ - return (_CSTD _Snan._Double); -} -template <> -constexpr float SNANConstant() -{ - return (_CSTD _Snan._Float); -} - -#endif // _MSC_VER - // The most significant bit of the fraction is an is-quiet bit on all architectures we care about. enum : u64 {