https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64943
--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> ---
In principle, we do have a similar check in resolve.c's resolve_transfer. The
question is why it doesn't trigger.
if (ts->type == BT_CLASS)
{
/* FIXME: Test for defined input/output. */
gfc_error ("Data transfer element at %L cannot be polymorphic unless "
"it is processed by a defined input/output procedure",
&code->loc);
return;
...
if (ts->u.derived->attr.alloc_comp)
{
gfc_error ("Data transfer element at %L cannot have ALLOCATABLE "
"components unless it is processed by a defined "
"input/output procedure", &code->loc);
return;