> > 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.
Thinking of this more, we also probably want to watch for duplicated devirtualizations and distribute probabilities equally, so perhaps it is better to jus tmake it skip all calls that are already specialized from earlier. Will make patch for that. Honza > > Honza
