diff --git a/glm/detail/func_integer.inl b/glm/detail/func_integer.inl index 25910eb0..accc58d9 100644 --- a/glm/detail/func_integer.inl +++ b/glm/detail/func_integer.inl @@ -317,6 +317,10 @@ namespace detail template class vecType> GLM_FUNC_QUALIFIER vecType bitCount(vecType const & v) { + #ifdef GLM_COMPILER_VC + #pragma warning(push) + #pragma warning(disable : 4310) //cast truncates constant value + #endif vecType::type, P> x(*reinterpret_cast::type, P> const *>(&v)); x = detail::compute_bitfieldBitCountStep::type, P, vecType, detail::is_aligned

::value, sizeof(T) * 8>= 2>::call(x, typename detail::make_unsigned::type(0x5555555555555555ull), typename detail::make_unsigned::type( 1)); x = detail::compute_bitfieldBitCountStep::type, P, vecType, detail::is_aligned

::value, sizeof(T) * 8>= 4>::call(x, typename detail::make_unsigned::type(0x3333333333333333ull), typename detail::make_unsigned::type( 2)); @@ -325,6 +329,9 @@ namespace detail x = detail::compute_bitfieldBitCountStep::type, P, vecType, detail::is_aligned

::value, sizeof(T) * 8>= 32>::call(x, typename detail::make_unsigned::type(0x0000FFFF0000FFFFull), typename detail::make_unsigned::type(16)); x = detail::compute_bitfieldBitCountStep::type, P, vecType, detail::is_aligned

::value, sizeof(T) * 8>= 64>::call(x, typename detail::make_unsigned::type(0x00000000FFFFFFFFull), typename detail::make_unsigned::type(32)); return vecType(x); + #ifdef GLM_COMPILER_VC + #pragma warning(pop) + #endif } // findLSB diff --git a/glm/detail/type_vec.hpp b/glm/detail/type_vec.hpp index 23e463e7..686a9b50 100644 --- a/glm/detail/type_vec.hpp +++ b/glm/detail/type_vec.hpp @@ -9,6 +9,10 @@ namespace glm{ namespace detail { +#ifdef GLM_COMPILER_VC +#pragma warning(push) +#pragma warning(disable : 4324) // structure was padded due to alignment specifier +#endif template struct aligned {}; template<> GLM_ALIGNED_STRUCT(1) aligned<1>{}; template<> GLM_ALIGNED_STRUCT(2) aligned<2>{}; @@ -17,7 +21,9 @@ namespace detail template<> GLM_ALIGNED_STRUCT(16) aligned<16>{}; template<> GLM_ALIGNED_STRUCT(32) aligned<32>{}; template<> GLM_ALIGNED_STRUCT(64) aligned<64>{}; - +#ifdef GLM_COMPILER_VC +#pragma warning(pop) +#endif template struct storage {