From: hubicka Date: Thu, 22 Jun 2017 14:50:23 +0000 (+0000) Subject: * profile-count.h (apply_probability, X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=583af268abdf79361fcbb0ca05f70d448adccd31;p=thirdparty%2Fgcc.git * profile-count.h (apply_probability, apply_scale, probability_in): Fix checks for zero. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249563 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a2340c0f253f..0a3426eef3eb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-06-22 Jan Hubicka + + * profile-count.h (apply_probability, + apply_scale, probability_in): Fix checks for zero. + 2017-06-22 Rainer Orth * incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix. diff --git a/gcc/profile-count.h b/gcc/profile-count.h index 42509c49f988..0f77e4efc36c 100644 --- a/gcc/profile-count.h +++ b/gcc/profile-count.h @@ -255,7 +255,7 @@ public: profile_count apply_probability (int prob) const { gcc_checking_assert (prob >= 0 && prob <= REG_BR_PROB_BASE); - if (*this == profile_count::zero ()) + if (m_val == 0) return *this; if (!initialized_p ()) return profile_count::uninitialized (); @@ -267,24 +267,25 @@ public: /* Return *THIS * NUM / DEN. */ profile_count apply_scale (int64_t num, int64_t den) const { - if (*this == profile_count::zero ()) + if (m_val == 0) return *this; if (!initialized_p ()) return profile_count::uninitialized (); profile_count ret; + gcc_checking_assert (num >= 0 && den > 0); /* FIXME: shrink wrapping violates this sanity check. */ - gcc_checking_assert ((num >= 0 - && (num <= REG_BR_PROB_BASE - || den <= REG_BR_PROB_BASE) - && den > 0) || 1); + gcc_checking_assert ((num <= REG_BR_PROB_BASE + || den <= REG_BR_PROB_BASE) || 1); ret.m_val = RDIV (m_val * num, den); ret.m_quality = MIN (m_quality, count_adjusted); return ret; } profile_count apply_scale (profile_count num, profile_count den) const { - if (*this == profile_count::zero () || num == profile_count::zero ()) - return profile_count::zero (); + if (m_val == 0) + return *this; + if (num.m_val == 0) + return num; if (!initialized_p () || !num.initialized_p () || !den.initialized_p ()) return profile_count::uninitialized (); gcc_checking_assert (den > 0); @@ -306,7 +307,7 @@ public: OVERALL. */ int probability_in (profile_count overall) { - if (*this == profile_count::zero ()) + if (!m_val) return 0; if (!initialized_p () || !overall.initialized_p ()) return REG_BR_PROB_BASE / 2;