> Hi,
> 
> This patches fix due to duplicate speculative ID.
> 
> This happens due to autoprofile pass makes edge make_speculative.
> Then ipa-devirt does the same with the same speculative_id which
> reults in duplicate speculative_id and ICE.
> 
> during IPA pass: cp
> test.i:31:1: internal compiler error: verify_cgraph_node failed
> 0x39bfa6b internal_error(char const*, ...)
>         ../../gcc/gcc/diagnostic-global-context.cc:787
> 0x13914eb cgraph_node::verify_node()
>         ../../gcc/gcc/cgraph.cc:4454
> 0x13738ab symtab_node::verify()
>         ../../gcc/gcc/symtab.cc:1377
> 0x1373d1b symtab_node::verify_symtab_nodes()
>         ../../gcc/gcc/symtab.cc:1499
> 0x13a3653 symtab_node::checking_verify_symtab_nodes()
>         ../../gcc/gcc/cgraph.h:718
> 0x182d267 symbol_table::remove_unreachable_nodes(_IO_FILE*)
>         ../../gcc/gcc/ipa.cc:688
> 0x19f8c33 execute_todo
>         ../../gcc/gcc/passes.cc:2163
> 
> We may also have to check if the speculative edge is present
> before making speculative.
> 
> Is this OK?
OK, thanks!
With normal profile feedback we turn off ipa-devirt, since all importat
cases are handled by profile.  With current auto-profile implementation
it is not the case since it only works within single translation unit.
I will fix that, but even then it is not clear if auto-profile is good
enough to catch all the cases, so it is good to have option to run both
passes.

Honza

Reply via email to