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.