https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68763
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu.org --- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Regarding the verify_unstripped_args ICE, what I see is that the ICE is while some parts of strip_typedefs check if recursion has changed anything and only build new trees if it changed, other parts rely on various other mechanisms. Say for POINTER_TYPE we use build_pointer_type and hope (the caching should hopefully ensure that it is fine) that we get the same pointer as we called it with if nothing changed, but say for METHOD_TYPE which is the problem here even if nothing really changed we still construct full new argument list etc. and then call build_method_type_directly (or build_function_type for FUNCTION_TYPE) and hope we get the same method type back. I'd say that is rather costly, depends on how often nothing really needs to be stripped, if that is often the case, we'd better just check first if anything changed and only in that case build the list. On the testcase for some reason build_method_type_directly returns a different type though.