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/45172] [4.6 Regression] internal compiler error: verify_flow_info failed


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.


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