Hi,
this patch makes maybe_hot_frequency_p to use multiplication instead of 
division.
This eliminates roundoff errors that are quite serious in this case: 
HOT_BB_FREQUENCY_FRACTION is 1000 while frequencies are scaled from 0...10000.
If there is loop in function then most likely no BB is considered cold. 
Hopefully
I will get rid of those fixed point arithmetic issues, but lets first fix the
bugs.

Bootstrapped/regtested x86_64-linux, will commit it shortly.

Honza

        * predict.c (maybe_hot_frequency_p): Avoid division.
Index: predict.c
===================================================================
--- predict.c   (revision 236850)
+++ predict.c   (working copy)
@@ -115,8 +115,8 @@ maybe_hot_frequency_p (struct function *
     return false;
   if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0)
     return false;
-  if (freq < (ENTRY_BLOCK_PTR_FOR_FN (fun)->frequency
-             / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)))
+  if (freq * PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)
+      < ENTRY_BLOCK_PTR_FOR_FN (fun)->frequency)
     return false;
   return true;
 }

Reply via email to