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

ebotcazou at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Nov 6 15:14:00 GMT 2007

------- Comment #10 from ebotcazou at gcc dot gnu dot org  2007-11-06 15:14 -------
Things start to go awry much earlier though, at the end of the first VRP pass
when jumps are threaded.  More specifically in update_bb_profile_for_threading

  if (prob > taken_edge->probability)
      if (dump_file)
        fprintf (dump_file, "Jump threading proved probability of edge "
                 "%i->%i too small (it is %i, should be %i).\n",
                 taken_edge->src->index, taken_edge->dest->index,
                 taken_edge->probability, prob);
      prob = taken_edge->probability;

is triggered a bunch times.  Now, that it is triggered means that the local
update of block frequency doesn't work and a global update would be needed.

So we end up with a bunch of predecessors of the EXIT block with frequency
greater than BB_FREQ_MAX / 2, which doesn't make much sense.



More information about the Gcc-bugs mailing list