http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45172
--- Comment #7 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-15 13:59:50 UTC --- Index: gcc/cfghooks.c =================================================================== --- gcc/cfghooks.c (revision 166751) +++ gcc/cfghooks.c (working copy) @@ -156,9 +156,21 @@ verify_flow_info (void) { if (last_visited [e->dest->index] == bb) { - error ("verify_flow_info: Duplicate edge %i->%i", - e->src->index, e->dest->index); - err = 1; + edge e2; + edge_iterator ei2; + /* Check if we really have an edge with the same EH status. */ + FOR_EACH_EDGE (e2, ei2, bb->succs) + { + if (e2 == e) + break; + if (e2->dest == e->dest + && (e2->flags & EDGE_EH) == (e->flags & EDGE_EH)) + { + error ("verify_flow_info: Duplicate edge %i->%i", + e->src->index, e->dest->index); + err = 1; + } + } } if (e->probability < 0 || e->probability > REG_BR_PROB_BASE) { but it's probably not the brightest idea as several places in GCC search edges by just matching src and dest.