https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71880
--- Comment #5 from Harald Anlauf <anlauf at gmx dot de> --- Maybe the dump-tree gives a hint. Looking at the example program t character(:), dimension(:), allocatable, target :: c character(:), dimension(:), pointer :: p allocate(c(10),source='X') p=>c write(*,*) size(c),len(c) !,' c=<',c(1),'>' write(*,*) size(p),len(p) !,' p=<',p(1),'>' end program t I find: t () { integer(kind=4) .c; struct array1_unknown c; integer(kind=4) .p; struct array1_unknown p; [...] .c = 1; [...] but .p seems to never get set. (.c, .p are the quantities that are printed as the len(c),len(p)).