https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85078
--- Comment #9 from Jan Hubicka <hubicka at gcc dot gnu.org> --- The patch attached does the table cleaning that also removes "stale pointers". It is bit hard what "stale" means here. Devirtualization is speculative and works safely only if it sees whole program. We see bit more of whole program before we remove stuff that is not reachable in current TU, but practically it is not a big ifference. I tested the table rebuild patch. If you want me to implement table walking I can do it too - only problem is that odr hash is local to ipa-devirt so I will add walker function in there with a callback.