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.

Reply via email to