diff --git a/gcc/profile-count.cc b/gcc/profile-count.cc index e63c9432388..a14f379db8f 100644 --- a/gcc/profile-count.cc +++ b/gcc/profile-count.cc @@ -128,13 +128,14 @@ profile_count::differs_from_p (profile_count other) const { gcc_checking_assert (compatible_p (other)); if (!initialized_p () || !other.initialized_p ()) - return false; + return initialized_p () != other.initialized_p (); if ((uint64_t)m_val - (uint64_t)other.m_val < 100 || (uint64_t)other.m_val - (uint64_t)m_val < 100) return false; if (!other.m_val) return true; - int64_t ratio = (int64_t)m_val * 100 / other.m_val; + uint64_t ratio; + safe_scale_64bit (m_val, 100, other.m_val, &ratio); return ratio < 99 || ratio > 101; }