diff --git a/src/common/hist_util.cc b/src/common/hist_util.cc index efd62d701..7f4912317 100644 --- a/src/common/hist_util.cc +++ b/src/common/hist_util.cc @@ -500,13 +500,13 @@ void GHistIndexBlockMatrix::Init(const GHistIndexMatrix& gmat, */ template void InitilizeHistByZeroes(GHistRow hist, size_t begin, size_t end) { -#if defined(XGBOOST_STRICT_R_MODE) && XGBOOST_STRICT_R_MODE == 1 - std::fill(hist.begin() + begin, hist.begin() + end, - xgboost::detail::GradientPairInternal()); -#else // defined(XGBOOST_STRICT_R_MODE) && XGBOOST_STRICT_R_MODE == 1 - memset(hist.data() + begin, '\0', (end-begin)* + static_assert(sizeof(xgboost::detail::GradientPairInternal) % + sizeof(GradientSumT) == + 0, + ""); + auto p_data = reinterpret_cast(hist.data()); + memset(p_data + begin, '\0', (end-begin)* sizeof(xgboost::detail::GradientPairInternal)); -#endif // defined(XGBOOST_STRICT_R_MODE) && XGBOOST_STRICT_R_MODE == 1 } template void InitilizeHistByZeroes(GHistRow hist, size_t begin, size_t end);