aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-01-12 09:58:58 +0100
committerMartin Liska <marxin@gcc.gnu.org>2018-01-12 08:58:58 +0000
commitaae9da9bdebeb345aee79125441c16dd94ae70db (patch)
tree3a25f9e1b44e361d0c04c857053cec5e2b74c7cf
parentb710b08a8c9534239f1356ed039147d23c00b253 (diff)
downloadgcc-aae9da9bdebeb345aee79125441c16dd94ae70db.zip
gcc-aae9da9bdebeb345aee79125441c16dd94ae70db.tar.gz
gcc-aae9da9bdebeb345aee79125441c16dd94ae70db.tar.bz2
Add new verification for profile-count.h.
2018-01-12 Martin Liska <mliska@suse.cz> * profile-count.h (enum profile_quality): Use 0 as invalid enum value of profile_quality. From-SVN: r256565
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/profile-count.h16
2 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 51cf22b..3dff3ed 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-12 Martin Liska <mliska@suse.cz>
+
+ * profile-count.h (enum profile_quality): Use 0 as invalid
+ enum value of profile_quality.
+
2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
* doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
diff --git a/gcc/profile-count.h b/gcc/profile-count.h
index 3c5f720..7a43917 100644
--- a/gcc/profile-count.h
+++ b/gcc/profile-count.h
@@ -30,27 +30,27 @@ enum profile_quality {
or may not match reality. It is local to function and can not be compared
inter-procedurally. Never used by probabilities (they are always local).
*/
- profile_guessed_local = 0,
+ profile_guessed_local = 1,
/* Profile was read by feedback and was 0, we used local heuristics to guess
better. This is the case of functions not run in profile fedback.
Never used by probabilities. */
- profile_guessed_global0 = 1,
+ profile_guessed_global0 = 2,
/* Same as profile_guessed_global0 but global count is adjusted 0. */
- profile_guessed_global0adjusted = 2,
+ profile_guessed_global0adjusted = 3,
/* Profile is based on static branch prediction heuristics. It may or may
not reflect the reality but it can be compared interprocedurally
(for example, we inlined function w/o profile feedback into function
with feedback and propagated from that).
Never used by probablities. */
- profile_guessed = 3,
+ profile_guessed = 4,
/* Profile was determined by autofdo. */
- profile_afdo = 4,
+ profile_afdo = 5,
/* Profile was originally based on feedback but it was adjusted
by code duplicating optimization. It may not precisely reflect the
particular code path. */
- profile_adjusted = 5,
+ profile_adjusted = 6,
/* Profile was read from profile feedback or determined by accurate static
method. */
profile_precise = 7
@@ -505,6 +505,8 @@ public:
/* Return false if profile_probability is bogus. */
bool verify () const
{
+ gcc_checking_assert (profile_guessed_local <= m_quality
+ && m_quality <= profile_precise);
if (m_val == uninitialized_probability)
return m_quality == profile_guessed;
else if (m_quality < profile_guessed)
@@ -784,6 +786,8 @@ public:
/* Return false if profile_count is bogus. */
bool verify () const
{
+ gcc_checking_assert (profile_guessed_local <= m_quality
+ && m_quality <= profile_precise);
return m_val != uninitialized_count || m_quality == profile_guessed_local;
}