------- Comment #5 from jakub at gcc dot gnu dot org 2007-10-29 15:55 ------- This is because integer overflow. try_crossjump_to_edge is called many times and in each case redirect_to->frequency += src1->frequency; Each src1->frequency is 0 .. BB_FREQ_MAX, but 34 * approx. (BB_FREQ_MAX / 2) is still way more than BB_FREQ_MAX and thus following s->probability = ((s->probability * redirect_to->frequency + s2->probability * src1->frequency) / (redirect_to->frequency + src1->frequency)); computation overflows. A quick hack fix would be to ensure whenever we are increasing frequency that it is never increased more than to BB_FREQ_MAX (we already do similar checks when decreasing frequency to make sure it is not negative), but is the right thing to do for crossjumping really to add frequencies together?
Cross jumping from bb 38 to bb 39; 1 common insns Cross jumping from bb 39 to bb 73; 1 common insns Cross jumping from bb 72 to bb 73; 1 common insns Cross jumping from bb 71 to bb 73; 1 common insns Cross jumping from bb 70 to bb 73; 1 common insns Cross jumping from bb 69 to bb 73; 1 common insns Cross jumping from bb 68 to bb 73; 1 common insns Cross jumping from bb 67 to bb 73; 1 common insns Cross jumping from bb 66 to bb 73; 1 common insns Cross jumping from bb 65 to bb 73; 1 common insns Cross jumping from bb 64 to bb 73; 1 common insns Cross jumping from bb 63 to bb 73; 1 common insns Cross jumping from bb 62 to bb 73; 1 common insns Cross jumping from bb 61 to bb 73; 1 common insns Cross jumping from bb 60 to bb 73; 1 common insns Cross jumping from bb 59 to bb 73; 1 common insns Cross jumping from bb 58 to bb 73; 1 common insns Cross jumping from bb 57 to bb 73; 1 common insns Cross jumping from bb 56 to bb 73; 1 common insns Cross jumping from bb 55 to bb 73; 1 common insns Cross jumping from bb 54 to bb 73; 1 common insns Cross jumping from bb 53 to bb 73; 1 common insns Cross jumping from bb 52 to bb 73; 1 common insns Cross jumping from bb 51 to bb 73; 1 common insns Cross jumping from bb 50 to bb 73; 1 common insns Cross jumping from bb 49 to bb 73; 1 common insns Cross jumping from bb 48 to bb 73; 1 common insns Cross jumping from bb 47 to bb 73; 1 common insns Cross jumping from bb 46 to bb 73; 1 common insns Cross jumping from bb 45 to bb 73; 1 common insns Cross jumping from bb 44 to bb 73; 1 common insns Cross jumping from bb 43 to bb 73; 1 common insns Cross jumping from bb 42 to bb 73; 1 common insns Cross jumping from bb 41 to bb 73; 1 common insns Cross jumping from bb 40 to bb 73; 1 common insns -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33737