Hi,
my first fix was just partial and fixed ICE in one branch not in other.
The issue is that code does not expect cxa_pure_virtual in target list and ICEs 
handling
it as a method while checking whether it should suggest final.

Bootstrapped/regtested x86_64-linux, comitted.

        ipa/69630
        * ipa-devirt.c (possible_polymorphic_call_targets): Do not ICE
        on cxa_pure_virtual.
Index: ipa-devirt.c
===================================================================
--- ipa-devirt.c        (revision 234108)
+++ ipa-devirt.c        (working copy)
@@ -3177,11 +3177,11 @@ possible_polymorphic_call_targets (tree
 
          if (!outer_type->all_derivations_known)
            {
-             if (!speculative && final_warning_records)
+             if (!speculative && final_warning_records
+                 && TREE_CODE (TREE_TYPE (nodes[0]->decl)) == METHOD_TYPE)
                {
                  if (complete
                      && nodes.length () == 1
-                     && TREE_CODE (TREE_TYPE (nodes[0]->decl)) == METHOD_TYPE
                      && warn_suggest_final_types
                      && !outer_type->derived_types.length ())
                    {

Reply via email to