http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58555
--- Comment #15 from David Binderman <dcb314 at hotmail dot com> --- (In reply to David Binderman from comment #14) > (In reply to Jan Hubicka from comment #13) > > I see, we should just short citcuit case when caller_freq > > is 0. I will test patch. > > Any news with the patch ? I looked into this some more and there are four places in the same function where it is assumed that for X / Y, that Y is always != 0. Belt'n'braces programming suggests it might be a wise idea to sanity check all four places. I am current using this diff. Index: src/trunk/gcc/ipa-inline.c =================================================================== --- src/trunk/gcc/ipa-inline.c (revision 206420) +++ src/trunk/gcc/ipa-inline.c (working copy) @@ -703,6 +703,7 @@ for (i = 1; i < depth; i++) max_prob = max_prob * max_prob / CGRAPH_FREQ_BASE; if (max_count + && outer_node->count != 0 && (edge->count * CGRAPH_FREQ_BASE / outer_node->count >= max_prob)) { @@ -710,6 +711,7 @@ want_inline = false; } if (!max_count + && caller_freq != 0 && (edge->frequency * CGRAPH_FREQ_BASE / caller_freq >= max_prob)) { @@ -736,6 +738,7 @@ else { if (max_count + && outer_node->count != 0 && (edge->count * 100 / outer_node->count <= PARAM_VALUE (PARAM_MIN_INLINE_RECURSIVE_PROBABILITY))) { @@ -743,6 +746,7 @@ want_inline = false; } else if (!max_count + && caller_freq != 0 && (edge->frequency * 100 / caller_freq <= PARAM_VALUE (PARAM_MIN_INLINE_RECURSIVE_PROBABILITY))) {