https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93166

--- Comment #2 from Martin Jambor <jamborm at gcc dot gnu.org> ---
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?

Reply via email to