diff options
author | Martin Liska <mliska@suse.cz> | 2018-01-12 09:58:58 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-01-12 08:58:58 +0000 |
commit | aae9da9bdebeb345aee79125441c16dd94ae70db (patch) | |
tree | 3a25f9e1b44e361d0c04c857053cec5e2b74c7cf | |
parent | b710b08a8c9534239f1356ed039147d23c00b253 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/profile-count.h | 16 |
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; } |