https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93166
--- Comment #3 from fxue at gcc dot gnu.org --- (In reply to Martin Jambor from comment #2) > I have analyzed this ICE and came to the conclusion that the assert is > wrong for polymorphic context lattices - e.g. in the reported case we > always pass the same class to first parameter, which in the recursive > call then serves as a basis to ancestor JF for the second parameter. > > When propagating polymorphic contexts within SCCs we allow creating > new values because for any sane input their number will be limited by > class hierarchy (and potential insane input limited by > param_ipa_cp_value_list_size). I think that is OK too. > > So we can either simply remove the assert or make it active only for > tree lattices. At the moment I'd prefer the former, but Feng, if this > assert proved valuable in development the recursive function > versioning patch, I'll be happy to keep it. What do you think? Sorry for late response due to trip. I'll check it.