https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61968
Bug ID: 61968
Summary: ICE (assembly failure) due to wrongly generating a
vtable for TYPE(*) / BT_ASSUMED_TYPE
Product: gcc
Version: 4.10.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: burnus at gcc dot gnu.org
CC: jnorris at gcc dot gnu.org, pault at gcc dot gnu.org
Created attachment 33216
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33216&action=edit
Testcase (test.f90)
Passing a TYPE(*) to CLASS(*) is properly rejected by the compiler, thus, there
is no need to attempt to generate a virtual table for TYPE(*) – ignoring the
problem that TYPE(*) has no real type.
My suspicion is that this happens during resolving the generic call, triggered
by the CLASS - even though the actual class call isn't and shouldn't be done.
The generated function looks in assembly as follows - unsurprisingly, the
assembler stumbles over it:
.type __copy_TYPE(*)_0_.2366, @function
Credit for finding the issue goes to Jim.