This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/45172] [4.6 Regression] internal compiler error: verify_flow_info failed
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 15 Nov 2010 14:00:35 +0000
- Subject: [Bug middle-end/45172] [4.6 Regression] internal compiler error: verify_flow_info failed
- Auto-submitted: auto-generated
- References: <bug-45172-4@http.gcc.gnu.org/bugzilla/>
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.