Handle correctly global0 and global counters in profile_count::to_sreal_scale
authorJan Hubicka <hubicka@ucw.cz>
Thu, 28 Nov 2019 07:31:26 +0000 (08:31 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Thu, 28 Nov 2019 07:31:26 +0000 (07:31 +0000)
commitf160cd13fb44be3f63a2f43d68befa76f797578f
treebdce7cac8176db8648be979e0c1243c12b793c09
parent34b7ae1dd5f0c01036b2a9308baf15329280733e
Handle correctly global0 and global counters in profile_count::to_sreal_scale

This patch fixes problem in profile_count::to_sreal_scale.  We our porfile
counters can be function local, global (ipa) or function local but globally 0.
The last is used to hold static estimates for functions executed 0 times in
profile.  Now only one 64bit value is stored and if we compute frequency
of global0 counter in global counter we mix them up and return non-zero value
incorrectly.

I also implemented unit test, but will commit sanity checking separately from
fixes: there are multiple bugs in this area I tracked down.

* profile-count.c (profile_count::to_sreal_scale): Handle correctly
combination of globa0 and global counters..

From-SVN: r278801
gcc/ChangeLog
gcc/profile-count.c