[Bug ipa/60600] [4.9 Regression] ICE in ipa_get_indirect_edge_target_1

jamborm at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 21 15:16:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60600

Martin Jambor <jamborm at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jamborm at gcc dot gnu.org

--- Comment #4 from Martin Jambor <jamborm at gcc dot gnu.org> ---
This is what I'm about to bootstrap and test and then try with Mozilla
Firefox.

It might be worthwhile to report the error in the library from which
the testcase is derived.  You can even try and build and test the
library with this patch but with BUILT_IN_UNREACHABLE replaced with
BUILT_IN_ABORT to track the issue.

--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -1639,11 +1639,18 @@ ipa_get_indirect_edge_target_1 (struct cgraph_edge *ie,
        return NULL_TREE;
       target = gimple_get_virt_method_for_binfo (token, binfo);
     }
-#ifdef ENABLE_CHECKING
-  if (target)
-    gcc_assert (possible_polymorphic_call_target_p
-                (ie, cgraph_get_node (target)));
-#endif
+
+  if (target && !possible_polymorphic_call_target_p (ie,
+                                                    cgraph_get_node (target)))
+    {
+      if (dump_file)
+       fprintf (dump_file,
+                "Type inconsident devirtualization: %s/%i->%s\n",
+                ie->caller->name (), ie->caller->order,
+                IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (target)));
+      target = builtin_decl_implicit (BUILT_IN_UNREACHABLE);
+      cgraph_get_create_node (target);
+    }

   return target;
 }



More information about the Gcc-bugs mailing list