re PR tree-optimization/48186 (ICE: SIGFPE (division by zero) in maybe_hot_frequency_...
authorMarek Polacek <polacek@redhat.com>
Thu, 4 Apr 2013 15:48:25 +0000 (15:48 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Thu, 4 Apr 2013 15:48:25 +0000 (15:48 +0000)
        PR tree-optimization/48186
        * predict.c (maybe_hot_frequency_p): Return false if
        HOT_BB_FREQUENCY_FRACTION is 0.
        (cgraph_maybe_hot_edge_p): Likewise.

        * gcc.dg/pr48186.c: New test.

From-SVN: r197487

gcc/ChangeLog
gcc/predict.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr48186.c [new file with mode: 0644]

index 970c0d9..d301109 100644 (file)
@@ -1,3 +1,10 @@
+2013-04-04  Marek Polacek  <polacek@redhat.com>
+
+       PR tree-optimization/48186
+       * predict.c (maybe_hot_frequency_p): Return false if
+       HOT_BB_FREQUENCY_FRACTION is 0.
+       (cgraph_maybe_hot_edge_p): Likewise.
+
 2013-04-04  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/56826
index 52a4bb4..1871976 100644 (file)
@@ -122,6 +122,8 @@ maybe_hot_frequency_p (struct function *fun, int freq)
   if (node->frequency == NODE_FREQUENCY_EXECUTED_ONCE
       && freq < (ENTRY_BLOCK_PTR_FOR_FUNCTION (fun)->frequency * 2 / 3))
     return false;
+  if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0)
+    return false;
   if (freq < (ENTRY_BLOCK_PTR_FOR_FUNCTION (fun)->frequency
              / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)))
     return false;
@@ -202,10 +204,13 @@ cgraph_maybe_hot_edge_p (struct cgraph_edge *edge)
   if (edge->caller->frequency == NODE_FREQUENCY_EXECUTED_ONCE
       && edge->frequency < CGRAPH_FREQ_BASE * 3 / 2)
     return false;
-  if (flag_guess_branch_prob
-      && edge->frequency <= (CGRAPH_FREQ_BASE
-                            / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)))
-    return false;
+  if (flag_guess_branch_prob)
+    {
+      if (PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION) == 0
+         || edge->frequency <= (CGRAPH_FREQ_BASE
+                                / PARAM_VALUE (HOT_BB_FREQUENCY_FRACTION)))
+        return false;
+    }
   return true;
 }
 
index a65b101..b2ca50b 100644 (file)
@@ -1,3 +1,8 @@
+2013-04-04  Marek Polacek  <polacek@redhat.com>
+
+       PR tree-optimization/48186
+       * gcc.dg/pr48186.c: New test.
+
 2013-04-04  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/56826
diff --git a/gcc/testsuite/gcc.dg/pr48186.c b/gcc/testsuite/gcc.dg/pr48186.c
new file mode 100644 (file)
index 0000000..5635f93
--- /dev/null
@@ -0,0 +1,5 @@
+/* PR tree-optimization/48186 */
+/* { dg-do compile } */
+/* { dg-options "-O --param hot-bb-frequency-fraction=0" } */
+
+void foo (void) { }