https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102823
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Hmm: *reinterpret_cast<glm::vec<L, typename glm::detail::make_unsigned<T>::type, Q> const *>(&v) That seems like it could be a violation of C/C++ aliasing rules. This is in: template<glm::length_t L, typename T, glm::qualifier Q> static glm::vec<L, int, Q> bitCount_bitfield(glm::vec<L, T, Q> const& v)