------- Comment #7 from jakub at gcc dot gnu dot org  2008-11-28 12:56 -------
One bug is IMHO in compute_call_stmt_bb_frequency, what it does doesn't make
any sense, as the condition in ?: is never true.
I guess
--- cgraphbuild.c.jj42008-10-23 13:21:39.000000000 +0200
+++ cgraphbuild.c2008-11-28 13:22:09.000000000 +0100
@@ -111,11 +111,12 @@ compute_call_stmt_bb_frequency (basic_bl
   int entry_freq = ENTRY_BLOCK_PTR->frequency;
   int freq;

+  if (!bb->frequency && !entry_freq)
+    return CGRAPH_FREQ_BASE;
+
   if (!entry_freq)
     entry_freq = 1;
-
-  freq = (!bb->frequency && !entry_freq ? CGRAPH_FREQ_BASE
-      : bb->frequency * CGRAPH_FREQ_BASE / entry_freq);
+  freq = bb->frequency * CGRAPH_FREQ_BASE / entry_freq;
   if (freq > CGRAPH_FREQ_MAX)
     freq = CGRAPH_FREQ_MAX;


was intended (as when entry_freq is 0, we don't know how many times more often
or less often bb is executed if it's frequency is 0).  Anyway, this doesn't
solve this, apparently I was wrong with all frequencies being 0.  entry block
has frequency 9, but the loop has frequency 0, which is definitely wrong.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38074

Reply via email to