diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2019-11-28 08:31:26 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2019-11-28 07:31:26 +0000 |
commit | f160cd13fb44be3f63a2f43d68befa76f797578f (patch) | |
tree | bdce7cac8176db8648be979e0c1243c12b793c09 /gcc/loop-init.c | |
parent | 34b7ae1dd5f0c01036b2a9308baf15329280733e (diff) | |
download | gcc-f160cd13fb44be3f63a2f43d68befa76f797578f.zip gcc-f160cd13fb44be3f63a2f43d68befa76f797578f.tar.gz gcc-f160cd13fb44be3f63a2f43d68befa76f797578f.tar.bz2 |
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
Diffstat (limited to 'gcc/loop-init.c')
0 files changed, 0 insertions, 0 deletions