aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cgraphclones.c7
-rw-r--r--gcc/profile-count.c67
-rw-r--r--gcc/profile-count.h31
3 files changed, 5 insertions, 100 deletions
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 64ff1c0..a79491e 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -80,11 +80,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-inline.h"
#include "dumpfile.h"
#include "gimple-pretty-print.h"
-#include "alloc-pool.h"
-#include "symbol-summary.h"
-#include "tree-vrp.h"
-#include "ipa-prop.h"
-#include "ipa-fnsummary.h"
/* Create clone of edge in the node N represented by CALL_EXPR
the callgraph. */
@@ -274,8 +269,6 @@ cgraph_node::expand_all_artificial_thunks ()
thunk->thunk.thunk_p = false;
thunk->analyze ();
}
- ipa_analyze_node (thunk);
- inline_analyze_function (thunk);
thunk->expand_all_artificial_thunks ();
}
else
diff --git a/gcc/profile-count.c b/gcc/profile-count.c
index d0800b2..e91f9cb 100644
--- a/gcc/profile-count.c
+++ b/gcc/profile-count.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "wide-int.h"
#include "sreal.h"
-#include "selftest.h"
/* Names from profile_quality enum values. */
@@ -292,7 +291,6 @@ profile_count::to_cgraph_frequency (profile_count entry_bb_count) const
return 0;
gcc_checking_assert (entry_bb_count.initialized_p ());
uint64_t scale;
- gcc_checking_assert (compatible_p (entry_bb_count));
if (!safe_scale_64bit (!entry_bb_count.m_val ? m_val + 1 : m_val,
CGRAPH_FREQ_BASE, MAX (1, entry_bb_count.m_val), &scale))
return CGRAPH_FREQ_MAX;
@@ -330,7 +328,6 @@ profile_count::to_sreal_scale (profile_count in, bool *known) const
return 0;
if (m_val == in.m_val)
return 1;
- gcc_checking_assert (compatible_p (in));
if (!in.m_val)
{
@@ -376,8 +373,6 @@ profile_count::adjust_for_ipa_scaling (profile_count *num,
profile_count
profile_count::combine_with_ipa_count (profile_count ipa)
{
- if (!initialized_p ())
- return *this;
ipa = ipa.ipa ();
if (ipa.nonzero_p ())
return ipa;
@@ -447,65 +442,3 @@ profile_probability::combine_with_count (profile_count count1,
else
return *this * even () + other * even ();
}
-
-#if CHECKING_P
-namespace selftest {
-
-/* Verify non-trivial type conversions for IPA scaling. This happens often
- during inlining. */
-
-static void
-profile_count_verify_ipa_scaling (void)
-{
- profile_count cnt1 = profile_count::from_gcov_type (4).global0 ();
- profile_count cnt2 = profile_count::from_gcov_type (2);
- profile_count cnt3 = profile_count::from_gcov_type (8);
- profile_count cnt4 = cnt3.apply_scale (cnt1, cnt2);
-
- /* Result should be 16 with GUESSED_GLOBAL0. */
- ASSERT_EQ (cnt4.ipa (), profile_count::zero ());
- ASSERT_EQ (cnt4.to_gcov_type (), 16);
-
- cnt1 = profile_count::from_gcov_type (4).global0adjusted ();
- cnt4 = cnt3.apply_scale (cnt1, cnt2);
- /* Result should be 16 with GUESSED_GLOBAL0_ADJUSTED. */
- ASSERT_EQ (cnt4.ipa (), profile_count::adjusted_zero ());
- ASSERT_EQ (cnt4.to_gcov_type (), 16);
-}
-
-/* Verify non-trivial cases of sreal scale calculations. */
-
-static void
-profile_count_verify_to_sreal_scale (void)
-{
- profile_count cnt1 = profile_count::from_gcov_type (4).global0 ();
- profile_count cnt2 = profile_count::from_gcov_type (8);
-
- /* If count is globally 0 it should have 0 scale in non-zero global count. */
- ASSERT_EQ (cnt1.to_sreal_scale (cnt2), 0);
-}
-
-/* Verify non-trivial cases of probability_in calculations. */
-
-static void
-profile_count_verify_probability_in (void)
-{
- /*profile_count cnt1 = profile_count::from_gcov_type (4).global0 ();
- profile_count cnt2 = profile_count::from_gcov_type (8);*/
-
- /* If count is globally 0 it should have 0 probability in non-zero global
- count. */
- /*ASSERT_EQ (cnt1.probability_in (cnt2), profile_probability::never ());*/
-}
-
-/* Run all of the selftests within this file. */
-
-void profile_count_c_tests (void)
-{
- profile_count_verify_ipa_scaling ();
- profile_count_verify_to_sreal_scale ();
- profile_count_verify_probability_in ();
-}
-
-}
-#endif
diff --git a/gcc/profile-count.h b/gcc/profile-count.h
index 9af8d60..967c5ec 100644
--- a/gcc/profile-count.h
+++ b/gcc/profile-count.h
@@ -700,7 +700,6 @@ private:
uint64_t UINT64_BIT_FIELD_ALIGN m_val : n_bits;
#undef UINT64_BIT_FIELD_ALIGN
enum profile_quality m_quality : 3;
-public:
/* Return true if both values can meaningfully appear in single function
body. We have either all counters in function local or global, otherwise
@@ -712,18 +711,9 @@ public:
if (*this == zero ()
|| other == zero ())
return true;
- /* Do not allow nonzero global profile together with local guesses
- that are globally0. */
- if (ipa ().nonzero_p ()
- && !(other.ipa () == other))
- return false;
- if (other.ipa ().nonzero_p ()
- && !(ipa () == *this))
- return false;
-
return ipa_p () == other.ipa_p ();
}
-
+public:
/* Used for counters which are expected to be never executed. */
static profile_count zero ()
{
@@ -1002,14 +992,6 @@ public:
profile_count max (profile_count other) const
{
- profile_count val = *this;
-
- /* Always prefer nonzero IPA counts over local counts. */
- if (ipa ().nonzero_p () || other.ipa ().nonzero_p ())
- {
- val = ipa ();
- other = other.ipa ();
- }
if (!initialized_p ())
return other;
if (!other.initialized_p ())
@@ -1019,8 +1001,8 @@ public:
if (other == zero ())
return *this;
gcc_checking_assert (compatible_p (other));
- if (val.m_val < other.m_val || (m_val == other.m_val
- && val.m_quality < other.m_quality))
+ if (m_val < other.m_val || (m_val == other.m_val
+ && m_quality < other.m_quality))
return other;
return *this;
}
@@ -1079,7 +1061,6 @@ public:
{
if (*this == zero ())
return *this;
-
if (num == zero ())
return num;
if (!initialized_p () || !num.initialized_p () || !den.initialized_p ())
@@ -1094,9 +1075,7 @@ public:
ret.m_val = MIN (val, max_count);
ret.m_quality = MIN (MIN (MIN (m_quality, ADJUSTED),
num.m_quality), den.m_quality);
- /* Be sure that ret is not local or global0 type
- if num is global. */
- if (num.ipa_p () && (!ret.ipa_p () || !(ret.ipa () == ret)))
+ if (num.ipa_p () && !ret.ipa_p ())
ret.m_quality = MIN (num.m_quality, GUESSED);
return ret;
}
@@ -1174,8 +1153,8 @@ public:
if (*this == overall && m_quality == PRECISE)
return profile_probability::always ();
profile_probability ret;
-
gcc_checking_assert (compatible_p (overall));
+
if (overall.m_val < m_val)
{
ret.m_val = profile_probability::max_probability;