http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60255
--- Comment #3 from janus at gcc dot gnu.org --- Consider the following simple test case: implicit none call sub1("test") call sub2() contains subroutine sub1(dcl) ! accepted character(len=*), target :: dcl class(*), pointer :: ucp ucp => dcl select type (ucp) type is (character(len=*)) print *,"char" type is (real) print *,"real" class default print *,"something else" end select end subroutine subroutine sub2 ! rejected character(len=:), allocatable, target :: dcl class(*), pointer :: ucp dcl = "ttt" ucp => dcl select type (ucp) type is (character(len=*)) print *,"char" type is (real) print *,"real" class default print *,"something else" end select end subroutine end While 'sub1' is currently accepted (with unpatched trunk) and shows the right runtime behavior, 'sub2' is rejected with the error of comment 0. With the patch in comment 2, both cases are accepted and show the right runtime behavior. The only potential problem I can see is that the '_size' component of the vtab is zero and does not reflect its actual size.