This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/33737] [4.3 Regression] verify_flow_info failed: Wrong probability of edge 94->1 -6651



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]